Я хотел бы создать рекурсивный блок шаблонов в Mojolicious для создания сложных меню из вложенных массивов.Создание рекурсивных блоков шаблонов в Mojolicious
В идеале массив ["a", ["ba", "bb"], "c"]
приведет этот вложенный список:
<ul>
<li>a</li>
<li>
<ul>
<li>ba</li>
<li>bb</li>
</ul>
</li>
<li>c</li>
</ul>
Следующий код не работает, так как блоки анонимные подпрограмм и не может использовать ссылку на себя:
% my $block = begin
% my $menu = shift;
<ul>
% foreach my $item (@{$menu}){
% if(ref($item) eq 'ARRAY') {
<li>
%= $block->($item);
</li>
% } else {
<li><%= $item %></li>
% }
% }
</ul>
% end
%= $block->(["a", ["ba", "bb"], "c"])
@ikegami, спасибо Я обновил мой ответ –
Большое спасибо за отличное решение (ов) и отличное объяснение! – PJVolders