]> git.mar77i.info Git - mar77i.info/commitdiff
md.py: break out postprocessing link into its own method
authormar77i <mar77i@protonmail.ch>
Sun, 16 Mar 2025 23:49:35 +0000 (00:49 +0100)
committermar77i <mar77i@protonmail.ch>
Sun, 16 Mar 2025 23:49:35 +0000 (00:49 +0100)
md.py

diff --git a/md.py b/md.py
index d855cc6daa7237c09c934d272795971ce456d98f..c18870196394117ada4776a31231a56975329e2b 100644 (file)
--- a/md.py
+++ b/md.py
@@ -1,6 +1,6 @@
 from collections import OrderedDict
 from html import escape
-from io import SEEK_END, StringIO
+from io import StringIO
 
 
 class Paragraph:
@@ -17,6 +17,19 @@ class Paragraph:
             f' {key}="{escape(value)}"' for key, value in self.attributes.items()
         )
 
+    def add_link(self, sio, link):
+        sio.seek(link[0])
+        text = sio.read(link[1] - link[0])
+        url = sio.read()
+        sio.seek(link[0])
+        sio.truncate()
+        sio.write('<a href="')
+        sio.write(escape(url.strip()))
+        sio.write('">')
+        sio.write(escape(text, False))
+        sio.write("</a>")
+        return None
+
     def join_lines(self):
         content = '\n'.join(self.lines)
         sio = StringIO()
@@ -31,19 +44,8 @@ class Paragraph:
             elif link is not None:
                 if c == "[]()"[len(link)]:
                     link.append(sio.tell())
-                if len(link) == 4:
-                    sio.seek(link[0])
-                    text = sio.read(link[1] - link[0])
-                    sio.read(1 + link[2] - link[1])
-                    url = sio.read()
-                    sio.seek(link[0])
-                    link = None
-                    sio.truncate()
-                    sio.write('<a href="')
-                    sio.write(escape(url.strip()))
-                    sio.write('">')
-                    sio.write(escape(text, False))
-                    sio.write("</a>")
+                    if len(link) == 4:
+                        link = self.add_link(sio, link)
                     continue
             if c == "\\":
                 backslash = True