App-jl
view release on metacpan or search on metacpan
lib/App/jl.pm view on Meta::CPAN
if ($self->opt('yaml')) {
require 'YAML/Syck.pm'; ## no critic
YAML::Syck->import;
$YAML::Syck::SortKeys = 1;
}
}
sub _process {
my ($self) = @_;
my $decoded = eval {
$self->{_json}->decode($self->{__current_orig_line});
};
if ($@) {
return $self->{__current_orig_line};
}
else {
$self->_recursive_process($decoded);
return $self->_encode($decoded);
}
}
sub _encode {
my ($self, $decoded) = @_;
if ($self->opt('yaml')) {
return YAML::Syck::Dump($decoded);
}
else {
return $self->{_json}->encode($decoded);
}
}
sub _recursive_process {
my ($self, $decoded) = @_;
$self->_recursive_pre_process($decoded);
$self->{_recursive_call} = $MAX_RECURSIVE_CALL;
$self->_recursive_decode_json($decoded);
$self->_recursive_post_process($decoded);
}
sub _recursive_pre_process {
my ($self, $decoded) = @_;
$INVOKER->invoke(\&_trim => $decoded);
$self->_invoker(\&_split_lf => $decoded) if $self->opt('x');
}
sub _recursive_post_process {
my ($self, $decoded) = @_;
if ($self->opt('x')) {
$self->_invoker(\&_split_lf => $decoded);
}
if ($self->opt('xx')) {
$self->_invoker(\&_split_comma => $decoded);
}
if ($self->opt('xxx')) {
$self->_invoker(\&_split_label => $decoded);
}
if ($self->opt('xxxx') || $self->opt('timestamp_key')) {
if ($self->opt('xxxxx')) {
$INVOKER->invoke(\&_forcely_convert_timestamp => $decoded);
}
else {
$self->_invoker(\&_convert_timestamp => $decoded);
}
}
$INVOKER->invoke(\&_trim => $decoded);
}
my $LAST_VALUE;
sub _invoker {
my ($self, $code_ref, $hash) = @_;
$LAST_VALUE = '';
$INVOKER->massive_invoke($code_ref => $hash);
}
lib/App/jl.pm view on Meta::CPAN
}
sub _recursive_decode_json {
my ($self, $hash) = @_;
Sub::Data::Recursive->invoke(sub {
if ($self->{_recursive_call} > 0) {
my $orig = $_[0];
return if $orig =~ m!^\[\d+\]$!;
if (!_is_number($_[0])) {
my $decoded = eval {
$self->{_json}->decode($orig);
};
if (!$@) {
$_[0] = $decoded;
$self->{_recursive_call}--;
$self->_recursive_decode_json($_[0]); # recursive calling
}
}
}
} => $hash);
}
# copied from Data::Recursive::Encode
sub _is_number {
( run in 0.472 second using v1.01-cache-2.11-cpan-26ccb49234f )