Есть ли краткий способ ссылки на свойство свойства в StringTemplate

Я хочу написать <prop1.subprop1:sometemplate> применить шаблон к списку в свойстве свойства. Чтобы сделать это, мне нужно сделать два уровня шаблона: я должен вызвать внешний на prop1, а затем обработать следующее свойство.

Модель данных:

class Clazz {
    String name;
    Class parent;
}

Цель:

class(c) ::= <<
   <c.parent.name> <! oops, not allowed !>
>>

Так что я в конечном итоге

<c.parent:{ p | <p.name> }>

что немного неуклюже

Тогда я дошел до этого:

class Attr {
   List<String> requiredParameters;
   Attr baseObject;
}

и я хочу сгенерировать:

def __init__(self, reqparam1, ... rewqparamN)

где первый 'reqparam' от самого глубокого пункта. Я попытался написать следующее, но ST дает мне синтаксические ошибки во втором шаблоне, где я пытаюсь рекурсивно составить список.

self_and_list(list) ::= << self<if(first(list))>, <endif><list;separator=", "> >>

recurse_req(attr) ::= "<[<attr.baseObject:recurse_req()>, <attr.requiredParameters>]>"

self_and_req_params(attribute) ::= "<self_and_list(<attribute:recurse_req()>)>"

0 ответов

Другие вопросы по тегам