Server : nginx/1.24.0 System : Linux ip-172-31-33-48 6.14.0-1011-aws #11~24.04.1-Ubuntu SMP Fri Aug 1 02:07:25 UTC 2025 x86_64 User : www-data ( 33) PHP Version : 8.3.6 Disable Function : NONE Directory : /lib/x86_64-linux-gnu/perl-base/Text/ |
Upload File : |
use strict; use warnings; package Text::Tabs; BEGIN { require Exporter; *import = \&Exporter::import } our @EXPORT = qw( expand unexpand $tabstop ); our $VERSION = '2021.0814'; our $SUBVERSION = 'modern'; # back-compat vestige our $tabstop = 8; sub expand { my @l; my $pad; for ( @_ ) { defined or do { push @l, ''; next }; my $s = ''; for (split(/^/m, $_, -1)) { my $offs; for (split(/\t/, $_, -1)) { if (defined $offs) { $pad = $tabstop - $offs % $tabstop; $s .= " " x $pad; } $s .= $_; $offs = () = /\PM/g; } } push(@l, $s); } return @l if wantarray; return $l[0]; } sub unexpand { my (@l) = @_; my @e; my $x; my $line; my @lines; my $lastbit; my $ts_as_space = " " x $tabstop; for $x (@l) { defined $x or next; @lines = split("\n", $x, -1); for $line (@lines) { $line = expand($line); @e = split(/((?:\PM\pM*){$tabstop})/,$line,-1); $lastbit = pop(@e); $lastbit = '' unless defined $lastbit; $lastbit = "\t" if $lastbit eq $ts_as_space; for $_ (@e) { s/ +$/\t/; } $line = join('',@e, $lastbit); } $x = join("\n", @lines); } return @l if wantarray; return $l[0]; } 1; __END__