diff options
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/test/test_textwrap.py | 5 | ||||
-rw-r--r-- | Lib/textwrap.py | 12 |
2 files changed, 13 insertions, 4 deletions
diff --git a/Lib/test/test_textwrap.py b/Lib/test/test_textwrap.py index 707aaaa..a44184f 100644 --- a/Lib/test/test_textwrap.py +++ b/Lib/test/test_textwrap.py @@ -748,6 +748,11 @@ def foo(): expect = "hello there\n how are you?" self.assertEqual(expect, dedent(text)) + # test margin is smaller than smallest indent + text = " \thello there\n \thow are you?\n \tI'm fine, thanks" + expect = " \thello there\n \thow are you?\n\tI'm fine, thanks" + self.assertEqual(expect, dedent(text)) + # Test textwrap.indent class IndentTestCase(unittest.TestCase): diff --git a/Lib/textwrap.py b/Lib/textwrap.py index 3ad3e18..05e0306 100644 --- a/Lib/textwrap.py +++ b/Lib/textwrap.py @@ -444,11 +444,15 @@ def dedent(text): elif margin.startswith(indent): margin = indent - # Current line and previous winner have no common whitespace: - # there is no margin. + # Find the largest common whitespace between current line and previous + # winner. else: - margin = "" - break + for i, (x, y) in enumerate(zip(margin, indent)): + if x != y: + margin = margin[:i] + break + else: + margin = margin[:len(indent)] # sanity check (testing/debugging only) if 0 and margin: |