2014-11-06 2 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

+1

Я исправил фрагмент кода и удалил новую строку из разделителя –