summaryrefslogtreecommitdiffstats
path: root/aurweb
diff options
context:
space:
mode:
Diffstat (limited to 'aurweb')
-rwxr-xr-xaurweb/scripts/rendercomment.py16
1 files changed, 15 insertions, 1 deletions
diff --git a/aurweb/scripts/rendercomment.py b/aurweb/scripts/rendercomment.py
index 7e8a16b8..c8921f8f 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)