File Coverage

blib/lib/Number/Iterator.pm
Criterion Covered Total %
statement 27 33 81.8
branch 5 10 50.0
condition n/a
subroutine 10 12 83.3
pod 0 5 0.0
total 42 60 70.0


line stmt bran cond sub pod time code
1             package Number::Iterator;
2              
3 2     2   176429 use 5.006;
  2         8  
4 2     2   15 use strict;
  2         5  
  2         46  
5 2     2   6 use warnings;
  2         4  
  2         235  
6              
7             our $VERSION = '1.02';
8              
9             use overload (
10             '""' => sub {
11 7     7   46 $_[0]->{value};
12             },
13             '++' => sub {
14 6     6   58 $_[0]->iterate();
15             },
16             '--' => sub {
17 2     2   8 $_[0]->deiterate();
18             }
19 2     2   1040 );
  2         2733  
  2         16  
20              
21             sub new {
22 2     2 0 142010 my ($self, %args) = @_;
23 2 50       8 $args{value} = 0 unless $args{value};
24 2         10 return bless \%args, $self;
25             }
26              
27             sub iterate {
28 6     6 0 9 my ($self) = @_;
29 6 100       13 if (defined $self->{iterate}) {
30 3         7 $self->{iterate}($self);
31             } else {
32 3         5 $self->{value} += $self->{interval};
33             }
34 6         16 return $self;
35             }
36              
37             sub deiterate {
38 2     2 0 3 my ($self) = @_;
39 2 100       6 if (defined $self->{deiterate}) {
40 1         4 $self->{deiterate}($self);
41             } else {
42 1         2 $self->{value} -= $self->{interval};
43             }
44 2         6 return $self;
45             }
46              
47             sub value {
48 0     0 0   my ($self, $val) = @_;
49 0 0         $self->{value} = $val if (defined $val);
50 0           return $self->{value};
51             }
52              
53             sub interval {
54 0     0 0   my ($self, $val) = @_;
55 0 0         $self->{interval} = $val if (defined $val);
56 0           return $self->{interval};
57             }
58              
59             __END__;