From 2edcf7db4bc6641415f442342d7331c41557c476 Mon Sep 17 00:00:00 2001 From: Alessandro -oggei- Ogier Date: Fri, 23 Mar 2018 17:58:15 +0100 Subject: [PATCH] add break_on_hyphens parameter to wordwrap filter --- CHANGES.rst | 2 ++ jinja2/filters.py | 16 +++++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/CHANGES.rst b/CHANGES.rst index 22c15672..f05603f5 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -65,6 +65,8 @@ Unreleased - ``|wordwrap`` filter treats existing newlines as separate paragraphs to be wrapped individually, rather than creating short intermediate lines. :issue:`175` +- Add ``break_on_hyphens`` parameter to ``|wordwrap`` filter. + :issue:`550` Version 2.10.3 diff --git a/jinja2/filters.py b/jinja2/filters.py index 7c546493..666df408 100644 --- a/jinja2/filters.py +++ b/jinja2/filters.py @@ -684,7 +684,14 @@ def do_truncate(env, s, length=255, killwords=False, end='...', leeway=None): @environmentfilter -def do_wordwrap(environment, s, width=79, break_long_words=True, wrapstring=None): +def do_wordwrap( + environment, + s, + width=79, + break_long_words=True, + wrapstring=None, + break_on_hyphens=True, +): """Wrap a string to the given width. Existing newlines are treated as paragraphs to be wrapped separately. @@ -692,15 +699,21 @@ def do_wordwrap(environment, s, width=79, break_long_words=True, wrapstring=None :param width: Maximum length of wrapped lines. :param break_long_words: If a word is longer than ``width``, break it across lines. + :param break_on_hyphens: If a word contains hyphens, it may be split + across lines. :param wrapstring: String to join each wrapped line. Defaults to :attr:`Environment.newline_sequence`. .. versionchanged:: 2.11 Existing newlines are treated as paragraphs wrapped separately. + .. versionchanged:: 2.11 + Added the ``break_on_hyphens`` parameter. + .. versionchanged:: 2.7 Added the ``wrapstring`` parameter. """ + import textwrap if not wrapstring: @@ -719,6 +732,7 @@ def do_wordwrap(environment, s, width=79, break_long_words=True, wrapstring=None expand_tabs=False, replace_whitespace=False, break_long_words=break_long_words, + break_on_hyphens=break_on_hyphens, ) ) for line in s.splitlines() -- 2.47.2