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»
Другие вопросы по тегам