2014-11-06 41 views
0

是否可以控制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

回答

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» 
    } 
''' 
+0

非常感謝!有效。唯一的是,SEPARATOR部分不需要換行符。 – aphex 2014-11-06 13:02:36

+1

我修復了代碼片段並從分隔符中刪除了換行符 – 2014-11-07 08:47:44