File Coverage

blib/lib/Spike/Object.pm
Criterion Covered Total %
statement 30 30 100.0
branch 2 2 100.0
condition 3 9 33.3
subroutine 10 10 100.0
pod 0 3 0.0
total 45 54 83.3


line stmt bran cond sub pod time code
1             package Spike::Object;
2              
3 2     2   9 use strict;
  2         2  
  2         46  
4 2     2   6 use warnings;
  2         1  
  2         157  
5              
6             sub new {
7 15     15 0 22 my $proto = shift;
8 15   33     34 my $class = ref $proto || $proto;
9              
10 15         37 return bless { @_ }, $class;
11             }
12              
13             sub mk_accessors {
14 5     5 0 10 my $proto = shift;
15 5   33     23 my $class = ref $proto || $proto;
16              
17 5         10 for my $name (@_) {
18 2     2   6 no strict 'refs';
  2         2  
  2         227  
19              
20 11         48 *{"${class}::$name"} = sub {
21 200     200   121 my $self = shift;
        200      
22              
23 200 100       224 return $self->{$name} = shift if @_;
24 197         357 return $self->{$name};
25             }
26 11         82 }
27             }
28              
29             sub mk_ro_accessors {
30 4     4 0 5 my $proto = shift;
31 4   33     20 my $class = ref $proto || $proto;
32              
33 4         5 for my $name (@_) {
34 2     2   13 no strict 'refs';
  2         2  
  2         168  
35              
36 5         40 *{"${class}::$name"} = sub {
37 14     14   11 my $self = shift;
38 14         25 return $self->{$name};
39             }
40 5         12 }
41             }
42              
43             1;