File Coverage

blib/lib/Catmandu/Fix/join_field.pm
Criterion Covered Total %
statement 24 24 100.0
branch n/a
condition n/a
subroutine 8 8 100.0
pod n/a
total 32 32 100.0


line stmt bran cond sub pod time code
1              
2             use Catmandu::Sane;
3 1     1   95909  
  1         3  
  1         5  
4             our $VERSION = '1.2018';
5              
6             use Moo;
7 1     1   6 use Catmandu::Util::Path qw(as_path);
  1         2  
  1         5  
8 1     1   641 use Catmandu::Util qw(is_value);
  1         2  
  1         46  
9 1     1   5 use namespace::clean;
  1         2  
  1         31  
10 1     1   4 use Catmandu::Fix::Has;
  1         2  
  1         3  
11 1     1   599  
  1         2  
  1         5  
12             has path => (fix_arg => 1);
13             has join_char => (fix_arg => 1, default => sub {''});
14              
15             with 'Catmandu::Fix::Builder';
16              
17             my ($self) = @_;
18             my $join_char = $self->join_char;
19 5     5   36 as_path($self->path)->updater(
20 5         9 if_array_ref => sub {
21             join $join_char, grep {is_value($_)} @{$_[0]};
22             }
23 5     5   7 );
  20         114  
  5         13  
24             }
25 5         44  
26             1;
27              
28              
29             =pod
30              
31             =head1 NAME
32              
33             Catmandu::Fix::join_field - join the ARRAY values of a field into a string
34              
35             =head1 SYNOPSIS
36              
37             # Join the array values of a field into a string. E.g. foo => [1,2,3]
38             join_field(foo, /) # foo => "1/2/3"
39              
40             =head1 SEE ALSO
41              
42             L<Catmandu::Fix>
43              
44             =cut