App-Table2YAML

 view release on metacpan or  search on metacpan

lib/App/Table2YAML/CLI.pm  view on Meta::CPAN


sub _parse_opts_fixedwidth {
    my $self = shift;
    my %opt  = splice @_;

    foreach (q(field_offset)) {
        if ( exists $opt{$_} ) {
            my $values = delete $opt{$_};
            my @value;
            foreach my $value ( @{$values} ) {
                push @value, split m{[\s,]+}msx, $value;
            }
            @value = grep { defined && $_ ne q() } @value;
            $self->opts->{$_} = [@value];
        }
        else {
            my $msg = qq('--$_' is mandatory for '--input_type=fixedwidth');
            push @{ $self->errors() }, $msg;
        }
    } ## end foreach (q(field_offset))

lib/App/Table2YAML/Loader/AsciiTable.pm  view on Meta::CPAN

        chomp $record;

        my $length = length $record;
        if ( index( $record, $sep ) == 0 ) {
            $record = substr $record, 1, $length;
        }
        if ( substr $record, -1 eq q($sep) ) {
            $record = substr $record, 0, $length - 2;
        }

        my @row = split m{\Q$sep\E}msx, $record;
        if ( @row == 1 && $row[0] =~ m{^-+(?:\+-+)*$}msx ) {
            next;
        }

        foreach (@row) {
            s{\A\p{IsSpace}+}{}msx;
            s{\p{IsSpace}+\z}{}msx;
            s{\\vert(?:\{\})?}{|}gmsx;
        }

t/app-table2yaml.t  view on Meta::CPAN

my %offset = (
    ascii7 => [ 4, 4, 4,  25, ],
    simple => [ 4, 7, 16, 20, 14, 18, 12, 14, 7, ],
);
my ( %yml, @test );
foreach my $file ( keys %test_file ) {
    my ( $name, $dir, $suffix ) = fileparse( $file, qr{\.[^.]*$} );

    if ( $suffix eq q(.yml) ) {
        my $yml = do { local ( @ARGV, $/ ) = $file; <> };
        $yml{$name} = [ split m{\n}msx, $yml ];
        next;
    }

    my $type = basename($dir);
    my %opt  = (
        $name => {
            input      => $file,
            input_type => $type,
            testname   => catdir( $type, basename($file) ),
        }



( run in 0.900 second using v1.01-cache-2.11-cpan-f5b5a18a01a )