File Coverage

blib/lib/Catmandu/Fix/hash.pm
Criterion Covered Total %
statement 19 19 100.0
branch n/a
condition n/a
subroutine 7 7 100.0
pod n/a
total 26 26 100.0


line stmt bran cond sub pod time code
1             package Catmandu::Fix::hash;
2              
3 1     1   106764 use Catmandu::Sane;
  1         6  
  1         6  
4              
5             our $VERSION = '1.2020';
6              
7 1     1   7 use Moo;
  1         2  
  1         6  
8 1     1   750 use Catmandu::Util::Path qw(as_path);
  1         2  
  1         52  
9 1     1   7 use namespace::clean;
  1         2  
  1         3  
10 1     1   698 use Catmandu::Fix::Has;
  1         3  
  1         5  
11              
12             with 'Catmandu::Fix::Builder';
13              
14             has path => (fix_arg => 1);
15              
16             sub _build_fixer {
17 1     1   16 my ($self) = @_;
18 1     1   6 as_path($self->path)->updater(if_array_ref => sub {+{@{$_[0]}}});
  1         2  
  1         21  
19             }
20              
21             1;
22              
23             __END__
24              
25             =pod
26              
27             =head1 NAME
28              
29             Catmandu::Fix::hash - creates a hash out of an array
30              
31             =head1 SYNOPSIS
32              
33             # tags => ['name', 'Peter', 'age', 12]
34             hash(tags)
35             # tags => {name => 'Peter', age => 12}
36              
37             =head1 DESCRIPTION
38              
39             This fix functions transforms array fields to hashes. The number of array
40             elements must be even and fields to be used as field values must be simple
41             strings. String fields and hash fields are left unchanged.
42              
43             =head1 SEE ALSO
44              
45             L<Catmandu::Fix::array>, L<Catmandu::Fix>
46              
47             =cut