Commit 806f3b26 authored by Russell Keith-Magee's avatar Russell Keith-Magee
Browse files

Fixed #11021 -- Clarified newline stripping behavior in the truncatewords and...

Fixed #11021 -- Clarified newline stripping behavior in the truncatewords and truncatewords_html filters. Thanks to Ben Spaulding for the report and patch.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@13555 bcc190cf-cafb-0310-a4f2-bffc1f526a37
parent 103f7f83
Loading
Loading
Loading
Loading
+4 −0
Original line number Diff line number Diff line
@@ -256,6 +256,8 @@ def truncatewords(value, arg):
    Truncates a string after a certain number of words.

    Argument: Number of words to truncate after.

    Newlines within the string are removed.
    """
    from django.utils.text import truncate_words
    try:
@@ -271,6 +273,8 @@ def truncatewords_html(value, arg):
    Truncates HTML after a certain number of words.

    Argument: Number of words to truncate after.

    Newlines in the HTML are preserved.
    """
    from django.utils.text import truncate_html_words
    try:
+9 −3
Original line number Diff line number Diff line
@@ -39,7 +39,10 @@ wrap = allow_lazy(wrap, unicode)
def truncate_words(s, num, end_text='...'):
    """Truncates a string after a certain number of words. Takes an optional
    argument of what should be used to notify that the string has been
    truncated, defaults to ellipsis (...)"""
    truncated, defaulting to ellipsis (...)

    Newlines in the string will be stripped.
    """
    s = force_unicode(s)
    length = int(num)
    words = s.split()
@@ -51,10 +54,13 @@ def truncate_words(s, num, end_text='...'):
truncate_words = allow_lazy(truncate_words, unicode)

def truncate_html_words(s, num, end_text='...'):
    """Truncates html to a certain number of words (not counting tags and
    """Truncates HTML to a certain number of words (not counting tags and
    comments). Closes opened tags if they were correctly closed in the given
    html. Takes an optional argument of what should be used to notify that the
    string has been truncated, defaults to ellipsis (...)."""
    string has been truncated, defaulting to ellipsis (...).

    Newlines in the HTML are preserved.
    """
    s = force_unicode(s)
    length = int(num)
    if length <= 0:
+4 −0
Original line number Diff line number Diff line
@@ -1883,6 +1883,8 @@ For example::

If ``value`` is ``"Joel is a slug"``, the output will be ``"Joel is ..."``.

Newlines within the string will be removed.

.. templatefilter:: truncatewords_html

truncatewords_html
@@ -1902,6 +1904,8 @@ For example::
If ``value`` is ``"<p>Joel is a slug</p>"``, the output will be
``"<p>Joel is ...</p>"``.

Newlines in the HTML content will be preserved.

.. templatefilter:: unordered_list

unordered_list