From: Eric Sh Date: Thu, 3 Apr 2014 11:19:05 +0000 (+0300) Subject: Improved performance of filters.do_truncate() X-Git-Tag: 2.8~84^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F317%2Fhead;p=thirdparty%2Fjinja.git Improved performance of filters.do_truncate() --- diff --git a/jinja2/filters.py b/jinja2/filters.py index 41f91d9a..882f915b 100644 --- a/jinja2/filters.py +++ b/jinja2/filters.py @@ -477,16 +477,11 @@ def do_truncate(s, length=255, killwords=False, end='...'): return s elif killwords: return s[:length - len(end)] + end - words = s.split(' ') - result = [] - m = 0 - for word in words: - m += len(word) + 1 - if m > (length - len(end)): - break - result.append(word) - result.append(end) - return u' '.join(result) + + result = s[:length - len(end)].rsplit(' ', 1)[0] + if len(result) < length: + result += ' ' + return result + end @environmentfilter def do_wordwrap(environment, s, width=79, break_long_words=True,