summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/English.pm1
-rw-r--r--lib/Sys/Syslog.pm3
-rw-r--r--lib/Test.pm4
-rw-r--r--lib/Text/Wrap.pm132
4 files changed, 67 insertions, 73 deletions
diff --git a/lib/English.pm b/lib/English.pm
index 7aa0d84617..9f29a487dc 100644
--- a/lib/English.pm
+++ b/lib/English.pm
@@ -168,6 +168,7 @@ sub import {
*PERL_VERSION = *] ;
*ACCUMULATOR = *^A ;
+ *COMPILING = *^C ;
*DEBUGGING = *^D ;
*SYSTEM_FD_MAX = *^F ;
*INPLACE_EDIT = *^I ;
diff --git a/lib/Sys/Syslog.pm b/lib/Sys/Syslog.pm
index e8faac7126..f0cbb71924 100644
--- a/lib/Sys/Syslog.pm
+++ b/lib/Sys/Syslog.pm
@@ -124,7 +124,8 @@ sub openlog {
$lo_ndelay = $logopt =~ /\bndelay\b/;
$lo_cons = $logopt =~ /\bcons\b/;
$lo_nowait = $logopt =~ /\bnowait\b/;
- &connect if $lo_ndelay;
+ return 1 unless $lo_ndelay;
+ &connect;
}
sub closelog {
diff --git a/lib/Test.pm b/lib/Test.pm
index 22f947acf1..daf6e4e127 100644
--- a/lib/Test.pm
+++ b/lib/Test.pm
@@ -63,7 +63,7 @@ sub ok ($;$$) {
} else {
$expected = to_value(shift);
my ($regex,$ignore);
- if ((ref($expected)||'') eq 're') {
+ if ((ref($expected)||'') eq 'Regexp') {
$ok = $result =~ /$expected/;
} elsif (($regex) = ($expected =~ m,^ / (.+) / $,sx) or
($ignore, $regex) = ($expected =~ m,^ m([^\w\s]) (.+) \1 $,sx)) {
@@ -96,7 +96,7 @@ sub ok ($;$$) {
my $prefix = "Test $ntest";
print $TESTOUT "# $prefix got: '$result' ($context)\n";
$prefix = ' ' x (length($prefix) - 5);
- if ((ref($expected)||'') eq 're') {
+ if ((ref($expected)||'') eq 'Regexp') {
$expected = 'qr/'.$expected.'/'
} else {
$expected = "'$expected'";
diff --git a/lib/Text/Wrap.pm b/lib/Text/Wrap.pm
index 8566bb6a16..046dfaee33 100644
--- a/lib/Text/Wrap.pm
+++ b/lib/Text/Wrap.pm
@@ -1,69 +1,65 @@
package Text::Wrap;
-use vars qw(@ISA @EXPORT @EXPORT_OK $VERSION $columns $debug $min_wrap_width);
-use strict;
-use Exporter;
+require Exporter;
-$VERSION = "97.03";
@ISA = qw(Exporter);
-@EXPORT = qw(wrap);
-@EXPORT_OK = qw($columns $tabstop $min_wrap_width fill);
+@EXPORT = qw(wrap fill);
+@EXPORT_OK = qw($columns $break $huge);
-use Text::Tabs qw(expand unexpand $tabstop);
+$VERSION = 98.112902;
+use vars qw($VERSION $columns $debug $break $huge);
+use strict;
BEGIN {
- $columns = 76; # <= screen width
- $debug = 0;
- # minimum wrap width (leaders will be shortened to accomodate this)
- $min_wrap_width = int($columns/5);
+ $columns = 76; # <= screen width
+ $debug = 0;
+ $break = '\s';
+ $huge = 'wrap'; # alternatively: 'die'
}
+use Text::Tabs qw(expand unexpand);
+
sub wrap
{
- my ($ip, $xp, @t) = @_;
-
- my @rv;
- my $t = expand(join(" ",@t));
-
- my $xll = $columns - length(expand($xp)) - 1;
- while ($xll < $min_wrap_width) {
- chop $xp;
- $xll = $columns - length(expand($xp)) - 1;
- }
-
- my $ll = $columns - length(expand($ip)) - 1;
- while ($ll < $min_wrap_width) {
- chop $ip;
- $ll = $columns - length(expand($ip)) - 1;
- }
- my $lead = $ip;
- my $nl = "";
-
- $t =~ s/^\s+//;
- while(length($t) > $ll) {
- # remove up to a line length of things that
- # aren't new lines and tabs.
- if ($t =~ s/^([^\n]{0,$ll})(\s|\Z(?!\n))//) {
- my ($l,$r) = ($1,$2);
- $l =~ s/\s+$//;
- print "WRAP $lead$l..($r)\n" if $debug;
- push @rv, unexpand($lead . $l), "\n";
-
- } elsif ($t =~ s/^([^\n]{$ll})//) {
- print "SPLIT $lead$1..\n" if $debug;
- push @rv, unexpand($lead . $1),"\n";
+ my ($ip, $xp, @t) = @_;
+
+ my $r = "";
+ my $t = expand(join(" ",@t));
+ my $lead = $ip;
+ my $ll = $columns - length(expand($ip)) - 1;
+ my $nll = $columns - length(expand($xp)) - 1;
+ my $nl = "";
+ my $remainder = "";
+
+ while ($t !~ /^\s*$/) {
+ if ($t =~ s/^([^\n]{0,$ll})($break|\Z(?!\n))//xm) {
+ $r .= unexpand($nl . $lead . $1);
+ $remainder = $2;
+ } elsif ($huge eq 'wrap' && $t =~ s/^([^\n]{$ll})//) {
+ $r .= unexpand($nl . $lead . $1);
+ $remainder = "\n";
+ } elsif ($huge eq 'die') {
+ die "couldn't wrap '$t'";
+ } else {
+ die "This shouldn't happen";
+ }
+
+ $lead = $xp;
+ $ll = $nll;
+ $nl = "\n";
}
- # reset the leader
- $lead = $xp;
- $ll = $xll;
- $t =~ s/^\s+//;
- }
- print "TAIL $lead$t\n" if $debug;
- push @rv, $lead.$t if $t ne "";
- return join '', @rv;
-}
+ $r .= $remainder;
+ print "-----------$r---------\n" if $debug;
+
+ print "Finish up with '$lead', '$t'\n" if $debug;
+
+ $r .= $lead . $t if $t ne "";
+
+ print "-----------$r---------\n" if $debug;;
+ return $r;
+}
sub fill
{
@@ -95,25 +91,28 @@ 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 $tabstop fill);
+ use Text::Wrap qw(wrap $columns $huge);
$columns = 132;
- $tabstop = 4;
-
- print fill($initial_tab, $subsequent_tab, @text);
- print fill("", "", `cat book`);
+ $huge = 'die';
+ $huge = 'wrap';
=head1 DESCRIPTION
Text::Wrap::wrap() is a very simple paragraph formatter. It formats a
single paragraph at a time by breaking lines at word boundries.
Indentation is controlled for the first line ($initial_tab) and
-all subsquent lines ($subsequent_tab) independently. $Text::Wrap::columns
-should be set to the full width of your output device (default is 76).
-$Text::Wrap::min_wrap_width controls the minimum number of columns that
-are reserved for the wrapped text (default is 15). Indentation will
-be reduced to accomodate this value.
+all subsquent lines ($subsequent_tab) independently.
+
+Lines are wrapped at $Text::Wrap::columns columns.
+$Text::Wrap::columns should be set to the full width of your output device.
+
+When words that are longer than $columns are encountered, they
+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
@@ -126,15 +125,8 @@ it acts like wrap().
print wrap("\t","","This is a bit of text that forms
a normal book-style paragraph");
-=head1 BUGS
-
-It's not clear what the correct behavior should be when Wrap() is
-presented with a word that is longer than a line. The previous
-behavior was to die. Now the word is now split at line-length.
-
=head1 AUTHOR
David Muir Sharnoff <muir@idiom.com> with help from Tim Pierce and
-others. Updated by Jacqui Caren.
+many many others.
-=cut