StringTemplate4 :: вызов шаблона внутри вызова шаблона

Я пытаюсь вызвать шаблон, передавая в качестве параметра результат вызова другого шаблона, но не могу заставить его работать. Вот узкий пример:

Следующая группа шаблонов в файле:

echo(foo) ::="<foo>"
boo() ::= << <echo("zoo")> >>

При вызове со следующим кодом Java:

STGroup stg = new STGroupFile("thefile.stg");
ST boo = stg.getInstanceOf("boo");
System.out.println(boo.render());

производит zoo как и ожидалось.

Однако, когда я пытаюсь заменить литерал zoo” шаблоном, возвращающим то же самое, ST жалуется во время синтаксического анализа:

не работает:

echo(foo) ::="<foo>"
zoo() ::= "zoo"
boo() ::= << <echo( <zoo()>  )> >>

person Marcus Junius Brutus    schedule 15.03.2013    source источник


Ответы (1)


вместо:

boo() ::= << <echo( <zoo()> )> >>

использовать:

boo() ::= << <echo(zoo())> >>

Похоже, что ‹ > нужно использовать только один раз, когда вызывается внешний шаблон.

person Marcus Junius Brutus    schedule 20.03.2013