diff options
author | Lukas Fleischer <lfleischer@archlinux.org> | 2017-11-08 07:44:56 +0100 |
---|---|---|
committer | Lukas Fleischer <lfleischer@archlinux.org> | 2017-11-08 07:51:09 +0100 |
commit | efa8da5ca2972e1f721215d174f8b85495c6948c (patch) | |
tree | 7bc222658e08eab03f517e012021872d64d2c670 | |
parent | 0aa67b278ab8572f771603e74a92ef7ba56f006b (diff) | |
download | aur-efa8da5ca2972e1f721215d174f8b85495c6948c.tar.gz aur-efa8da5ca2972e1f721215d174f8b85495c6948c.tar.xz |
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-x | aurweb/scripts/rendercomment.py | 15 |
1 files changed, 15 insertions, 0 deletions
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 + \ |