From 001a8c692e26a5bea8604dff7c0e20cda8874d46 Mon Sep 17 00:00:00 2001 From: Starnakin Date: Tue, 8 Jul 2025 22:08:24 +0200 Subject: [PATCH] add: pictures menu in photo markdown --- src/bozodown/default_converters.py | 5 ----- src/photodown.py | 31 +++++++++++++++++++++++++----- 2 files changed, 26 insertions(+), 10 deletions(-) diff --git a/src/bozodown/default_converters.py b/src/bozodown/default_converters.py index f2d39ec..8c8767b 100644 --- a/src/bozodown/default_converters.py +++ b/src/bozodown/default_converters.py @@ -35,11 +35,6 @@ converters: list[str, dict[str, str]] = { "to_prefix": "", "to_suffix": "", }, - "list": { - "from_prefix": "- ", - "from_suffix": "\n", - "code": "bozodown:list", - }, "code": { "from_prefix": "```", "from_suffix": "```", diff --git a/src/photodown.py b/src/photodown.py index f2faeec..7798c06 100644 --- a/src/photodown.py +++ b/src/photodown.py @@ -15,17 +15,38 @@ class Photodown(Bozodown): self._specific_case_namespaces.update({"photohub": self._photohub_render}) image_converter = self._converters.get("image") image_converter.update({"code": "photohub:image"}) + self._converters.update({"pictures": {"from_prefix": "+++++","from_suffix": "+++++","code": "photohub:pictures",}}) self._bulk: list[Picture] = [] def add_bulk(self, bulk: list[Picture]): self._bulk = bulk.copy() + def _render_image(self, url: str) -> str: + if (url.startswith("./")): + for picture in self._bulk: + if url == "." + picture.get_large().get_url()[:-4]: + return f"""""" + return f"" + + def _render_pictures(self, config: dict[str, str | int], to_parse: str): + segments: list[str] = to_parse.split("--") + content: str = "" + for segment in segments: + content += f"
{self.render(segment)}
" + return f"
{content}
" + def _photohub_render(self, id: str, text: str) -> str: if (id == "image"): picture_url = f"{text[2:-1]}" - if (picture_url.startswith("./")): - for picture in self._bulk: - if picture_url == "." + picture.get_large().get_url()[:-4]: - return f"""""" - return f"" + return self._render_image(picture_url) + if (id == "pictures"): + config, style, to_parse = text[5:-5].split("---") + style = style.replace("\n", "") + config = { + k: v for line in config.strip().splitlines() + if ": " in line + for k, v in [line.split(": ", 1)] + } + content: str = self._render_pictures(config, to_parse) + return f"
{content}
"