如何在生成器中使用脚本xtext名称

时间:2013-03-11 13:23:20

标签: xtext xtend

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

override void doGenerate(...

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

3 个答案:

答案 0 :(得分: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...

无论适合您的使用情况!

答案 1 :(得分:0)

资源有一个属性URI,用于封装文件名。您可能希望访问它的#lastSegment以计算Java文件的名称。

答案 2 :(得分:0)

以下是一个例子:

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

包将在src文件夹中,并且将是'com.stackoverflow.magic' 只有在将文件导入项目后,才会将其视为包。