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