diff --git a/pagure/pfmarkdown.py b/pagure/pfmarkdown.py index 1834f0d..d456a23 100644 --- a/pagure/pfmarkdown.py +++ b/pagure/pfmarkdown.py @@ -40,11 +40,11 @@ def inject(): def handleMatch(self, m): el = markdown.util.etree.Element("a") name = markdown.util.AtomicString(m.group(2)) - el.set('href', _user_url(name[1:])) - el.text = name + el.set('href', _user_url(name)) + el.text = ' @%s' % name return el - class ExplicitIssuePattern(markdown.inlinepatterns.Pattern): + class ExplicitForkIssuePattern(markdown.inlinepatterns.Pattern): def handleMatch(self, m): el = markdown.util.etree.Element("a") user = markdown.util.AtomicString(m.group(2)) @@ -54,18 +54,48 @@ def inject(): el.text = '%s/%s#%s' % (user, repo, idx) return el - MENTION_RE = r'(@\w+)' - EXPLICIT_ISSUE_RE = r'(\w+)/(\w+)#([0-9]+)' + class ExplicitMainIssuePattern(markdown.inlinepatterns.Pattern): + def handleMatch(self, m): + el = markdown.util.etree.Element("a") + repo = markdown.util.AtomicString(m.group(2)) + idx = markdown.util.AtomicString(m.group(3)) + el.set('href', _issue_url(None, repo, idx)) + el.text = ' %s#%s' % (repo, idx) + return el + + class ImplicitIssuePattern(markdown.inlinepatterns.Pattern): + def handleMatch(self, m): + el = markdown.util.etree.Element("a") + idx = markdown.util.AtomicString(m.group(2)) + + root = flask.request.url_root + url = flask.request.url + user = None + if 'fork/' in flask.request.url: + user, repo = url.split('fork/')[1].split('/', 2)[:2] + else: + repo = url.split(root)[1].split('/', 1)[0] + + el.set('href', _issue_url(user, repo, idx)) + el.text = ' #%s' % idx + return el + + MENTION_RE = r'[^|\w]@(\w+)' + EXPLICIT_FORK_ISSUE_RE = r'(\w+)/(\w+)#([0-9]+)' + EXPLICIT_MAIN_ISSUE_RE = r'[^|\w](?