{#- Siehe https://gitlab.gwdg.de/GAUMI-fginfo/fg-website/-/blob/better-content-renderer/docs/content.md -#}
{%- macro render_content(content, lang) -%}
{{ render_blocks(content, lang) }}
{%- endmacro -%}
{%- macro render_attr_extra(key, value, lang) %}
{%- if value != None -%}
{%- if value is mapping and value['value'] != None -%}
{%- if value['escape'] %} {{ key }}="{{ value['value']|e }}"
{%- else %} {{ key }}="{{ value['value'] }}"
{%- endif -%}
{%- elif value is string %} {{ key }}="{{ value }}"
{%- endif -%}
{%- endif -%}
{%- endmacro -%}
{%- macro render_attr(attr, lang, extra_classes = [], extra = {}, extra_style= {}) -%}
{%- set id = attr['id']|d("") -%}
{%- set classes = attr['classes']|d([]) + extra_classes -%}
{%- set attr_extra = attr['extra']|d({}) -%}
{%- set style = attr['style']|d({}) -%}
{%- if id %} id="{{ id }}"{%- endif -%}
{%- if classes|length %} class="{{ classes|join(' ') }}"{%- endif -%}
{%- for key, value in attr_extra.items() -%}
{%- if key not in extra -%}
{{ render_attr_extra(key, value, lang) }}
{%- endif -%}
{%- endfor -%}
{%- for key, value in extra.items() -%}
{{ render_attr_extra(key, value, lang) }}
{%- endfor -%}
{%- if style.items()|length or extra_style.items()|length %} style="
{%- for key, value in style.items() -%}
{{ key }}: {{ value }};
{%- endfor -%}
{%- for key, value in extra_style.items() -%}
{{ key }}: {{ value }};
{%- endfor -%}"
{%- endif -%}
{%- endmacro -%}
{%- macro render_orderedlist_type(style, delim) -%}
{#- TODO also use delim: default | period | one_parenthesis | two_parentheses -#}
{%- if style == "default" -%}1
{%- elif style == "lower_alpha" -%}a
{%- elif style == "upper_alpha" -%}A
{%- elif style == "lower_roman" -%}i
{%- elif style == "upper_roman" -%}I
{%- elif style == "example" -%}1
{%- else -%}1
{%- endif -%}
{%- endmacro -%}
{%- macro render_image(link, alt, lang, attr = None, title = None) -%}
{%- call(resolvedlink, objtype, obj) linkr.resolve(link) -%}
{%- set ns = namespace(url=resolvedlink.urlwithanchor) -%}
{%- if not resolvedlink.is_external -%}
{%- if resolvedlink.url|length -%}
{%- set ns.url = [siteurl, ns.url]|join("/") -%}
{%- endif -%}
{%- endif -%}
{%- endcall -%}
{%- endmacro -%}
{%- macro render_blocks_or_inlines(bsois, lang) -%}
{%- for boi in bsois -%}
{{ render_block_or_inline(boi, lang) }}
{%- endfor -%}
{%- endmacro -%}
{%- macro render_block_or_inline(boi, lang) -%}
{%- set eclass = boi['eclass'] -%}
{%- if eclass == "block" -%}
{{ render_block(boi,lang) }}
{%- elif eclass == "inline" -%}
{{ render_inline(boi,lang) }}
{%- else -%}
ERROR: Cannot render block or inline: '{{ boi|e }}'
{%- endif -%}
{%- endmacro -%}
{#- ############################ BLOCKS ################################### -#}
{%- macro render_blocks(blocks, lang) -%}
{%- for block in blocks -%}
{{ render_block(block,lang) }}
{%- endfor -%}
{%- endmacro -%}
{%- macro render_block(block, lang) -%}
{%- set etype = block['etype'] -%}
{%- if etype == "header" -%}
{{ render_block_header(block, lang) }}
{%- elif etype == "paragraph" -%}
{{ render_block_paragraph(block, lang) }}
{%- elif etype == "bulletlist" -%}
{{ render_block_bulletlist(block, lang) }}
{%- elif etype == "plain" -%}
{{ render_block_plain(block, lang) }}
{%- elif etype == "codeblock" -%}
{{ render_block_codeblock(block, lang) }}
{%- elif etype == "blockquote" -%}
{{ render_block_blockquote(block, lang) }}
{%- elif etype == "blockcontainer" -%}
{{ render_block_blockcontainer(block, lang) }}
{%- elif etype == "horizontalrule" -%}
{{ render_block_horizontalrule(block, lang) }}
{%- elif etype == "rawblock" -%}
{{ render_block_rawblock(block, lang) }}
{%- elif etype == "orderedlist" -%}
{{ render_block_orderedlist(block, lang) }}
{%- elif etype == "table" -%}
{{ render_block_table(block, lang) }}
{%- elif etype == "definitionlist" -%}
{{ render_block_definitionlist(block, lang) }}
{%- else -%}
ERROR: Unhandled block type: '{{ etype|e }}'
{%- endif -%}
{%- endmacro -%}
{%- macro render_block_header(block, lang) -%}
{%- set level = block['level'] -%}
{%- set attr = block['attr'] -%}
{%- set content = block['content'] -%}
{{ render_inlines(content, lang) }}
{%- endmacro -%} {%- macro render_block_bulletlist(block, lang) -%} {%- set items = block['items'] -%} {%- set count = block['count'] -%}{{ code|e }}{%- endmacro -%} {%- macro render_block_blockquote(block, lang) -%} {%- set content = block['content'] -%}
{{ render_blocks(content, lang) }}{%- endmacro -%} {%- macro render_block_blockcontainer(block, lang) -%} {%- set attr = block['attr'] -%} {%- set content = block['content'] -%}
{{ code|e }}
{%- endmacro -%}
{%- macro render_inline_quoted(inline, lang) -%}
{%- set quotetype = inline['quotetype'] -%}
{%- set content = inline['content'] -%}
{%- if quotetype == "single" -%}
{{ t[lang].quotations.single.left }}{{ render_inlines(content, lang) }}{{ t[lang].quotations.single.right }}
{%- elif quotetype == "double" -%}
{{ t[lang].quotations.double.left }}{{ render_inlines(content, lang) }}{{ t[lang].quotations.double.right }}
{%- else -%}
"{{ render_inlines(content, lang) }}"
{%- endif -%}
{%- endmacro -%}
{%- macro render_inline_footnote(inline, lang) -%}
{%- set content = inline['content'] -%}
[TODO FOOTNOTES]
{%- endmacro -%}
{%- macro render_inline_link(inline, lang) -%}
{%- set attr = inline['attr'] -%}
{%- set content = inline['content'] -%}
{%- set link = inline['link'] -%}
{%- set title = inline['title'] -%}
{{ linkr.render(link, content, lang, attr, title) }}
{%- endmacro -%}
{%- macro render_inline_image(inline, lang) -%}
{%- set attr = inline['attr'] -%}
{%- set alt = inline['alt'] -%}
{%- set link = inline['link'] -%}
{%- set title = inline['title'] -%}
{{ render_image(link, alt, lang, attr, title) }}
{%- endmacro -%}
{%- macro render_inline_math(inline, lang) -%}
{%- set mathtype = inline['mathtype'] -%}
{%- set math = inline['math'] -%}
{%- if mathtype == "inline" -%}
\({{ math|e }}\)
{%- elif mathtype == "display" -%}
\[{{ math|e }}\]
{%- else -%}