�PNG  IHDR��;���IDATx��ܻn�0���K�� �)(�pA��� ���7�LeG{�� �§㻢|��ذaÆ 6lذaÆ 6lذaÆ 6lom��$^�y���ذag�5bÆ 6lذaÆ 6lذa{���� 6lذaÆ �`����}H�Fkm�,�m����Ӫ���ô�ô!� �x�|'ܢ˟;�E:���9�&ᶒ�}�{�v]�n&�6� �h��_��t�ڠ͵-ҫ���Z;��Z$�.�P���k�ž)�!��o���>}l�eQfJ�T��u і���چ��\��X=8��Rن4`Vw�l�>����n�G�^��i�s��"ms�$�u��i��?w�bs[m�6�K4���O���.�4��%����/����b�C%��t ��M�ז� �-l�G6�mrz2���s�%�9��s@���-�k�9�=���)������k�B5����\��+͂�Zsٲ ��Rn��~G���R���C����� �wIcI��n7jJ���hۛNCS|���j0��8y�iHKֶۛ�k�Ɉ+;Sz������L/��F�*\��Ԕ�#"5��m�2��[S��������=�g��n�a�P�e�ғ�L�� lذaÆ 6l�^k��̱aÆ 6lذaÆ 6lذa;���� �_��ذaÆ 6lذaÆ 6lذaÆ ���R���IEND�B` package Text::Tabs; require Exporter; @ISA = (Exporter); @EXPORT = qw(expand unexpand $tabstop); use vars qw($VERSION $SUBVERSION $tabstop $debug); $VERSION = 2013.0523; $SUBVERSION = 'modern'; use strict; use 5.010_000; BEGIN { $tabstop = 8; $debug = 0; } my $CHUNK = qr/\X/; sub _xlen (_) { scalar(() = $_[0] =~ /$CHUNK/g) } sub _xpos (_) { _xlen( substr( $_[0], 0, pos($_[0]) ) ) } sub expand { my @l; my $pad; for ( @_ ) { my $s = ''; for (split(/^/m, $_, -1)) { my $offs = 0; s{\t}{ # this works on both 5.10 and 5.11 $pad = $tabstop - (_xlen(${^PREMATCH}) + $offs) % $tabstop; # this works on 5.11, but fails on 5.10 #XXX# $pad = $tabstop - (_xpos() + $offs) % $tabstop; $offs += $pad - 1; " " x $pad; }peg; $s .= $_; } 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) { @lines = split("\n", $x, -1); for $line (@lines) { $line = expand($line); @e = split(/(${CHUNK}{$tabstop})/,$line,-1); $lastbit = pop(@e); $lastbit = '' unless defined $lastbit; $lastbit = "\t" if $lastbit eq $ts_as_space; for $_ (@e) { if ($debug) { my $x = $_; $x =~ s/\t/^I\t/gs; print "sub on '$x'\n"; } s/ +$/\t/; } $line = join('',@e, $lastbit); } $x = join("\n", @lines); } return @l if wantarray; return $l[0]; } 1; __END__ sub expand { my (@l) = @_; for $_ (@l) { 1 while s/(^|\n)([^\t\n]*)(\t+)/ $1. $2 . (" " x ($tabstop * length($3) - (length($2) % $tabstop))) /sex; } return @l if wantarray; return $l[0]; }