diff options
Diffstat (limited to 'aurweb')
-rwxr-xr-x | aurweb/scripts/rendercomment.py | 16 |
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) |