diff options
| author | alex <alex@pdp7.net> | 2026-02-15 13:00:33 +0100 |
|---|---|---|
| committer | alex <alex@pdp7.net> | 2026-02-15 13:00:33 +0100 |
| commit | b852f3f4171e5084b28335b3e885887d669da7e1 (patch) | |
| tree | 42ed870def19b44ae18a978585f15303f55748b6 /gemini-to-web/src | |
| parent | 6742b12cca1f2f75e32b4c0e4c9447f7f72bc596 (diff) | |
Add __str__ methods to support gemtext manipulation tools
Diffstat (limited to 'gemini-to-web/src')
| -rw-r--r-- | gemini-to-web/src/gemini_to_web/parser.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gemini-to-web/src/gemini_to_web/parser.py b/gemini-to-web/src/gemini_to_web/parser.py index 358cada..214f301 100644 --- a/gemini-to-web/src/gemini_to_web/parser.py +++ b/gemini-to-web/src/gemini_to_web/parser.py @@ -106,6 +106,9 @@ def parse(gemtext: str) -> abc.Generator[GemElement]: class TextLine: text: str + def __str__(self): + return self.text + @dataclasses.dataclass class PreformattedTextLine(TextLine): @@ -140,6 +143,11 @@ class LinkLine: return LinkLine(parts[0]) return LinkLine(parts[0], parts[1]) + def __str__(self): + if self.link_name: + return f"=> {self.url} {self.link_name}" + return f"=> {self.url}" + @dataclasses.dataclass class PreformattingToggleLine: @@ -162,6 +170,11 @@ class PreformattingToggleLine: line: typing.Optional[str] = line if line else None return PreformattingToggleLine(line) + def __str__(self): + if self.alt_text: + return f"```{self.alt_text}" + return "```" + @dataclasses.dataclass class HeadingLine: @@ -183,6 +196,10 @@ class HeadingLine: return None return HeadingLine(len(parts[0]), parts[1]) + def __str__(self): + token = "#" * self.level + return f"{token} {self.heading_text}" + @dataclasses.dataclass class ListItem: @@ -200,6 +217,9 @@ class ListItem: return None return ListItem(line.removeprefix("* ")) + def __str__(self): + return f"* {self.text}" + @dataclasses.dataclass class QuoteLine: @@ -217,6 +237,9 @@ class QuoteLine: return None return QuoteLine(line.removeprefix("> ")) + def __str__(self): + return f"> {self.text}" + def cli_parse(): import json, sys |
