update to Text::Wrap 98.112901 from David Muir Sharnoff
Gurusamy Sarathy [Sun, 29 Nov 1998 22:50:41 +0000 (22:50 +0000)]
<muir@idiom.com>

p4raw-id: //depot/perl@2400

MANIFEST
lib/Text/Wrap.pm
t/lib/textfill.t [new file with mode: 0755]

index 3552d94..34d3bcd 100644 (file)
--- a/MANIFEST
+++ b/MANIFEST
@@ -1059,7 +1059,8 @@ t/lib/socket.t            See if Socket works
 t/lib/soundex.t                See if Soundex works
 t/lib/symbol.t         See if Symbol works
 t/lib/texttabs.t       See if Text::Tabs works
-t/lib/textwrap.t       See if Text::Wrap works
+t/lib/textfill.t       See if Text::Wrap::fill works
+t/lib/textwrap.t       See if Text::Wrap::wrap works
 t/lib/thread.t         Basic test of threading (skipped if no threads) 
 t/lib/tie-push.t       Test for Tie::Array
 t/lib/tie-stdarray.t   Test for Tie::StdArray
index 062354d..a5b16e2 100644 (file)
@@ -2,11 +2,11 @@ package Text::Wrap;
 
 require Exporter;
 
-@ISA = (Exporter);
-@EXPORT = qw(wrap);
-@EXPORT_OK = qw($columns $wraplong);
+@ISA = qw(Exporter);
+@EXPORT = qw(wrap fill);
+@EXPORT_OK = qw($columns $break $huge);
 
-$VERSION = 98.112801;
+$VERSION = 98.112901;
 
 use vars qw($VERSION $columns $debug $break $huge);
 use strict;
@@ -61,6 +61,24 @@ sub wrap
        return $r;
 }
 
+sub fill 
+{
+       my ($ip, $xp, @raw) = @_;
+       my @para;
+       my $pp;
+
+       for $pp (split(/\n\s+/, join("\n",@raw))) {
+               $pp =~ s/\s+/ /g;
+               my $x = wrap($ip, $xp, $pp);
+               push(@para, $x);
+       }
+
+       # if paragraph_indent is the same as line_indent, 
+       # separate paragraphs with blank lines
+
+       return join ($ip eq $xp ? "\n\n" : "\n", @para);
+}
+
 1;
 __END__
 
@@ -73,6 +91,7 @@ Text::Wrap - line wrapping to form simple paragraphs
        use Text::Wrap
 
        print wrap($initial_tab, $subsequent_tab, @text);
+       print fill($initial_tab, $subsequent_tab, @text);
 
        use Text::Wrap qw(wrap $columns $huge);
 
@@ -95,6 +114,12 @@ are broken up.  Previous versions of wrap() die()ed instead.
 To restore the old (dying) behavior, set $Text::Wrap::huge to
 'die'.
 
+Text::Wrap::fill() is a simple multi-paragraph formatter.  It formats
+each paragraph separately and then joins them together when it's done.  It
+will destory any whitespace in the original text.  It breaks text into
+paragraphs by looking for whitespace after a newline.  In other respects
+it acts like wrap().
+
 =head1 EXAMPLE
 
        print wrap("\t","","This is a bit of text that forms 
@@ -103,5 +128,5 @@ To restore the old (dying) behavior, set $Text::Wrap::huge to
 =head1 AUTHOR
 
 David Muir Sharnoff <muir@idiom.com> with help from Tim Pierce and
-many others.
+many many others.  
 
diff --git a/t/lib/textfill.t b/t/lib/textfill.t
new file mode 100755 (executable)
index 0000000..b40aaff
--- /dev/null
@@ -0,0 +1,94 @@
+#!/usr/bin/perl -w -I.
+
+@tests = (split(/\nEND\n/s, <<DONE));
+TEST1
+Cyberdog Information
+
+Cyberdog & Netscape in the news
+Important Press Release regarding Cyberdog and Netscape. Check it out! 
+
+Cyberdog Plug-in Support!
+Cyberdog support for Netscape Plug-ins is now available to download! Go
+to the Cyberdog Beta Download page and download it now! 
+
+Cyberdog Book
+Check out Jesse Feiler's way-cool book about Cyberdog. You can find
+details out about the book as well as ordering information at Philmont
+Software Mill site. 
+
+Java!
+Looking to view Java applets in Cyberdog 1.1 Beta 3? Download and install
+the Mac OS Runtime for Java and try it out! 
+
+Cyberdog 1.1 Beta 3
+We hope that Cyberdog and OpenDoc 1.1 will be available within the next
+two weeks. In the meantime, we have released another version of
+Cyberdog, Cyberdog 1.1 Beta 3. This version fixes several bugs that were
+reported to us during out public beta period. You can check out our release
+notes to see what we fixed! 
+END
+    Cyberdog Information
+    Cyberdog & Netscape in the news Important Press Release regarding
+ Cyberdog and Netscape. Check it out! 
+    Cyberdog Plug-in Support! Cyberdog support for Netscape Plug-ins is now
+ available to download! Go to the Cyberdog Beta Download page and download
+ it now! 
+    Cyberdog Book Check out Jesse Feiler's way-cool book about Cyberdog.
+ You can find details out about the book as well as ordering information at
+ Philmont Software Mill site. 
+    Java! Looking to view Java applets in Cyberdog 1.1 Beta 3? Download and
+ install the Mac OS Runtime for Java and try it out! 
+    Cyberdog 1.1 Beta 3 We hope that Cyberdog and OpenDoc 1.1 will be
+ available within the next two weeks. In the meantime, we have released
+ another version of Cyberdog, Cyberdog 1.1 Beta 3. This version fixes
+ several bugs that were reported to us during out public beta period. You
+ can check out our release notes to see what we fixed! 
+END
+DONE
+
+
+$| = 1;
+
+print "1..";
+print @tests/2;
+print "\n";
+
+use Text::Wrap;
+
+$rerun = $ENV{'PERL_DL_NONLAZY'} ? 0 : 1;
+
+$tn = 1;
+while (@tests) {
+       my $in = shift(@tests);
+       my $out = shift(@tests);
+
+       $in =~ s/^TEST(\d+)?\n//;
+
+       my $back = fill('    ', ' ', $in);
+
+       if ($back eq $out) {
+               print "ok $tn\n";
+       } elsif ($rerun) {
+               my $oi = $in;
+               require File::Slurp;
+               File::Slurp::write_file("#o", $back);
+               File::Slurp::write_file("#e", $out);
+               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;
+               fill('    ', ' ', $oi);
+               exit(1);
+       } else {
+               print "not ok $tn\n";
+       }
+       $tn++;
+}