From fa8d7f0d59889308fc4e2c8c0c0286be41d62f3d Mon Sep 17 00:00:00 2001
From: Jake <j.vondoemming@stud.uni-goettingen.de>
Date: Fri, 7 Oct 2022 09:06:41 +0200
Subject: [PATCH] added page.metadata.image and ability to iterate over all
 elements inside a list of elements

---
 fgs/pandoc.py | 24 ++++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git a/fgs/pandoc.py b/fgs/pandoc.py
index 8f17e76..2139783 100644
--- a/fgs/pandoc.py
+++ b/fgs/pandoc.py
@@ -48,6 +48,7 @@ def run_pandoc(source, factories, lang, base="markdown", extensions=[], extra_ar
         if block != None:
             blocks.append(block)
 
+    elementlist = convert_elements_to_list(blocks)
 
     contentmetadata = {}
     contentmetadata["toc_list"] = []
@@ -56,10 +57,33 @@ def run_pandoc(source, factories, lang, base="markdown", extensions=[], extra_ar
     # TODO TOC
     #contentmetadata["toc"] = build_toc(n["toc_list"].copy())
 
+    # Get all images on page
+    images = []
+    for e in elementlist:
+        if e.etype == "image":
+            images.append(e)
+    contentmetadata["images"] = images
+    contentmetadata["has_image"] = (len(images) > 0)
+    if contentmetadata["has_image"]:
+        contentmetadata["image"] = images[0]
+
+
+
     #blocks = json.loads(json.dumps(blocks, cls=ElementEncoder)) # Reduce to 'simple' dict, which can be converted to JSON in Jinja2.
 
     return (blocks, contentmetadata)
 
+
+def convert_elements_to_list(elements):
+    res = []
+    for element in elements:
+        res.append(element)
+        res += convert_elements_to_list(element.children)
+    return res
+
+
+
+
 def parse_from_register(factories, lang, reg: dict, h: dict, custom_syntax_handler):
     t = h['t'] # pandoc type
     if t not in reg:
-- 
GitLab