StringTemplate: вложенный итератор - PullRequest
0 голосов
/ 05 ноября 2018

Я использую Java вместе с библиотекой StringTemplate для создания файла конфигурации. Файл конфигурации представляет системную архитектуру, в которой каждый имеет набор компонентов, причем каждый компонент может иметь набор портов, в результате чего они могут быть входными или выходными портами. Это на самом деле немного сложнее (порты могут быть в очереди и выборке), но давайте абстрагироваться от этого. Допустим, у меня есть три шаблона:

1) config.st:

<configuration>
<component_list>
$components:component(); separator="\n"$
</component_list>
</configuration>

2) component.st

<component name="it.name">
<ports>
$ports:port_list(); separator"\n"$
</ports>

3) port.st

<port name="it.name" direction="it.direction"/>

Так что мой код Java выглядит примерно так:

StringTemplate configST = templates.getInstanceOf("config");
configST.setAttribute("components", sys_architecture.getComponents())
String config_out = configST.toString();
System.out.println(config_out);

Таким образом, этот код будет перебирать все компоненты внутри архитектуры системы. Все идет нормально. Но теперь я хотел бы перебрать каждый компонент по всем портам. Это возможно как-то?

...