From a9ac385cb90d0251253a2a3925f72a71af52f97b Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Sun, 23 Apr 2017 14:48:01 +0200 Subject: Reintroduce backwards-compatible hyperlink syntax 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 --- 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 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) -- cgit v1.2.3-24-g4f1b