This is my patch patch.1g for perl5.001.
[p5sagit/p5-mst-13.2.git] / lib / Text / Tabs.pm
CommitLineData
a0d0e21e 1#
2# expand and unexpand tabs as per the unix expand and
3# unexpand programs.
4#
f06db76b 5# expand and unexpand operate on arrays of lines.
a0d0e21e 6#
7# David Muir Sharnoff <muir@idiom.com>
f06db76b 8# Version: 4/19/95
a0d0e21e 9#
10
75f92628 11package Text::Tabs;
a0d0e21e 12
13require Exporter;
14
15@ISA = (Exporter);
16@EXPORT = qw(expand unexpand $tabstop);
17
18$tabstop = 8;
19
20sub expand
21{
f06db76b 22 my (@l) = @_;
23 my $l, @k;
24 my $nl;
25 for $l (@l) {
26 $nl = $/ if chomp($l);
27 @k = split($/,$l);
28 for $_ (@k) {
29 1 while s/^([^\t]*)(\t+)/
30 $1 . (" " x
31 ($tabstop * length($2)
32 - (length($1) % $tabstop)))
33 /e;
34 }
35 $l = join("\n",@k).$nl;
a0d0e21e 36 }
f06db76b 37 return @l if $#l > 0;
38 return $l[0];
a0d0e21e 39}
40
41sub unexpand
42{
f06db76b 43 my (@l) = &expand(@_);
a0d0e21e 44 my @e;
f06db76b 45 my $k, @k;
46 my $nl;
47 for $k (@l) {
48 $nl = $/ if chomp($k);
49 @k = split($/,$k);
50 for $x (@k) {
51 @e = split(/(.{$tabstop})/,$x);
52 for $_ (@e) {
53 s/ +$/\t/;
54 }
55 $x = join('',@e);
a0d0e21e 56 }
f06db76b 57 $k = join("\n",@k).$nl;
a0d0e21e 58 }
f06db76b 59 return @l if $#l > 0;
60 return $l[0];
a0d0e21e 61}
62
631;