SF #1149508: ensure textwrap handles hyphenated numbers correctly,
eg. "2004-03-04" is not broken across lines. (Merged from 2.4 branch.)
This commit is contained in:
parent
00a73e7715
commit
40407943b7
|
@ -165,6 +165,24 @@ What a mess!
|
|||
["this-is-a-useful-feature-for-reformatting-",
|
||||
"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):
|
||||
# Test text with em-dashes
|
||||
text = "Em-dashes should be written -- thus."
|
||||
|
|
|
@ -78,9 +78,10 @@ class TextWrapper:
|
|||
# splits into
|
||||
# Hello/ /there/ /--/ /you/ /goof-/ball,/ /use/ /the/ /-b/ /option!
|
||||
# (after stripping out empty strings).
|
||||
wordsep_re = re.compile(r'(\s+|' # any whitespace
|
||||
r'[^\s\w]*\w{2,}-(?=\w{2,})|' # hyphenated words
|
||||
r'(?<=[\w\!\"\'\&\.\,\?])-{2,}(?=\w))') # em-dash
|
||||
wordsep_re = re.compile(
|
||||
r'(\s+|' # any whitespace
|
||||
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
|
||||
# is US-ASCII only (and therefore English-only)
|
||||
|
|
Loading…
Reference in New Issue