Fixed #10931 -- Made `Truncator` handle newlines properly. Thanks to gsong and Claude Paroz.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@17329 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Julien Phalip 2012-01-02 18:47:18 +00:00
parent 6fa62b8166
commit 1572a3d4b2
2 changed files with 7 additions and 2 deletions

View File

@ -18,8 +18,8 @@ capfirst = lambda x: x and force_unicode(x)[0].upper() + force_unicode(x)[1:]
capfirst = allow_lazy(capfirst, unicode) capfirst = allow_lazy(capfirst, unicode)
# Set up regular expressions # Set up regular expressions
re_words = re.compile(r'&.*?;|<.*?>|(\w[\w-]*)', re.U) re_words = re.compile(r'&.*?;|<.*?>|(\w[\w-]*)', re.U|re.S)
re_tag = re.compile(r'<(/)?([^ ]+?)(?: (/)| .*?)?>') re_tag = re.compile(r'<(/)?([^ ]+?)(?: (/)| .*?)?>', re.S)
def wrap(text, width): def wrap(text, width):

View File

@ -62,6 +62,11 @@ class TestUtilsText(unittest.TestCase):
'</strong></p>', truncator.words(4, '....', html=True)) '</strong></p>', truncator.words(4, '....', html=True))
self.assertEqual(u'<p><strong><em>The quick brown fox</em></strong>' self.assertEqual(u'<p><strong><em>The quick brown fox</em></strong>'
'</p>', truncator.words(4, '', html=True)) '</p>', truncator.words(4, '', html=True))
# Test with new line inside tag
truncator = text.Truncator('<p>The quick <a href="xyz.html"\n'
'id="mylink">brown fox</a> jumped over the lazy dog.</p>')
self.assertEqual(u'<p>The quick <a href="xyz.html"\n'
'id="mylink">brown...</a></p>', truncator.words(3, '...', html=True))
def test_old_truncate_words(self): def test_old_truncate_words(self):
self.assertEqual(u'The quick brown fox jumped over the lazy dog.', self.assertEqual(u'The quick brown fox jumped over the lazy dog.',