@@ -1,5 +1,6 @@
#!/usr/bin/python3
+import re
import sys
import bleach
import markdown
@@ -7,6 +8,19 @@ import markdown
import aurweb.db
+class LinkifyPreprocessor(markdown.preprocessors.Preprocessor):
+ _urlre = re.compile(r'(\b(?:https?|ftp):\/\/[\w\/\#~:.?+=&%@!\-;,]+?'
+ r'(?=[.:?\-;,]*(?:[^\w\/\#~:.?+=&%@!\-;,]|$)))')
+
+ def run(self, lines):
+ return [self._urlre.sub(r'<\1>', line) for line in lines]
+
+
+class LinkifyExtension(markdown.extensions.Extension):
+ def extendMarkdown(self, md, md_globals):
+ md.preprocessors.add('linkify', LinkifyPreprocessor(md), '_end')
+
+
def get_comment(conn, commentid):
cur = conn.execute('SELECT Comments FROM PackageComments WHERE ID = ?',
[commentid])
@@ -24,7 +38,7 @@ def main():
conn = aurweb.db.Connection()
text = get_comment(conn, commentid)
- html = markdown.markdown(text, extensions=['nl2br'])
+ html = markdown.markdown(text, extensions=['nl2br', LinkifyExtension()])
allowed_tags = bleach.sanitizer.ALLOWED_TAGS + ['p', 'br']
html = bleach.clean(html, tags=allowed_tags)
save_rendered_comment(conn, commentid, html)
Before switching to the new comment rendering script and Markdown, no special syntax was needed to make URLs clickable. Reintroduce this feature and automatically detect links in addition to the hyperlink syntax already supported by Markdown. Signed-off-by: Lukas Fleischer <lfleischer@archlinux.org> --- aurweb/scripts/rendercomment.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-)