У меня есть что-то вроде этого:Stringtemplate - использовать условные выражения, не добавляя новые строки для вывода, и все еще держать шаблоны разборчивыми?
properties(attributeInfo) ::= <<
private <attributeInfo:parameters()>;
>>
parameters(attributeInfo) ::= <<
<if(attributeInfo.struct||attributeInfo.array)><attributeInfo:paramComposite()><else><javaTypeNameMap.(attributeInfo.typeName)> <attributeInfo.propertyName><endif>
>>
Это производит желаемый результат:
private com.terradatum.common.db.model.terradatum.MlsAgentIdObj agentObj;
private String officeName;
private String officeAddress;
private String officeCity;
private String officeState;
private String officeZipcode;
private MlsPhoneTbl phoneTbl;
private String agentEmail;
private String agentAddress;
private String agentCity;
private String agentState;
private String agentZipcode;
Когда я изменить parameters
subtemplate на следующее:
parameters(attributeInfo) ::= <<
<if(attributeInfo.struct||attributeInfo.array)><attributeInfo:paramComposite()>
<else><javaTypeNameMap.(attributeInfo.typeName)> <attributeInfo.propertyName>
<endif>
>>
Шаблон более разборчивыми , но выход теперь включает в себя символы новой строки:
private com.terradatum.common.db.model.terradatum.MlsAgentIdObj agentObj
;
private String officeName
;
private String officeAddress
;
private String officeCity
;
private String officeState
;
private String officeZipcode
;
private MlsPhoneTbl phoneTbl
;
private String agentEmail
;
private String agentAddress
;
private String agentCity
;
private String agentState
;
private String agentZipcode
;
Я смущен этим поведением - на основе того, что я понял о том, как условно включать подтемы и поведение условных обозначений WRT для строк новой строки, две формы подтемы parameters
должны давать одинаковый вывод.
Очевидно, что мое понимание неверное, поэтому я надеюсь, что кто-то даст мне некоторое руководство.
Это было самым сложным трюком - это все еще что-то сложное, но определенно более разборчивое. – rbellamy