File Coverage

blib/lib/Object/Tiny/Lvalue.pm
Criterion Covered Total %
statement 20 20 100.0
branch 4 6 66.6
condition 2 3 66.6
subroutine 7 7 100.0
pod 0 1 0.0
total 33 37 89.1


line stmt bran cond sub pod time code
1 2     2   1302 use 5.006;
  2         6  
  2         82  
2 2     2   9 use strict;
  2         2  
  2         75  
3 2     2   9 use warnings;
  2         5  
  2         582  
4              
5             package Object::Tiny::Lvalue;
6             $Object::Tiny::Lvalue::VERSION = '1.082';
7             # ABSTRACT: minimal class builder with lvalue accessors
8              
9             sub import {
10 3 50   3   489 return unless shift eq __PACKAGE__;
11 3         7 my $pkg = caller;
12 5 100 66     63 eval join "\n", (
13             "package $pkg;",
14             'our @ISA = "Object::Tiny::Lvalue" unless @ISA;',
15             map {
16 3     2   9 defined and /\A[^\W\d]\w*\z/ or die "Invalid accessor name '$_'";
  2     4   10  
  4         5826  
17 4         254 "sub $_ : lvalue { \$_[0]->{$_} }";
18             } @_
19             );
20 2 50       7 die "Failed to generate $pkg" if $@;
21 2         34 return 1;
22             }
23              
24             sub new {
25 2     2 0 2232 my $class = shift;
26 2         8 bless { @_ }, $class;
27             }
28              
29             1;
30              
31             __END__