From: Michael G. Schwern Date: Fri, 26 Jan 2001 09:28:31 +0000 (-0500) Subject: (Retracted by #8573) X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=0110aa014f97741d8a9f48382bd97bfc15d8cd60;p=p5sagit%2Fp5-mst-13.2.git (Retracted by #8573) Subject: [PATCH Text::Wrap 2000.06292219] Spurious leading whitespace Message-ID: <20010126092831.A15328@blackrider.aocn.com> p4raw-id: //depot/perl@8552 --- diff --git a/lib/Text/Wrap.pm b/lib/Text/Wrap.pm index 04efe19..9241dfc 100644 --- a/lib/Text/Wrap.pm +++ b/lib/Text/Wrap.pm @@ -25,7 +25,9 @@ sub wrap my ($ip, $xp, @t) = @_; my $r = ""; - my $t = expand(join(" ",@t)); + + my $t = _linearize(@t); + my $lead = $ip; my $ll = $columns - length(expand($ip)) - 1; my $nll = $columns - length(expand($xp)) - 1; @@ -61,6 +63,18 @@ sub wrap return $r; } +sub _linearize { + my @lines = expand(@_); + + # Join the lines together, adding in extra whitespace only where needed + # to keep words seperated. + my $text = join "", map { /\s+\Z/ ? $_ : $_.' ' } @lines[0..$#lines-1]; + $text .= $lines[-1]; + + return $text; +} + + sub fill { my ($ip, $xp, @raw) = @_; diff --git a/t/lib/textwrap.t b/t/lib/textwrap.t index af24036..2c4608c 100755 --- a/t/lib/textwrap.t +++ b/t/lib/textwrap.t @@ -84,12 +84,21 @@ END a123456789b123456789c123456789d123456789e123456789f123456789g123456789g123 4567 END +TEST10 +my mother once said +"never eat paste my darling" +would that I heeded +END + my mother once said + "never eat paste my darling" + would that I heeded +END DONE $| = 1; -print "1..", @tests/2, "\n"; +print "1..". @tests . "\n"; use Text::Wrap; @@ -102,28 +111,36 @@ while (@tests) { $in =~ s/^TEST(\d+)?\n//; - my $back = wrap(' ', ' ', $in); + # Make sure split() doesn't drop trailing empty sets. + my @in = split("\n", $in, -1); + @in = ((map { "$_\n" } @in[0..$#in-1]), $in[-1]); + + # We run wrap() both with a string and a list to test its + # line joining logic. + foreach my $back (wrap(' ', ' ', @in), + wrap(' ', ' ', $in) ) { - if ($back eq $out) { - print "ok $tn\n"; - } elsif ($rerun) { - my $oi = $in; - foreach ($in, $back, $out) { - s/\t/^I\t/gs; - s/\n/\$\n/gs; - } - print "------------ input ------------\n"; - print $in; - print "\n------------ output -----------\n"; - print $back; - print "\n------------ expected ---------\n"; - print $out; - print "\n-------------------------------\n"; - $Text::Wrap::debug = 1; - wrap(' ', ' ', $oi); - exit(1); - } else { - print "not ok $tn\n"; - } - $tn++; + if ($back eq $out) { + print "ok $tn\n"; + } elsif ($rerun) { + my $oi = $in; + foreach ($in, $back, $out) { + s/\t/^I\t/gs; + s/\n/\$\n/gs; + } + print "------------ input ------------\n"; + print $in; + print "\n------------ output -----------\n"; + print $back; + print "\n------------ expected ---------\n"; + print $out; + print "\n-------------------------------\n"; + $Text::Wrap::debug = 1; + wrap(' ', ' ', $oi); + exit(1); + } else { + print "not ok $tn\n"; + } + $tn++; + } }