2013-03-11 69 views
2

我想在生成器中使用脚本名称来创建相应的java文件。例如,如果我的脚本文件是“WordCount.script”,我想创建一个“WordCount.java”文件。我发现以前的版本通过“resource.className”公开了这个版本,但它不适用于2.3.1。如何在生成器中使用脚本xtext名称

override void doGenerate(... 

    fsa.generateFile(magic_here + ".java", compile...) 

回答

0

该资源具有封装文件名称的属性URI。您可能需要访问它的#lastSegment来计算Java文件的名称。

0

下面是一个例子:

fsa.generateFile(
    "src"+"/"+"com"+"/"+"stackoverflow"+"/"+"magic"+"/"+ //package 
    "more_magic"+".java", //class name 
    compile...) 

包将在src文件夹,将是“com.stackoverflow.magic” 你只会看到它作为一个包,一旦你将这些文件导入一个项目。

+0

我认为这个问题是关于如何获取您认为只是不变的信息。另外:为什么任何人都想用这种方法手动连接_constant_字符串? – 2013-05-18 07:44:10

4

您可以使用ECoreUtil2访问资源的规范化URI。例如;

import static extension org.eclipse.xtext.EcoreUtil2.* 

.... 
override void doGenerate(Resource input... 

    fsa.generateFile(input.normalizedURI.lastSegment + ".java", compile...) 

或者,如果你想要一个绝对路径,你可以离开关lastSegment。您可能需要一代之前,剥离掉的文件名结尾(“.mydsl”为例),如:

fsa.generateFile(input.normalizedURI.replace(".mydsl", ".java), compile... 

任何适合你的使用情况!