File Coverage

blib/lib/Catmandu/Fix/flatten.pm
Criterion Covered Total %
statement 25 25 100.0
branch 2 2 100.0
condition n/a
subroutine 8 8 100.0
pod n/a
total 35 35 100.0


line stmt bran cond sub pod time code
1              
2             use Catmandu::Sane;
3 1     1   99188  
  1         3  
  1         7  
4             our $VERSION = '1.2019';
5              
6             use Moo;
7 1     1   11 use Catmandu::Util::Path qw(as_path);
  1         2  
  1         6  
8 1     1   976 use Catmandu::Util qw(is_array_ref);
  1         2  
  1         59  
9 1     1   6 use namespace::clean;
  1         2  
  1         36  
10 1     1   5 use Catmandu::Fix::Has;
  1         3  
  1         3  
11 1     1   807  
  1         3  
  1         6  
12             has path => (fix_arg => 1);
13              
14             with 'Catmandu::Fix::Builder';
15              
16             my ($self) = @_;
17             as_path($self->path)->updater(
18 1     1   12 if_array_ref => sub {
19             my $data = $_[0];
20             $data = [map {is_array_ref($_) ? @$_ : $_} @$data]
21 1     1   3 while grep {is_array_ref($_)} @$data;
22 10 100       25 $data;
23 1         4 }
  17         37  
24 1         17 );
25             }
26 1         21  
27             1;
28              
29              
30             =pod
31              
32             =head1 NAME
33              
34             Catmandu::Fix::flatten - flatten a nested array field
35              
36             =head1 SYNOPSIS
37              
38             # {deep => [1, [2, 3], 4, [5, [6, 7]]]}
39             flatten(deep)
40             # {deep => [1, 2, 3, 4, 5, 6, 7]}
41              
42             =head1 SEE ALSO
43              
44             L<Catmandu::Fix>
45              
46             =cut