Commit 6c06adad authored by Giles Richard Greenway's avatar Giles Richard Greenway Committed by Florian Apolloner
Browse files

Fixed #20364 -- Changed urlize regexes to include quotation marks as punctation.

Thanks to EmilStenstrom for raising this, and to Chris Piwoński for all of the fixes and most of the tests.
parent 99c87f14
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -15,8 +15,8 @@ from .html_parser import HTMLParser, HTMLParseError


# Configuration for urlize() function.
TRAILING_PUNCTUATION = ['.', ',', ':', ';', '.)']
WRAPPING_PUNCTUATION = [('(', ')'), ('<', '>'), ('[', ']'), ('&lt;', '&gt;')]
TRAILING_PUNCTUATION = ['.', ',', ':', ';', '.)', '"', '\'']
WRAPPING_PUNCTUATION = [('(', ')'), ('<', '>'), ('[', ']'), ('&lt;', '&gt;'), ('"', '"'), ('\'', '\'')]

# List of possible strings used for bullets in bulleted lists.
DOTS = ['&middot;', '*', '\u2022', '&#149;', '&bull;', '&#8226;']
+18 −0
Original line number Diff line number Diff line
@@ -324,6 +324,24 @@ class DefaultFiltersTests(TestCase):
        self.assertEqual(urlize('http://[2001:db8:cafe::2]/api/9'),
            '<a href="http://[2001:db8:cafe::2]/api/9" rel="nofollow">http://[2001:db8:cafe::2]/api/9</a>')

        # Check urlize correctly include quotation marks in links - #20364
        self.assertEqual(urlize('before "hi@example.com" afterwards'),
                         u'before "<a href="mailto:hi@example.com">hi@example.com</a>" afterwards')
        self.assertEqual(urlize('before hi@example.com" afterwards'),
                         u'before <a href="mailto:hi@example.com">hi@example.com</a>" afterwards')
        self.assertEqual(urlize('before "hi@example.com afterwards'),
                         u'before "<a href="mailto:hi@example.com">hi@example.com</a> afterwards')
        self.assertEqual(urlize('before \'hi@example.com\' afterwards'),
                         u'before \'<a href="mailto:hi@example.com">hi@example.com</a>\' afterwards')
        self.assertEqual(urlize('before hi@example.com\' afterwards'),
                         u'before <a href="mailto:hi@example.com">hi@example.com</a>\' afterwards')
        self.assertEqual(urlize('before \'hi@example.com afterwards'),
                         u'before \'<a href="mailto:hi@example.com">hi@example.com</a> afterwards')

        # Check urlize copes with commas following URLs in quotes - see #20364 
        self.assertEqual(urlize('Email us at "hi@example.com", or phone us at +xx.yy'),
            'Email us at "<a href="mailto:hi@example.com">hi@example.com</a>", or phone us at +xx.yy')

    def test_wordcount(self):
        self.assertEqual(wordcount(''), 0)
        self.assertEqual(wordcount('oneword'), 1)