File Coverage

blib/lib/Rope/Lazier.pm
Criterion Covered Total %
statement 26 26 100.0
branch 4 6 66.6
condition 2 2 100.0
subroutine 8 8 100.0
pod n/a
total 40 42 95.2


line stmt bran cond sub pod time code
1             package Rope::Lazier;
2              
3 2     2   1111 use strict; use warnings;
  2     2   4  
  2         72  
  2         10  
  2         4  
  2         108  
4 2     2   1387 use Types::Standard;
  2         360712  
  2         23  
5 2     2   6267 use Rope::Pro;
  2         6  
  2         273  
6              
7             my (%PRO);
8              
9             BEGIN {
10 2     2   52 %PRO = Rope::Pro->new(
11             function_map => {
12             pro => 'prototyped',
13             prop => 'property',
14             props => 'properties',
15             fun => 'function',
16             pri => 'private',
17             ro => 'readonly',
18             ar => 'around',
19             af => 'after',
20             be => 'before'
21             },
22             property_map => {
23             v => 'value',
24             i => 'initable',
25             w => 'writeable',
26             c => 'configurable',
27             e => 'enumerable',
28             p => 'private',
29             o => 'readonly',
30             r => 'required',
31             t => 'type',
32             b => 'builder',
33             tr => 'trigger',
34             dtr => 'delete_trigger',
35             pr => 'predicate',
36             cl => 'clearer',
37             hv => 'handles_via',
38             h => 'handles'
39             }
40             );
41             }
42              
43             sub import {
44 2     2   29 my ($caller, $pkg, @props) = (scalar caller, @_);
45              
46 2 50       10 @props = (keys(%{$PRO{property_map}}), keys(%{$PRO{function_map}})) if (! scalar @props);
  2         11  
  2         9  
47              
48 2         7 for my $p (@props) {
49 50 100       141 if ($PRO{property_map}{$p}) {
    50          
50             $PRO{keyword}($caller, $p, sub {
51 10     10   477080 my ($param) = @_;
52 10   100     96 return ($PRO{property_map}{$p} => ($param // 1));
53 32         143 });
54             } elsif ($PRO{function_map}{$p}) {
55             $PRO{keyword}($caller, $p, sub {
56 4     4   14 my (@params) = @_;
57 4         13 my $meth = $PRO{function_map}{$p};
58 4         43 $caller->$meth(@params);
59 18         72 });
60             }
61             }
62             }
63              
64             1;
65              
66             __END__