Ticket #1919: 1919-1.diff

File 1919-1.diff, 2.5 KB (added by mattmcc, 8 years ago)

Add a regression test

  • django/utils/text.py

     
    3636    return u''.join(_generator())
    3737wrap = allow_lazy(wrap, unicode)
    3838
     39word_re = re.compile(r'((?:\*|_)*\w+(?:\*|_)*)',re.UNICODE)
    3940def truncate_words(s, num):
    40     "Truncates a string after a certain number of words."
     41    "Truncates a string after a certain number of words, preserving whites."
    4142    s = force_unicode(s)
    4243    length = int(num)
    43     words = s.split()
    44     if len(words) > length:
    45         words = words[:length]
     44    words = word_re.split(s,length)
     45    if len(words) > (2*length):
     46        words = words[:-1]
    4647        if not words[-1].endswith('...'):
    47             words.append('...')
    48     return u' '.join(words)
     48            words.append(' ...')
     49    return u''.join(words)
    4950truncate_words = allow_lazy(truncate_words, unicode)
    5051
    5152def truncate_html_words(s, num):
  • tests/regressiontests/templates/tests.py

     
    781781            'timeuntil04' : ('{{ a|timeuntil:b }}', {'a':NOW - timedelta(days=1), 'b':NOW - timedelta(days=2)}, '1 day'),
    782782            'timeuntil05' : ('{{ a|timeuntil:b }}', {'a':NOW - timedelta(days=2), 'b':NOW - timedelta(days=2, minutes=1)}, '1 minute'),
    783783
     784            # TRUNCATEWORDS TAG ################################################
     785            # Ensure that newlines are preserved
     786            'truncatewords01': ('{{ var|truncatewords:4 }}',
     787                                {'var': """
     788                                        Hello,
     789                                        boys.
     790                                        How
     791                                        are
     792                                        you
     793                                        gentlemen.
     794                                        """},
     795                                        """
     796                                        Hello,
     797                                        boys.
     798                                        How
     799                                        are ..."""
     800                                        ),
     801
    784802            ### URL TAG ########################################################
    785803            # Successes
    786804            'url01' : ('{% url regressiontests.templates.views.client client.id %}', {'client': {'id': 1}}, '/url_tag/client/1/'),
Back to Top