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 )