[aur-dev] [PATCH 3/4] Reintroduce backwards-compatible hyperlink syntax

Lukas Fleischer lfleischer at archlinux.org
Sun Apr 23 16:53:01 UTC 2017


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 at archlinux.org>
---
 aurweb/scripts/rendercomment.py | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git a/aurweb/scripts/rendercomment.py b/aurweb/scripts/rendercomment.py
index 7e8a16b..c8921f8 100755
--- a/aurweb/scripts/rendercomment.py
+++ b/aurweb/scripts/rendercomment.py
@@ -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)
-- 
2.12.2


More information about the aur-dev mailing list