App-tabify

 view release on metacpan or  search on metacpan

lib/App/tabify.pm  view on Meta::CPAN

use 5.010;
use strict;
use warnings;

use Getopt::Long::Complete qw(GetOptionsWithCompletion);
use POSIX qw(ceil);

my %Opts = (
    tab_width      => 8,
    in_place       => 0,
    #backup_ext     => undef,
);

sub parse_cmdline {
    my $res = GetOptionsWithCompletion(
        sub {},
        'tab-width|w=i' => \$Opts{tab_width},
        #'in-place|i'  => sub { # XXX in-place|i:s doesn't work?
        #    $Opts{in_place} = 1;
        #    #$Opts{backup_ext} = $_[1] if defined $_[1];
        #},
        'version|v'     => sub {
            no warnings 'once';
            say "tabify version $main::VERSION";
            exit 0;
        },
        'help|h'        => sub {
            print <<USAGE;
Usage:
  (un)tabify [OPTIONS] <FILE...>

lib/App/tabify.pm  view on Meta::CPAN

    my $which = shift; # either 'tabify' or 'untabify'

    my $oldargv = '';
    my $argvout;

    my $tw = $Opts{tab_width};

  LINE:
    while (<>) {
        #if ($ARGV ne $oldargv) {
        #    if (defined($Opts{backup_ext}) && $Opts{backup_ext} ne '') {
        #        rename $ARGV, "$ARGV$Opts{backup_ext}";
        #        open $argvout, ">", $ARGV;
        #        select $argvout;
        #        $oldargv = $ARGV;
        #    }
        #}
        if ($which eq 'untabify') {
            1 while s|^(.*?)\t|$1 .
                (" " x (ceil((length($1)+1)/$tw)*$tw - length($1)))|em;
        } else {
            s|^([ ]{2,})|



( run in 0.512 second using v1.01-cache-2.11-cpan-49f99fa48dc )