From a37ff42e750a0cefecb37929c25512a5a3679bf7 Mon Sep 17 00:00:00 2001 From: zenfyr Date: Tue, 12 May 2026 03:28:16 +0000 Subject: [PATCH] feat: render list tags to markdown --- util/html.py | 18 ++++++++++++++++++ 1 file(s) changed, 18 insertion(s)(+), 0 deletion(s)(-) diff --git a/util/html.py b/util/html.py --- a/util/html.py +++ b/util/html.py @@ -17,6 +17,8 @@ self.invisible: str | None = None self.invisible_depth: int = 0 + self.list_stack: list[tuple[str, int]] = [] + def handle_a_endtag(self): label, _attr = self._tag_stack.pop("a") @@ -75,6 +77,16 @@ self.append_text("\n") case "h1" | "h2" | "h3" | "h4" | "h5" | "h6": level = int(tag[1]) self.append_text("\n" + "#" * level + " ") + case "ul" | "ol": + if self.list_stack: + self.append_text("\n") + self.list_stack.append((tag, 0)) + case "li": + if self.list_stack: + ltype, idx = self.list_stack[-1] + indent = " " * (len(self.list_stack) - 1) + self.append_text(f"{indent}- " if ltype == "ul" else f"{indent}{idx + 1}. ") + self.list_stack[-1] = (ltype, idx + 1) case _: # self.builder.extend(f"<{tag}>".encode("utf-8")) pass @@ -112,6 +124,12 @@ self.append_text("~~") case "p": self.append_text("\n\n") case "h1" | "h2" | "h3" | "h4" | "h5" | "h6": + self.append_text("\n") + case "ul" | "ol": + self.list_stack.pop() + if not self.list_stack: + self.append_text("\n") + case "li": self.append_text("\n") case _: # self.builder.extend(f"".encode("utf-8")) -- tangled.sh