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 <lfleischer@archlinux.org>
This commit is contained in:
Lukas Fleischer 2017-04-23 14:48:01 +02:00
parent 9aa4203c7e
commit a9ac385cb9

View file

@ -1,5 +1,6 @@
#!/usr/bin/python3 #!/usr/bin/python3
import re
import sys import sys
import bleach import bleach
import markdown import markdown
@ -7,6 +8,19 @@ import markdown
import aurweb.db 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): def get_comment(conn, commentid):
cur = conn.execute('SELECT Comments FROM PackageComments WHERE ID = ?', cur = conn.execute('SELECT Comments FROM PackageComments WHERE ID = ?',
[commentid]) [commentid])
@ -24,7 +38,7 @@ def main():
conn = aurweb.db.Connection() conn = aurweb.db.Connection()
text = get_comment(conn, commentid) 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'] allowed_tags = bleach.sanitizer.ALLOWED_TAGS + ['p', 'br']
html = bleach.clean(html, tags=allowed_tags) html = bleach.clean(html, tags=allowed_tags)
save_rendered_comment(conn, commentid, html) save_rendered_comment(conn, commentid, html)