Fixed #20568 -- truncatewords_html no longer splits words containing HTML entities.
Thanks yann0 at hotmail.com for the report.
This commit is contained in:
parent
58d555caf5
commit
40b95a24ae
|
@ -22,7 +22,7 @@ capfirst = lambda x: x and force_text(x)[0].upper() + force_text(x)[1:]
|
||||||
capfirst = allow_lazy(capfirst, six.text_type)
|
capfirst = allow_lazy(capfirst, six.text_type)
|
||||||
|
|
||||||
# Set up regular expressions
|
# Set up regular expressions
|
||||||
re_words = re.compile(r'&.*?;|<.*?>|(\w[\w-]*)', re.U|re.S)
|
re_words = re.compile(r'<.*?>|((?:\w[-\w]*|&.*?;)+)', re.U|re.S)
|
||||||
re_tag = re.compile(r'<(/)?([^ ]+?)(?:(\s*/)| .*?)?>', re.S)
|
re_tag = re.compile(r'<(/)?([^ ]+?)(?:(\s*/)| .*?)?>', re.S)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -184,6 +184,9 @@ class DefaultFiltersTests(TestCase):
|
||||||
'<p>one <a href="#">two - three <br>four</a> five</p>')
|
'<p>one <a href="#">two - three <br>four</a> five</p>')
|
||||||
self.assertEqual(truncatewords_html(
|
self.assertEqual(truncatewords_html(
|
||||||
'\xc5ngstr\xf6m was here', 1), '\xc5ngstr\xf6m ...')
|
'\xc5ngstr\xf6m was here', 1), '\xc5ngstr\xf6m ...')
|
||||||
|
self.assertEqual(truncatewords_html('<i>Buenos días! '
|
||||||
|
'¿Cómo está?</i>', 3),
|
||||||
|
'<i>Buenos días! ¿Cómo ...</i>')
|
||||||
|
|
||||||
def test_upper(self):
|
def test_upper(self):
|
||||||
self.assertEqual(upper('Mixed case input'), 'MIXED CASE INPUT')
|
self.assertEqual(upper('Mixed case input'), 'MIXED CASE INPUT')
|
||||||
|
|
|
@ -82,6 +82,15 @@ class TestUtilsText(SimpleTestCase):
|
||||||
self.assertEqual('<br>The <hr/>quick <em>brown...</em>',
|
self.assertEqual('<br>The <hr/>quick <em>brown...</em>',
|
||||||
truncator.words(3, '...', html=True ))
|
truncator.words(3, '...', html=True ))
|
||||||
|
|
||||||
|
# Test html entities
|
||||||
|
truncator = text.Truncator('<i>Buenos días!'
|
||||||
|
' ¿Cómo está?</i>')
|
||||||
|
self.assertEqual('<i>Buenos días! ¿Cómo...</i>',
|
||||||
|
truncator.words(3, '...', html=True))
|
||||||
|
truncator = text.Truncator('<p>I <3 python, what about you?</p>')
|
||||||
|
self.assertEqual('<p>I <3 python...</p>',
|
||||||
|
truncator.words(3, '...', html=True))
|
||||||
|
|
||||||
def test_wrap(self):
|
def test_wrap(self):
|
||||||
digits = '1234 67 9'
|
digits = '1234 67 9'
|
||||||
self.assertEqual(text.wrap(digits, 100), '1234 67 9')
|
self.assertEqual(text.wrap(digits, 100), '1234 67 9')
|
||||||
|
|
Loading…
Reference in New Issue