From efa8da5ca2972e1f721215d174f8b85495c6948c Mon Sep 17 00:00:00 2001 From: Lukas Fleischer Date: Wed, 8 Nov 2017 07:44:56 +0100 Subject: Auto-link bug reports in comments Automatically detect references to Flyspray bug reports in comments and convert them to links to the Arch Linux bug tracker. Implements FS#52008. Signed-off-by: Lukas Fleischer --- aurweb/scripts/rendercomment.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/aurweb/scripts/rendercomment.py b/aurweb/scripts/rendercomment.py index 22aa856f..4b642273 100755 --- a/aurweb/scripts/rendercomment.py +++ b/aurweb/scripts/rendercomment.py @@ -26,6 +26,20 @@ class LinkifyExtension(markdown.extensions.Extension): md.preprocessors.add('linkify', LinkifyPreprocessor(md), '_end') +class FlysprayLinksPreprocessor(markdown.preprocessors.Preprocessor): + _fsre = re.compile(r'\b(FS#(\d+))\b') + _sub = r'[\1](https://bugs.archlinux.org/task/\2)' + + def run(self, lines): + return [self._fsre.sub(self._sub, line) for line in lines] + + +class FlysprayLinksExtension(markdown.extensions.Extension): + def extendMarkdown(self, md, md_globals): + preprocessor = FlysprayLinksPreprocessor(md) + md.preprocessors.add('flyspray-links', preprocessor, '_end') + + class GitCommitsPreprocessor(markdown.preprocessors.Preprocessor): _oidre = re.compile(r'(\b)([0-9a-f]{7,40})(\b)') _repo = pygit2.Repository(repo_path) @@ -102,6 +116,7 @@ def main(): text, pkgbase = get_comment(conn, commentid) html = markdown.markdown(text, extensions=['fenced_code', LinkifyExtension(), + FlysprayLinksExtension(), GitCommitsExtension(pkgbase), HeadingExtension()]) allowed_tags = bleach.sanitizer.ALLOWED_TAGS + \ -- cgit v1.2.3-24-g4f1b