================== For Basic ================== --- (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier))))) (template (content) (template_variable (filtered_value (value (variable_attribute (identifier))))) (content))) (endfor_block)) (content)) ================== For With Multiple Variables ==================
{% for key, value in items %}
{{ key }}
{% endfor %}
--- (template (content) (for_group (for_clause (for_block variable: (identifier) variable: (identifier) (filtered_value (value (variable_attribute (identifier))))) (template (content) (template_variable (filtered_value (value (variable_attribute (identifier))))) (content))) (endfor_block)) (content)) ================== For With Empty ================== --- (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier))))) (template (content) (template_variable (filtered_value (value (variable_attribute (identifier))))) (content))) (empty_clause (empty_block) (template (content))) (endfor_block)) (content)) ================== For With A Tag In Its Body ================== {% for x in y %} {% if a %}b{% endif %} {% endfor %} --- (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier))))) (template (content) (if_group (if_clause (if_block (predicate (filtered_value (value (variable_attribute (identifier)))))) (template (content))) (endif_block)) (content))) (endfor_block)) (content)) ================== For With A Nested For ================== {% for x in y %} {% for z in x %}a{% endfor %} {% endfor %} --- (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier))))) (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier))))) (template (content))) (endfor_block)) (content))) (endfor_block)) (content)) ================== For With Tags In Both Branches ================== {% for x in y %} {% if a %}b{% endif %} {% empty %} {% with c=1 %}d{% endwith %} {% endfor %} --- (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier))))) (template (content) (if_group (if_clause (if_block (predicate (filtered_value (value (variable_attribute (identifier)))))) (template (content))) (endif_block)) (content))) (empty_clause (empty_block) (template (content) (with_group (with_clause (with_block variable: (identifier) (filtered_value (value (literal (number))))) (template (content))) (endwith_block)) (content))) (endfor_block)) (content)) ================== For With A Named Block In Its Body ================== {% for x in y %} {% block b %}c{% endblock b %} {% endfor %} --- (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier))))) (template (content) (block_group (block_clause (block_block name: (push_block)) (template (content))) (endblock_block (pop_block))) (content))) (endfor_block)) (content)) ================== For Nested In A Tag ================== {% if a %} {% for x in y %}{% if b %}c{% endif %}{% endfor %} {% endif %} --- (template (content) (if_group (if_clause (if_block (predicate (filtered_value (value (variable_attribute (identifier)))))) (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier))))) (template (if_group (if_clause (if_block (predicate (filtered_value (value (variable_attribute (identifier)))))) (template (content))) (endif_block)))) (endfor_block)) (content))) (endif_block)) (content)) ================== For With An Empty Body ================== {% for x in y %}{% endfor %} --- (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier)))))) (endfor_block)) (content)) ================== For Reversed ================== {% for x in y reversed %} a {% endfor %} --- (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier))))) (template (content))) (endfor_block)) (content)) ================== For With Multiple Variables Reversed ================== {% for k,v in y reversed %} a {% endfor %} --- (template (content) (for_group (for_clause (for_block variable: (identifier) variable: (identifier) (filtered_value (value (variable_attribute (identifier))))) (template (content))) (endfor_block)) (content)) ================== For With A Filtered Sequence Reversed ================== {% for x in y|slice:":2" reversed %} a {% endfor %} --- (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier))) (filter_expression (filter argument: (value (literal (string))))))) (template (content))) (endfor_block)) (content)) ================== For Reversed With Empty ================== {% for x in y reversed %} a {% empty %} b {% endfor %} --- (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier))))) (template (content))) (empty_clause (empty_block) (template (content))) (endfor_block)) (content)) ================== For Reversed With A Tag In Its Body ================== {% for x in y reversed %} {% if a %}b{% endif %} {% endfor %} --- (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier))))) (template (content) (if_group (if_clause (if_block (predicate (filtered_value (value (variable_attribute (identifier)))))) (template (content))) (endif_block)) (content))) (endfor_block)) (content)) ================== For With Reversed Twice :error ================== {% for x in y reversed reversed %}a{% endfor %} --- ================== For With Reversed Before In :error ================== {% for x reversed in y %}a{% endfor %} --- ================== For Over A Variable Named Reversed ================== {% for x in reversed reversed %}a{% endfor %} --- (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier))))) (template (content))) (endfor_block)) (content)) ================== For Over An Attribute Of A Variable Named Reversed ================== {% for x in reversed.items %}a{% endfor %} --- (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier) (attribute))))) (template (content))) (endfor_block)) (content)) ================== For Over A Filtered Variable Named Reversed ================== {% for x in reversed|last %}a{% endfor %} --- (template (content) (for_group (for_clause (for_block variable: (identifier) (filtered_value (value (variable_attribute (identifier))) (filter_expression (filter)))) (template (content))) (endfor_block)) (content)) ================== For With Reversed As Its Whole Sequence :error ================== {% for x in reversed %}a{% endfor %} --- ================== For With Reversed Three Times :error ================== {% for x in reversed reversed reversed %}a{% endfor %} ---