File Coverage

blib/lib/Object/FromData/Array.pm
Criterion Covered Total %
statement 27 35 77.1
branch 4 6 66.6
condition n/a
subroutine 7 11 63.6
pod 8 8 100.0
total 46 60 76.6


line stmt bran cond sub pod time code
1             package Object::FromData::Array;
2              
3 3     3   12 use strict;
  3         3  
  3         63  
4 3     3   8 use warnings;
  3         1  
  3         839  
5              
6             our $VERSION = '0.03';
7              
8             sub _new {
9 4     4   5 my ( $class, $arg_for ) = @_;
10              
11 4         5 my $arrayref = $arg_for->{ref};
12 4         8 my $self = {
13             array => [],
14             current_index => 0,
15             };
16 4         8 foreach my $item (@$arrayref) {
17 16 100       29 if ( 'ARRAY' eq ref $item ) {
    50          
18 1         1 push @{ $self->{array} } => $class->_new( { ref => $item } );
  1         4  
19             }
20             elsif ( 'HASH' eq ref $item ) {
21 0         0 push @{ $self->{array} } =>
  0         0  
22             Object::FromData::Hash->_new( { ref => $item } );
23             }
24             else {
25 15         10 push @{ $self->{array} } => $item; # accept it raw
  15         21  
26             }
27             }
28 4         11 return bless $self => $class;
29             }
30              
31             sub current_index {
32 0     0 1 0 my $self = shift;
33 0         0 return $self->{current_index};
34             }
35              
36             sub num_elems {
37 4     4 1 15 my $self = shift;
38 4         4 return scalar @{ $self->{array} };
  4         15  
39             }
40              
41             sub reset {
42 1     1 1 2 my $self = shift;
43 1         1 $self->{current_index} = 0;
44             }
45              
46             sub all {
47 0     0 1 0 my $self = shift;
48 0         0 return @{ $self->{array} };
  0         0  
49             }
50              
51             sub has_more {
52 19     19 1 854 my $self = shift;
53 19         15 my $arrayref = $self->{array};
54 19         46 return $self->{current_index} <= $#$arrayref;
55             }
56              
57             sub next {
58 13     13 1 15 my $self = shift;
59 13 50       14 return unless $self->has_more;
60 13         33 return $self->{array}->[ $self->{current_index}++ ];
61             }
62              
63       0 1   sub is_hashref { }
64 0     0 1   sub is_arrayref {1}
65              
66             1;
67              
68             __END__