File Coverage

blib/lib/Data/Enumerator/Range.pm
Criterion Covered Total %
statement 9 22 40.9
branch 0 4 0.0
condition n/a
subroutine 3 7 42.8
pod 0 2 0.0
total 12 35 34.2


line stmt bran cond sub pod time code
1             package Data::Enumerator::Range;
2 2     2   6 use strict;
  2         2  
  2         52  
3 2     2   8 use warnings;
  2         4  
  2         58  
4 2     2   6 use base qw/Data::Enumerator::Base/;
  2         2  
  2         337  
5              
6             sub new {
7 0     0 0   my ( $class, $start, $end, $succ ) = @_;
8 0           return bless {
9             start => $start,
10             end => $end,
11             succ => $succ,
12             }, $class;
13             }
14              
15             sub iterator {
16 0     0 0   my ( $self ) = @_;
17 0           my $counter = $self->{start};
18 0           my $end = $self->{end};
19 0           my $succ = $self->{succ};
20 0 0   0     my $succ_func = (ref $succ) ? $succ : sub{ $_[0]+$succ};
  0            
21             return sub{
22 0 0   0     return $self->LAST if $counter >= $end;
23 0           my $prev = $counter;
24 0           $counter = $succ_func->($counter);
25 0           return $prev;
26 0           };
27             }
28             1;