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

时间:2016-02-26 15:52:33

标签: perl template-toolkit

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

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

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

子项可以包含子元素数组。我现在想要递归地打印所有内容,包括子元素和子元素等等。

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:5)

您可以使用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 %]