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