diff options
author | Irit Katriel <iritkatriel@yahoo.com> | 2020-10-18 17:01:15 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-18 17:01:15 (GMT) |
commit | b81c833ab51fb7d7f0f8eaace37f60ef7455aa85 (patch) | |
tree | 8543955715fe59aa8d762a76b159c93e6f40dadc /Lib/textwrap.py | |
parent | 67f04878debbcec60191cddbddf9c83e8b9b36fe (diff) | |
download | cpython-b81c833ab51fb7d7f0f8eaace37f60ef7455aa85.zip cpython-b81c833ab51fb7d7f0f8eaace37f60ef7455aa85.tar.gz cpython-b81c833ab51fb7d7f0f8eaace37f60ef7455aa85.tar.bz2 |
bpo-28660: Make TextWrapper break long words on hyphens (GH-22721)
Diffstat (limited to 'Lib/textwrap.py')
-rw-r--r-- | Lib/textwrap.py | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/Lib/textwrap.py b/Lib/textwrap.py index 30e693c..841de9b 100644 --- a/Lib/textwrap.py +++ b/Lib/textwrap.py @@ -215,8 +215,16 @@ class TextWrapper: # If we're allowed to break long words, then do so: put as much # of the next chunk onto the current line as will fit. if self.break_long_words: - cur_line.append(reversed_chunks[-1][:space_left]) - reversed_chunks[-1] = reversed_chunks[-1][space_left:] + end = space_left + chunk = reversed_chunks[-1] + if self.break_on_hyphens and len(chunk) > space_left: + # break after last hyphen, but only if there are + # non-hyphens before it + hyphen = chunk.rfind('-', 0, space_left) + if hyphen > 0 and any(c != '-' for c in chunk[:hyphen]): + end = hyphen + 1 + cur_line.append(chunk[:end]) + reversed_chunks[-1] = chunk[end:] # Otherwise, we have to preserve the long word intact. Only add # it to the current line if there's nothing already there -- |