Xtend/Xpand найти и заменить (правило)
Можно ли установить правило, которое позволит методу Xpand выводить указанную строку текста в зависимости от ввода. Например:
«FOR a:e.attributes»
Type = «a.eClass.name»
Value = «a.name.toFirstUpper»
«ENDFOR»
Приведенный выше код может выводить:
Type = StringAttribute
Value = String1
Type = IntegerAttribute
Value = 123
Как бы я сделал этот вывод:
Type = String
Value = String1
Type = int
Value = 123
Я знаю, что это можно сделать с помощью операторов if, но я бы хотел, чтобы это было более или менее автоматически. Было бы бесполезно указывать такие правила каждый раз, когда мне нужно вывести эти данные в одном файле. Может ли кто-нибудь показать мне, какой код я мог бы использовать для достижения этой цели? Спасибо.
1 ответ
Решение
Я предлагаю вам создать многоразового помощника Xtend
toSimpleName(String inp):
switch (inp) {
case "StringAttribute" : "String"
case "IntegerAttribute" : "int"
// ...more cases here...
default : inp
}
;
а затем вызовите его из шаблона Xpand следующим образом:
«FOR a:e.attributes»
Type = «a.eClass.name.toSimpleName()»
Value = «a.name.toFirstUpper»
«ENDFOR»