Commit 40407943 authored by Greg Ward's avatar Greg Ward

SF #1149508: ensure textwrap handles hyphenated numbers correctly,

eg. "2004-03-04" is not broken across lines.  (Merged from 2.4 branch.)
parent 00a73e77
...@@ -165,6 +165,24 @@ What a mess! ...@@ -165,6 +165,24 @@ What a mess!
["this-is-a-useful-feature-for-reformatting-", ["this-is-a-useful-feature-for-reformatting-",
"posts-from-tim-peters'ly"]) "posts-from-tim-peters'ly"])
def test_hyphenated_numbers(self):
# Test that hyphenated numbers (eg. dates) are not broken like words.
text = ("Python 1.0.0 was released on 1994-01-26. Python 1.0.1 was\n"
"released on 1994-02-15.")
self.check_wrap(text, 30, ['Python 1.0.0 was released on',
'1994-01-26. Python 1.0.1 was',
'released on 1994-02-15.'])
self.check_wrap(text, 40, ['Python 1.0.0 was released on 1994-01-26.',
'Python 1.0.1 was released on 1994-02-15.'])
text = "I do all my shopping at 7-11."
self.check_wrap(text, 25, ["I do all my shopping at",
"7-11."])
self.check_wrap(text, 27, ["I do all my shopping at",
"7-11."])
self.check_wrap(text, 29, ["I do all my shopping at 7-11."])
def test_em_dash(self): def test_em_dash(self):
# Test text with em-dashes # Test text with em-dashes
text = "Em-dashes should be written -- thus." text = "Em-dashes should be written -- thus."
......
...@@ -78,9 +78,10 @@ class TextWrapper: ...@@ -78,9 +78,10 @@ class TextWrapper:
# splits into # splits into
# Hello/ /there/ /--/ /you/ /goof-/ball,/ /use/ /the/ /-b/ /option! # Hello/ /there/ /--/ /you/ /goof-/ball,/ /use/ /the/ /-b/ /option!
# (after stripping out empty strings). # (after stripping out empty strings).
wordsep_re = re.compile(r'(\s+|' # any whitespace wordsep_re = re.compile(
r'[^\s\w]*\w{2,}-(?=\w{2,})|' # hyphenated words r'(\s+|' # any whitespace
r'(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))') # em-dash r'[^\s\w]*\w+[a-zA-Z]-(?=\w+[a-zA-Z])|' # hyphenated words
r'(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))') # em-dash
# XXX this is not locale- or charset-aware -- string.lowercase # XXX this is not locale- or charset-aware -- string.lowercase
# is US-ASCII only (and therefore English-only) # is US-ASCII only (and therefore English-only)
......
...@@ -206,6 +206,10 @@ Library ...@@ -206,6 +206,10 @@ Library
- ``UserString.MutableString`` now supports negative indices in - ``UserString.MutableString`` now supports negative indices in
``__setitem__`` and ``__delitem__`` ``__setitem__`` and ``__delitem__``
- Bug #1149508: ``textwrap`` now handles hyphenated numbers (eg. "2004-03-05")
correctly.
Build Build
----- -----
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment