]> git.ipfire.org Git - thirdparty/jinja.git/commitdiff
Properly support recursive in for loops
authorKevin <kevin@kevin-brown.com>
Sun, 10 May 2020 16:16:16 +0000 (12:16 -0400)
committerKevin <kevin@kevin-brown.com>
Sun, 10 May 2020 16:16:16 +0000 (12:16 -0400)
This adds an example to the test file that is being used to verify
that the generated ASTs are comparable.

new_parser.py
test_template.jinja

index 29e38885a4acf036540fe5061c6e57537f595bb8..e491d0f6061deff0e25b7f3e31fa398885d1761d 100644 (file)
@@ -61,6 +61,9 @@ def parse_block_for(ast):
     target = parse_variable(block_parameters[0]['value'], variable_context='store')\r
     iter = parse_variable(block_parameters[2]['value'])\r
 \r
+    if len(block_parameters) > 3:\r
+        recursive = block_parameters[-1]['value']['variable'] == 'recursive'\r
+\r
     return nodes.For(\r
         target, iter, body, else_, test, recursive,\r
         lineno=lineno_from_parseinfo(ast['parseinfo'])\r
index b67be129f1b0a6c6a638355d65fca1155e9c3257..7a4f85aa1b933a5740aa1aa4adc4cc20a6b76149 100644 (file)
@@ -43,4 +43,12 @@ across lines #}
 {% set reply | wordwrap %}\r
     You wrote:\r
     {{ message }}\r
-{% endset %}
\ No newline at end of file
+{% endset %}\r
+<ul class="sitemap">\r
+{%- for item in sitemap recursive %}\r
+    <li><a href="{{ item.href|e }}">{{ item.title }}</a>\r
+    {%- if item.children -%}\r
+        <ul class="submenu">{{ loop(item.children) }}</ul>\r
+    {%- endif %}</li>\r
+{%- endfor %}\r
+</ul>
\ No newline at end of file