From 10a10adc03faa4646fa0a99857251742702f4c04 Mon Sep 17 00:00:00 2001 From: Eric Sh Date: Thu, 3 Apr 2014 14:19:05 +0300 Subject: [PATCH] Improved performance of filters.do_truncate() --- jinja2/filters.py | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) 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, -- 2.47.2