如何使用 Template Toolkit 打印递归数据结构?

How to print recursive data structure with Template Toolkit?

我正在尝试使用 Template Toolkit 打印递归数据结构。我如何在我的模板文件中对此进行描述?

我有一个数据结构(哈希数组),其中包含一些像这样的元素

ELEMENT
-> Description: XYXY
-> Childs: [Array of Child ELEMENTS of same type]

其中 childs 可以包含子元素数组。我现在想递归地打印所有内容,包括元素 childs 和那些 childs 等等。

我怎样才能做到这一点?

您可以使用 PROCESS 将数据传递到 BLOCK 中,您可以递归执行此操作。例如:

[%

SET element = {
    description = "A",
    children= [
        {
            description= "AA",
            children= [
                { description = "AAA" }
            ]
        },
        {
            description= "AB",
            children= [
                { 
                    description = "ABA",
                    children = [
                        { 
                            description = "ABAA"
                        }
                    ]

                },
                { description = "ABB" }
            ]
        }
    ]
};

%]


[% BLOCK show_element %]
    [% my_element.description | html %]
    [% IF my_element.children %]
        <ul>
            [% FOR child_element IN my_element.children %]
                <li>[% PROCESS show_element my_element=child_element %]</li>
            [% END %]
        </ul>
    [% END %]
[% END %]

[% PROCESS show_element my_element=element %]