File Coverage

blib/lib/Class/Property/RW/Lazy.pm
Criterion Covered Total %
statement 36 36 100.0
branch 2 4 50.0
condition n/a
subroutine 6 6 100.0
pod n/a
total 44 46 95.6


line stmt bran cond sub pod time code
1             package Class::Property::RW::Lazy;
2 1     1   6 use strict; use warnings FATAL => 'all';
  1     1   1  
  1         40  
  1         5  
  1         2  
  1         43  
3 1     1   5 use parent 'Class::Property::RW';
  1         1  
  1         21  
4            
5             sub TIESCALAR
6             {
7 3     3   5 my( $class, $object, $field, $init, $flag_ref ) = @_;
8 3         22 return bless \{
9             'object' => $object
10             , 'field' => $field
11             , 'init' => $init
12             , 'flag_ref' => $flag_ref
13             }, $class;
14             }
15            
16             sub STORE
17             {
18 1     1   3 my( $self, $value ) = @_;
19 1         3 ${$self}->{'object'}->{${$self}->{'field'}} = $value;
  1         6  
  1         4  
20 1 50       3 ${${$self}->{'flag_ref'}}++ unless ${${$self}->{'flag_ref'}};
  1         3  
  1         3  
  1         2  
  1         6  
21 1         5 return;
22             }
23            
24             sub FETCH
25             {
26 2     2   30 my( $self ) = @_;
27            
28 2 50       3 if( not ${${$self}->{'flag_ref'}} )
  2         2  
  2         18  
29             {
30 2         2 ${$self}->{'object'}->{${$self}->{'field'}} = ${$self}->{'init'}->(${$self}->{'object'});
  2         4  
  2         10  
  2         10  
  2         4  
31 2         4 ${${$self}->{'flag_ref'}}++;
  2         2  
  2         4  
32             }
33            
34 2         3 return ${$self}->{'object'}->{${$self}->{'field'}};
  2         10  
  2         3  
35             }
36            
37             1;