XTend中的递归缩进

时间:2014-11-06 10:36:50

标签: java generator xtext xtend

是否可以在xtend中控制递归调用方法的缩进?我有以下情况:

def generateField(Field field)
    '''
    field «field.name» {
        description '«field.description»'
        label '«field.label»'
        «FOR alias : field.aliases BEFORE ' aliases {\n' SEPARATOR ',' AFTER '\n}'»
            «var f = alias.value as Field»«generateField(f)»
        «ENDFOR»
    }
    '''

生成的内容如下所示:

    field name {
        description 'field Description'
        label 'fD'
        aliases {
            field nameA {
            description 'field Description'
            label 'fD'
        },
        field nameB {
                description 'field Description'
                label 'Fd'
        }}

括号的缩进和参数生成错误。我期望递归调用方法的自动缩进。

我正在使用Xtend 2.8.0

1 个答案:

答案 0 :(得分:2)

这样的事情应该为你做好准备。

def generateField(Field field) '''
    field «field.name» {
        description '«field.description»'
        label '«field.label»'
        «IF !aliases.isEmpty»
            aliases {
                «FOR a : field.aliases SEPARATOR ','»«f.generateField»«ENDFOR»
            }
        «ENDIF»
    }
'''