From ded8590957aba414a9ab33db5b6864e083602fca Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Jan 15 2018 10:09:07 +0000 Subject: Fix supporting in markdown as it is supposed to be Fixes https://pagure.io/pagure/issue/2906 This currently doesn't work well for links, supposedly due to something in the regex but not sure what it is. Signed-off-by: Pierre-Yves Chibon --- diff --git a/pagure/pfmarkdown.py b/pagure/pfmarkdown.py index 1f139f1..4c569c7 100644 --- a/pagure/pfmarkdown.py +++ b/pagure/pfmarkdown.py @@ -244,16 +244,36 @@ class StrikeThroughPattern(markdown.inlinepatterns.Pattern): return element +class AutolinkPattern2(markdown.inlinepatterns.Pattern): + """ Return a link Element given an autolink (``). """ + def handleMatch(self, m): + """ When the pattern matches, update the text. + + :arg m: the matched object + + """ + url = m.group(2) + if url.startswith('<'): + url = url[1:] + if url.endswith('>'): + url = url[:-1] + el = markdown.util.etree.Element("a") + el.set('href', self.unescape(url)) + el.text = markdown.util.AtomicString(url) + return el + + class PagureExtension(markdown.extensions.Extension): def extendMarkdown(self, md, md_globals): # First, make it so that bare links get automatically linkified. - markdown.inlinepatterns.AUTOLINK_RE = '(%s)' % '|'.join([ + AUTOLINK_RE = '(%s)' % '|'.join([ r'<((?:[Ff]|[Hh][Tt])[Tt][Pp][Ss]?://[^>]*)>', r'\b(?:[Ff]|[Hh][Tt])[Tt][Pp][Ss]?://[^)<>\s]+[^.,)<>\s]', r'<(Ii][Rr][Cc][Ss]?://[^>]*)>', r'\b[Ii][Rr][Cc][Ss]?://[^)<>\s]+[^.,)<>\s]', ]) + markdown.inlinepatterns.AUTOLINK_RE = AUTOLINK_RE md.inlinePatterns['mention'] = MentionPattern(MENTION_RE) @@ -261,6 +281,8 @@ class PagureExtension(markdown.extensions.Extension): IMPLICIT_COMMIT_RE) md.inlinePatterns['commit_links'] = CommitLinkPattern( COMMIT_LINK_RE) + md.inlinePatterns['autolink'] = AutolinkPattern2( + AUTOLINK_RE, md) if pagure_config.get('ENABLE_TICKETS', True): md.inlinePatterns['implicit_pr'] = \ diff --git a/tests/test_pagure_lib.py b/tests/test_pagure_lib.py index 9819eb9..dcf9d2c 100644 --- a/tests/test_pagure_lib.py +++ b/tests/test_pagure_lib.py @@ -4198,6 +4198,7 @@ class PagureLibtests(tests.Modeltests): 'ircs://pagure.io', 'http://pagure.io', 'https://pagure.io', + '', '~~foo~~', '~~foo bar~~', '~~[BZ#1435310](https://bugzilla.redhat.com/1435310)~~', @@ -4258,6 +4259,9 @@ class PagureLibtests(tests.Modeltests): '

http://pagure.io

', # 'https://pagure.io' '

https://pagure.io

', + # '' + '

https://pagure.io/pagure' + '

', # '~~foo~~' '

foo

', # '~~foo bar~~'