Data-Dumper-AutoEncode

 view release on metacpan or  search on metacpan

lib/Data/Dumper/AutoEncode.pm  view on Meta::CPAN


=head2 ENCODING : utf8

Set this option if you need another encoding;

=head2 BEFORE_HOOK / AFTER_HOOK

Set code ref for hooks which excuted around encoding

    $Data::Dumper::AutoEncode::BEFORE_HOOK = sub {
        my $value = $_[0]; # decoded
        $value =~ s/\x{2019}/'/g;
        return $value;
    };

    $Data::Dumper::AutoEncode::AFTER_HOOK = sub {
        my $value = $_[0]; # encoded
        // do something
        return $value;
    };

=head2 CHECK_ALREADY_ENCODED : false

If you set this option true value, check a target before encoding. And do encode in case of decoded value.

=head2 DO_NOT_PROCESS_NUMERIC_VALUE : true

By default, numeric values are ignored (do nothing).

=head2 FLAG_STR

Additional string (prefix) for encoded values.


t/01_basic.t  view on Meta::CPAN

use strict;
use warnings;
use Test::More 0.88;
use Data::Dumper::AutoEncode;
use Encode qw//;

{
    my $decoded_str = Encode::decode_utf8('富士は日本一の山');
    like(
        Dumper($decoded_str),
        qr/\Q\x{5bcc}\x{58eb}\x{306f}\x{65e5}\x{672c}\x{4e00}\x{306e}\x{5c71}/,
        'Dumper'
    );

    like eDumper($decoded_str), qr/富士は日本一の山/, 'eDumper';
}

{
    my $decoded_str = Encode::decode_utf8('富士は日本一の山');
    my @hoge = ($decoded_str, $decoded_str);
    like(
        eDumper($decoded_str, $decoded_str),
        qr/^\$VAR1 = '富士は日本一の山';\n\$VAR2 = '富士は日本一の山';\n$/,
        'eDumper few args'
    );
}

{
    my $str = '富士は日本一の山';
    Encode::from_to($str, 'utf8', 'CP932');
    my $decoded_str = Encode::decode('CP932', $str);
    like(
        Dumper($decoded_str),
        qr/\Q\x{5bcc}\x{58eb}\x{306f}\x{65e5}\x{672c}\x{4e00}\x{306e}\x{5c71}/,
        'Dumper CP932'
    );
    local $Data::Dumper::AutoEncode::ENCODING = 'CP932';
    like eDumper($decoded_str), qr/\$VAR1.+/, 'eDumper CP932';
}

{
    like(
        eDumper({ foo => 123 }),
        qr/'foo' => 123/,
        'numeric value'
    );
}

{
    local $Data::Dumper::AutoEncode::CHECK_ALREADY_ENCODED = 1;
    my $ret = eDumper({ Encode::decode_utf8('富士は日本一の山') => 'エベレストは世界一の山' });
    like $ret, qr/富士は日本一の山/, 'ex decoded';
    like $ret, qr/エベレストは世界一の山/, 'ex encoded';
}

{
    local $Data::Dumper::AutoEncode::CHECK_ALREADY_ENCODED = 1;
    local $Data::Dumper::AutoEncode::FLAG_STR = 'auto_encoded:';
    is eDumper(Encode::decode_utf8('富士は日本一の山')), q|$VAR1 = 'auto_encoded:富士は日本一の山';|."\n", 'FLAG_STR';
    is eDumper('富士は日本一の山'), q|$VAR1 = '富士は日本一の山';|."\n", 'No FLAG_STR';
}

t/02_rt-125316.t  view on Meta::CPAN

        $value =~ s/\x{2019}/'/g;
        return $value;
    };

    $Data::Dumper::AutoEncode::AFTER_HOOK = sub {
        my $value = $_[0];
        $value =~ s/$/!/g;
        return $value;
    };

    my $decoded_str = Encode::decode_utf8('But April’s instant stardom');
    like eDumper($decoded_str), qr/But April\\'s instant stardom!/, 'eDumper';
}

done_testing;

t/03_export.t  view on Meta::CPAN

use strict;
use warnings;
use Test::More;
use Encode qw//;

# Specify ot override Dumper function as same as eDumper
use Data::Dumper::AutoEncode 'eDumper';

{
    my $decoded_str = Encode::decode_utf8('復活祭');
    like eDumper($decoded_str), qr/復活祭/;
}

{
    eval { Dumper('復活祭') };
    like $@, qr/Undefined subroutine [^\s]+::Dumper called/;
}

done_testing;

t/04_override_dumper.t  view on Meta::CPAN

use strict;
use warnings;
use Test::More;
use Encode qw//;

# Specify ot override Dumper function as same as eDumper
use Data::Dumper::AutoEncode '-dumper';

{
    my $decoded_str = Encode::decode_utf8('復活祭');
    like eDumper($decoded_str), qr/復活祭/;
    is Dumper($decoded_str), eDumper($decoded_str);
}

done_testing;



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