You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

39 lines
1.4 KiB

{%- set section_stack = [] -%}
{%- set counters = namespace(level=0,indent=0) -%}
{%- for item_name, item_value in document_dictionary.items() -%}
{%- set count_flag = True -%}
{%- set counters.level = 0 -%}
{%- for item_level, current_level in zip(item_name[1], section_stack) -%}
{%- if not item_level == current_level -%}
{%- set count_flag = False -%}
{%- elif count_flag -%}
{%- set counters.level = counters.level + 1 -%}
{%- endif -%}
{%- endfor -%}
{%- for section_name in section_stack[counters.level: ] | reverse -%}
{%- set counters.indent = counters.indent - 1 -%}
{{- ' ' * counters.indent }}</{{ section_name[0] }}>
{% if loop.last %}
{% endif -%}
{% do section_stack.pop() -%}
{%- endfor -%}
{%- for comment in item_value[:-1] -%}
{% if loop.first %}
{% endif -%}
{{ ' ' * counters.indent }}{{ comment }}
{% endfor -%}
{%- for section_name in item_name[1][counters.level: ] -%}
{{ ' ' * counters.indent }}<{{ section_name | join(' ') }}>
{% set counters.indent = counters.indent + 1 -%}
{%- do section_stack.append(section_name) -%}
{%- endfor -%}
{{ ' ' * counters.indent }}{{ item_name[2:] | join(' ') }}{% if not item_value[-1] == '' %} {{ item_value[-1] }}{% endif %}
{% endfor -%}
{%- for section_name in section_stack | reverse -%}
{%- set counters.indent = counters.indent - 1 -%}
{{ ' ' * counters.indent }}</{{ section_name[0] }}>
{%- if not loop.last %}
{% endif -%}
{%- endfor %}