59 lines
1.7 KiB
Django/Jinja
59 lines
1.7 KiB
Django/Jinja
{%- macro yaml2inline_toml(item, depth) -%}
|
|
{%- if item is string or item is number -%}
|
|
{#- First, process all primitive types. -#}
|
|
{{ item | to_json }}
|
|
{%- elif item is mapping -%}
|
|
{#- Second, process all mappings. -#}
|
|
{#- Note that inline mappings must not contain newlines (except inside contained lists). -#}
|
|
{{ "{" }}
|
|
{%- for key, value in item.items() | sort -%}
|
|
{{ " "
|
|
+ (key | to_json)
|
|
+ " = "
|
|
+ yaml2inline_toml(value, depth)
|
|
}}
|
|
{%- if not loop.last -%}{{ "," }}{%- endif -%}
|
|
{%- endfor -%}
|
|
{{ " }" }}
|
|
{%- else -%}
|
|
{#- Third, process all lists. -#}
|
|
{%- if item | length == 0 -%}{{ "[]" }}{%- else -%}
|
|
{{ "[" }}
|
|
{%- for entry in item -%}
|
|
{{ "\n"
|
|
+ (" " * (depth + 1))
|
|
+ yaml2inline_toml(entry, depth + 1)
|
|
}}
|
|
{%- if not loop.last -%}{{ "," }}{%- endif -%}
|
|
{%- endfor -%}
|
|
{{ "\n" + (" " * depth) + "]" }}
|
|
{%- endif -%}
|
|
{%- endif -%}
|
|
{%- endmacro -%}
|
|
|
|
{%- macro yaml2toml(item, super_keys=[]) -%}
|
|
{%- for key, value in item.items() | sort -%}
|
|
{%- if value is not mapping -%}
|
|
{#- First, process all non-mappings. -#}
|
|
{{ (" " * (super_keys | length))
|
|
+ (key | to_json)
|
|
+ " = "
|
|
+ (yaml2inline_toml(value, super_keys | length))
|
|
+ "\n"
|
|
}}
|
|
{%- endif -%}
|
|
{%- endfor -%}
|
|
{%- for key, value in item.items() | sort -%}
|
|
{%- if value is mapping -%}
|
|
{#- Second, process all mappings. -#}
|
|
{{ "\n"
|
|
+ (" " * (super_keys | length))
|
|
+ "["
|
|
+ ((super_keys+[key]) | map('to_json') | join("."))
|
|
+ "]\n"
|
|
+ yaml2toml(value, super_keys+[key])
|
|
}}
|
|
{%- endif -%}
|
|
{%- endfor -%}
|
|
{%- endmacro -%}
|