From 677f85e1259d7c55a502d1de5dce4a85e0e64f29 Mon Sep 17 00:00:00 2001
From: Jake <j.vondoemming@stud.uni-goettingen.de>
Date: Sun, 2 Oct 2022 22:46:19 +0200
Subject: [PATCH] added meta to blocks

---
 theme/templates/macros/content_renderer.html | 90 ++++++++------------
 1 file changed, 37 insertions(+), 53 deletions(-)

diff --git a/theme/templates/macros/content_renderer.html b/theme/templates/macros/content_renderer.html
index 286921a..4064074 100644
--- a/theme/templates/macros/content_renderer.html
+++ b/theme/templates/macros/content_renderer.html
@@ -2,7 +2,8 @@
 {#- 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) }}
+	{%- set meta = namespace() -%}
+	{{ render_blocks(content, lang, meta) }}
 {%- endmacro -%}
 
 {%- macro render_link(link, content, lang, attr = None, title = None) -%}
@@ -14,7 +15,7 @@
 				{{ common.softbreak_span(obj.title) }}
 			{%- endif -%}
 		{%- else -%}
-			{{ render_blocks_or_inlines(content, lang) }}
+			{{ render_inlines(content, lang) }}
 		{%- endif -%}
 	{%- endcall -%}
 {%- endmacro -%}
@@ -56,63 +57,46 @@
 	{%- 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 -%}
-		<br><strong>ERROR: Cannot render block or inline: '{{ boi|e }}'</strong><br>
-	{%- endif -%}
-{%- endmacro -%}
-
 {#- ############################ BLOCKS ################################### -#}
 
-{%- macro render_blocks(blocks, lang) -%}
+{%- macro render_blocks(blocks, lang, meta) -%}
 	{%- for block in blocks -%}
-		{{ render_block(block,lang) }}
+		{{ render_block(block, lang, meta) }}
 	{%- endfor -%}
 {%- endmacro -%}
 
-{%- macro render_block(block, lang) -%}
+{%- macro render_block(block, lang, meta) -%}
 	{%- set etype = block['etype'] -%}
 	{%- if etype == "header" -%}
-		{{ render_block_header(block, lang) }}
+		{{ render_block_header(block, lang, meta) }}
 	{%- elif etype == "paragraph" -%}
-		{{ render_block_paragraph(block, lang) }}
+		{{ render_block_paragraph(block, lang, meta) }}
 	{%- elif etype == "bulletlist" -%}
-		{{ render_block_bulletlist(block, lang) }}
+		{{ render_block_bulletlist(block, lang, meta) }}
 	{%- elif etype == "plain" -%}
-		{{ render_block_plain(block, lang) }}
+		{{ render_block_plain(block, lang, meta) }}
 	{%- elif etype == "codeblock" -%}
-		{{ render_block_codeblock(block, lang) }}
+		{{ render_block_codeblock(block, lang, meta) }}
 	{%- elif etype == "blockquote" -%}
-		{{ render_block_blockquote(block, lang) }}
+		{{ render_block_blockquote(block, lang, meta) }}
 	{%- elif etype == "blockcontainer" -%}
-		{{ render_block_blockcontainer(block, lang) }}
+		{{ render_block_blockcontainer(block, lang, meta) }}
 	{%- elif etype == "horizontalrule" -%}
-		{{ render_block_horizontalrule(block, lang) }}
+		{{ render_block_horizontalrule(block, lang, meta) }}
 	{%- elif etype == "rawblock" -%}
-		{{ render_block_rawblock(block, lang) }}
+		{{ render_block_rawblock(block, lang, meta) }}
 	{%- elif etype == "orderedlist" -%}
-		{{ render_block_orderedlist(block, lang) }}
+		{{ render_block_orderedlist(block, lang, meta) }}
 	{%- elif etype == "table" -%}
-		{{ render_block_table(block, lang) }}
+		{{ render_block_table(block, lang, meta) }}
 	{%- elif etype == "definitionlist" -%}
-		{{ render_block_definitionlist(block, lang) }}
+		{{ render_block_definitionlist(block, lang, meta) }}
 	{%- else -%}
 		<br><strong>ERROR: Unhandled block type: '{{ etype|e }}'</strong><br>
 	{%- endif -%}
 {%- endmacro -%}
 
-{%- macro render_block_header(block, lang) -%}
+{%- macro render_block_header(block, lang, meta) -%}
 	{%- set level = block['level'] -%}
 	{%- set attr = block['attr'] -%}
 	{%- set content = block['content'] -%}
@@ -120,53 +104,53 @@
 	{{ render_header(content, level, attr, lang) }}
 {%- endmacro -%}
 
-{%- macro render_block_paragraph(block, lang) -%}
+{%- macro render_block_paragraph(block, lang, meta) -%}
 	{%- set content = block['content'] -%}
 	<p>{{ render_inlines(content, lang) }}</p>
 {%- endmacro -%}
 
-{%- macro render_block_bulletlist(block, lang) -%}
+{%- macro render_block_bulletlist(block, lang, meta) -%}
 	{%- set items = block['items'] -%}
 	{%- set count = block['count'] -%}
 	<ul>
 		{%- for item in items -%}
-			<li>{{ render_blocks(item, lang) }}</li>
+			<li>{{ render_blocks(item, lang, meta) }}</li>
 		{%- endfor -%}
 	</ul>
 {%- endmacro -%}
 
-{%- macro render_block_plain(block, lang) -%}
+{%- macro render_block_plain(block, lang, meta) -%}
 	{%- set content = block['content'] -%}
 	{{ render_inlines(content, lang) }}
 {%- endmacro -%}
 
-{%- macro render_block_codeblock(block, lang) -%}
+{%- macro render_block_codeblock(block, lang, meta) -%}
 	{%- set attr = block['attr'] -%}
 	{%- set code = block['code'] -%}
 	{%- set code_lines = block['code_lines'] -%}
 	<pre {{ common.render_attr(attr, lang, extra_classes=["codeblock"]) }}>{{ code|e }}</pre>
 {%- endmacro -%}
 
-{%- macro render_block_blockquote(block, lang) -%}
+{%- macro render_block_blockquote(block, lang, meta) -%}
 	{%- set content = block['content'] -%}
 	<blockquote>
-		{{ render_blocks(content, lang) }}
+		{{ render_blocks(content, lang, meta) }}
 	</blockquote>
 {%- endmacro -%}
 
-{%- macro render_block_blockcontainer(block, lang) -%}
+{%- macro render_block_blockcontainer(block, lang, meta) -%}
 	{%- set attr = block['attr'] -%}
 	{%- set content = block['content'] -%}
 	<div {{ common.render_attr(attr, lang) }}>
-		{{ render_blocks(content, lang) }}
+		{{ render_blocks(content, lang, meta) }}
 	</div>
 {%- endmacro -%}
 
-{%- macro render_block_horizontalrule(block, lang) -%}
+{%- macro render_block_horizontalrule(block, lang, meta) -%}
 	<hr>
 {%- endmacro -%}
 
-{%- macro render_block_rawblock(block, lang) -%}
+{%- macro render_block_rawblock(block, lang, meta) -%}
 	{%- set format = block['format'] -%}
 	{%- set raw = block['raw'] -%}
 	{%- if format == "html" -%}
@@ -203,7 +187,7 @@
 	{%- endif -%}
 
 	<{% if is_header %}th{% else %}td{% endif %} {{ common.render_attr(attr, lang, extra_classes=ns.classes, extra={"rowspan": row_span, "colspan": column_span}, extra_style=ns.extra_style) }}>
-		{{ render_blocks(content, lang) }}
+		{{ render_blocks(content, lang, meta) }}
 	</{% if is_header %}th{% else %}td{% endif %}>
 {%- endmacro -%}
 
@@ -227,7 +211,7 @@
 	</tr>
 {%- endmacro -%}
 
-{%- macro render_block_table(block, lang) -%}
+{%- macro render_block_table(block, lang, meta) -%}
 	{#- https://developer.mozilla.org/en-US/docs/Web/HTML/Element/table -#}
 	{%- set attr = block['attr'] -%}
 	{%- set caption = block['caption'] -%}
@@ -238,7 +222,7 @@
 
 	<table>
 		{%- if caption|length -%}
-			<caption>{{ render_blocks(caption, lang) }}</caption>
+			<caption>{{ render_blocks(caption, lang, meta) }}</caption>
 		{%- endif -%}
 
 		{#- TODO: Maybe add colgroup? -#}
@@ -267,7 +251,7 @@
 	</table>
 {%- endmacro -%}
 
-{%- macro render_block_orderedlist(block, lang) -%}
+{%- macro render_block_orderedlist(block, lang, meta) -%}
 	{%- set items = block['items'] -%}
 	{%- set count = block['count'] -%}
 	{%- set start = block['start'] -%}
@@ -276,12 +260,12 @@
 	{#- ol start="{{ start|e }}" style="list-style-type: {{ render_orderedlist_type(style, delim) }};" -#}
 	<ol start="{{ start|e }}" type="{{ render_orderedlist_type(style, delim) }}">
 		{%- for item in items -%}
-			<li>{{ render_blocks(item, lang) }}</li>
+			<li>{{ render_blocks(item, lang, meta) }}</li>
 		{%- endfor -%}
 	</ol>
 {%- endmacro -%}
 
-{%- macro render_block_definitionlist(block, lang) -%}
+{%- macro render_block_definitionlist(block, lang, meta) -%}
 	{%- set items = block['items'] -%}
 	<dl>
 		{%- for item in items -%}
@@ -289,7 +273,7 @@
 			{%- set definitions = item['definitions'] -%}
 			<dt>{{ render_inlines(term, lang) }}</dt>
 			{%- for def in definitions -%}
-				<dd>{{ render_blocks(def, lang) }}</dd>
+				<dd>{{ render_blocks(def, lang, meta) }}</dd>
 			{%- endfor -%}
 		{%- endfor -%}
 	</dl>
-- 
GitLab