mirror of https://github.com/django/django.git
Refs #30686 -- Fixed text truncation for negative or zero lengths.
This commit is contained in:
parent
3e820d10f8
commit
70f39e46f8
|
@ -104,6 +104,8 @@ class Truncator(SimpleLazyObject):
|
|||
"""
|
||||
self._setup()
|
||||
length = int(num)
|
||||
if length <= 0:
|
||||
return ""
|
||||
text = unicodedata.normalize("NFC", self._wrapped)
|
||||
|
||||
# Calculate the length to truncate to (max length - end_text length)
|
||||
|
@ -144,6 +146,8 @@ class Truncator(SimpleLazyObject):
|
|||
"""
|
||||
self._setup()
|
||||
length = int(num)
|
||||
if length <= 0:
|
||||
return ""
|
||||
if html:
|
||||
return self._truncate_html(length, truncate, self._wrapped, length, True)
|
||||
return self._text_words(length, truncate)
|
||||
|
|
|
@ -8,7 +8,7 @@ class FunctionTests(SimpleTestCase):
|
|||
truncatechars_html(
|
||||
'<p>one <a href="#">two - three <br>four</a> five</p>', 0
|
||||
),
|
||||
"…",
|
||||
"",
|
||||
)
|
||||
|
||||
def test_truncate(self):
|
||||
|
|
|
@ -89,7 +89,7 @@ class TestUtilsText(SimpleTestCase):
|
|||
|
||||
# Make a best effort to shorten to the desired length, but requesting
|
||||
# a length shorter than the ellipsis shouldn't break
|
||||
self.assertEqual("…", text.Truncator("asdf").chars(0))
|
||||
self.assertEqual("...", text.Truncator("asdf").chars(1, truncate="..."))
|
||||
# lazy strings are handled correctly
|
||||
self.assertEqual(
|
||||
text.Truncator(lazystr("The quick brown fox")).chars(10), "The quick…"
|
||||
|
@ -123,6 +123,8 @@ class TestUtilsText(SimpleTestCase):
|
|||
"…",
|
||||
truncator.chars(1, html=True),
|
||||
)
|
||||
self.assertEqual("", truncator.chars(0, html=True))
|
||||
self.assertEqual("", truncator.chars(-1, html=True))
|
||||
self.assertEqual(
|
||||
'<p id="par"><strong><em>The qu....</em></strong></p>',
|
||||
truncator.chars(10, "....", html=True),
|
||||
|
@ -206,6 +208,8 @@ class TestUtilsText(SimpleTestCase):
|
|||
lazystr("The quick brown fox jumped over the lazy dog.")
|
||||
)
|
||||
self.assertEqual("The quick brown fox…", truncator.words(4))
|
||||
self.assertEqual("", truncator.words(0))
|
||||
self.assertEqual("", truncator.words(-1))
|
||||
|
||||
def test_truncate_html_words(self):
|
||||
truncator = text.Truncator(
|
||||
|
|
Loading…
Reference in New Issue