summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLukas Fleischer <lfleischer@archlinux.org>2017-11-08 07:44:56 +0100
committerLukas Fleischer <lfleischer@archlinux.org>2017-11-08 07:51:09 +0100
commitefa8da5ca2972e1f721215d174f8b85495c6948c (patch)
tree7bc222658e08eab03f517e012021872d64d2c670
parent0aa67b278ab8572f771603e74a92ef7ba56f006b (diff)
downloadaur-efa8da5ca2972e1f721215d174f8b85495c6948c.tar.gz
aur-efa8da5ca2972e1f721215d174f8b85495c6948c.zip
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 <lfleischer@archlinux.org>
-rwxr-xr-xaurweb/scripts/rendercomment.py15
1 files changed, 15 insertions, 0 deletions
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 + \