вы обычно не генерируете на основе того, что находится в редакторе, а скорее на основе того, что находится в AST. вы также обычно используете функцию богатой строки из Xtend, если вы пишете генератор в Xtend. это может очень просто выглядеть как
class MyDslGenerator extends AbstractGenerator {
override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) {
fsa.generateFile("test.txt", '''
«FOR model : resource.allContents.filter(Model).toIterable»
«FOR userStory : model.usestory»
userstory
- title: «userStory.title.titlen» «userStory.title.titlev.value»
- role: «userStory.role»
- target: «userStory.target.targetn» «userStory.target.targetv.value»
- use: «userStory.use.usen» «userStory.use.usev.value»
«ENDFOR»
«ENDFOR»
''')
}
}
, конечно, вы также можете получить доступ к тексту через nodemodel. это будет выглядеть примерно так:
class MyDslGenerator extends AbstractGenerator {
override void doGenerate(Resource resource, IFileSystemAccess2 fsa, IGeneratorContext context) {
fsa.generateFile("test.txt", '''
«FOR model : resource.allContents.filter(Model).toIterable»
«FOR userStory : model.usestory»
«NodeModelUtils.findActualNodeFor(userStory)»
«ENDFOR»
«ENDFOR»
''')
}
}