Auto-link bug reports in comments
diff mbox

Message ID 20171108065137.14564-1-lfleischer@archlinux.org
State Accepted, archived
Headers show

Commit Message

Lukas Fleischer Nov. 8, 2017, 6:51 a.m. UTC
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 <lfleischer@archlinux.org>
---
 aurweb/scripts/rendercomment.py | 15 +++++++++++++++
 1 file changed, 15 insertions(+)

Patch
diff mbox

diff --git a/aurweb/scripts/rendercomment.py b/aurweb/scripts/rendercomment.py
index 22aa856..4b64227 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 + \