From 75c9f6d4ae440df3c00625f79ea20079628a8d5f Mon Sep 17 00:00:00 2001 From: Adam Williamson Date: Feb 22 2018 09:20:15 +0000 Subject: [PATCH 1/2] Remove some funky bits from inline pattern regexes The bits removed here are *very* weird. They are inverted sets which will match anything but a literal pipe or any character in the \w class. The following bit, `(? --- diff --git a/pagure/pfmarkdown.py b/pagure/pfmarkdown.py index 4c569c7..363e94b 100644 --- a/pagure/pfmarkdown.py +++ b/pagure/pfmarkdown.py @@ -51,8 +51,8 @@ COMMIT_LINK_RE = \ '([a-zA-Z0-9_-]*?/)?'\ '([a-zA-Z0-9_-]+)'\ '#(?P[\w]{40})' -IMPLICIT_ISSUE_RE = r'[^|\w](? Date: Feb 22 2018 09:20:15 +0000 Subject: [PATCH 2/2] Handle implicit issue link at start of line (#2987) This treats a line starting with #123 - where 123 is a valid issue or pull request ID - as an implicit link, rather than as a header line. Doing this is a bit complicated, as markdown does header line processing early, in the block processors (that's before the inline patterns we usually use). So we can't do this entirely with inline patterns. We have to add a preprocessor that runs before the block processors, and mungs the relevant strings so the block processor doesn't turn them into header HTML. Then we adjust the ImplicitIssuePattern to handle these modified strings as well. This also adds tests for implicit links, enabled by mocking out enough bits of flask that `_get_ns_repo_user` is happy. There are tests not only for implicit links at the start of a line but also other cases, including the case of an implicit link not surrounded by whitespace that was fixed in the previous commit. Fixes https://pagure.io/pagure/issue/2987 Signed-off-by: Adam Williamson --- diff --git a/pagure/pfmarkdown.py b/pagure/pfmarkdown.py index 363e94b..9fe6ddf 100644 --- a/pagure/pfmarkdown.py +++ b/pagure/pfmarkdown.py @@ -22,8 +22,10 @@ Author: Ralph Bean import flask import markdown.inlinepatterns +import markdown.preprocessors import markdown.util import pygit2 +import re import pagure.lib from pagure.config import config as pagure_config @@ -51,7 +53,10 @@ COMMIT_LINK_RE = \ '([a-zA-Z0-9_-]*?/)?'\ '([a-zA-Z0-9_-]+)'\ '#(?P[\w]{40})' -IMPLICIT_ISSUE_RE = r'(?pingou/ns/test#8 is private

', + # 'implicit link to #1', + '

implicit link to #1

', + # 'implicit link .#1. with non-whitespace, non-word characters', + '

implicit link .#1. with non-whitespace, non-word characters

', + # '#2 - implicit link at start of line', + '

#2 - implicit link at start of line

', + # '#2. implicit link at start of line with no whitespace after', + '

#2. implicit link at start of line with no whitespace after

', + # '#regular header', + '

regular header

', + # '#34 looks like an implicit link, but no issue 34', + '

34 looks like an implicit link, but no issue 34

', # 'pingou committed on test#9364354a4555ba17aa60f0dc844d70b74eb1aecd', '

pingou committed on