from collections import OrderedDict
from html import escape
-from io import SEEK_END, StringIO
+from io import StringIO
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()
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