File Coverage

blib/lib/Catmandu/ArrayIterator.pm
Criterion Covered Total %
statement 25 25 100.0
branch n/a
condition n/a
subroutine 11 11 100.0
pod 5 6 83.3
total 41 42 97.6


line stmt bran cond sub pod time code
1              
2             use Catmandu::Sane;
3 64     64   367686  
  64         131  
  64         394  
4             our $VERSION = '1.2018';
5              
6             use Catmandu::Util qw(check_array_ref);
7 64     64   409 use Role::Tiny::With;
  64         125  
  64         2862  
8 64     64   7134 use namespace::clean;
  64         4387  
  64         2536  
9 64     64   356  
  64         131  
  64         434  
10             with 'Catmandu::Iterable';
11              
12             bless check_array_ref($_[1]), $_[0];
13             }
14 22     22 1 2475  
15             my ($self) = @_;
16             my $i = 0;
17             sub {
18 11     11 0 21 $self->[$i++];
19 11         17 };
20             }
21 25     25   306  
22 11         54 [@{$_[0]}];
23             }
24              
25             scalar @{$_[0]};
26 17     17 1 118 }
  17         52  
27              
28             my ($self, $cb) = @_;
29             $cb->($_) for @$self;
30 2     2 1 1734 $self->count;
  2         8  
31             }
32              
33             $_[0]->[0];
34 1     1 1 3 }
35 1         4  
36 1         1644 1;
37              
38              
39             =pod
40 1     1 1 5  
41             =head1 NAME
42              
43             Catmandu::ArrayIterator - Convert an arrayref to an Iterable object
44              
45             =head1 SYNOPSIS
46              
47             use Catmandu::ArrayIterator;
48              
49             my $it = Catmandu::ArrayIterator->new([{n => 1}, {n => 2}, {n => 3}]);
50              
51             $it->each( sub {
52             my $item = $_[0];
53             # Very complicated routine
54             ...
55             });
56              
57             $it->[0];
58             # => {n => 1}
59             $it->first;
60             # => {n => 1}
61             $it->map(sub { $_[0]->{n} + 1 })->to_array;
62             # => [2, 3, 4]
63             $it->count
64             # => 3
65              
66             =head1 METHODS
67              
68             =head2 new($arrayRef)
69              
70             Create a new iterator object from $arrayRef.
71              
72             =head2 to_array
73              
74             Return all the items in the Iterator as an ARRAY ref.
75              
76             =head2 each(\&callback)
77              
78             For each item in the Iterator execute the callback function with the item as first argument. Returns
79             the number of items in the Iterator.
80              
81             =head2 count
82              
83             Return the count of all the items in the Iterator.
84              
85             =head2 first
86              
87             Return the first item from the Iterator.
88              
89             =head1 SEE ALSO
90              
91             L<Catmandu::Iterable>, L<Catmandu::Iterator>
92              
93             =cut