File Coverage

blib/lib/Compiled/Params/OO.pm
Criterion Covered Total %
statement 25 25 100.0
branch 4 4 100.0
condition n/a
subroutine 7 7 100.0
pod 1 1 100.0
total 37 37 100.0


line stmt bran cond sub pod time code
1             package Compiled::Params::OO;
2              
3 3     3   204943 use 5.006;
  3         26  
4 3     3   16 use strict;
  3         5  
  3         83  
5 3     3   16 use warnings;
  3         6  
  3         165  
6              
7             our $VERSION = '0.04';
8              
9 3     3   1875 use Type::Params qw/compile_named_oo compile/;
  3         349241  
  3         30  
10 3     3   1149 use Types::Standard qw/CodeRef/;
  3         7  
  3         13  
11 3     3   1568 use base 'Import::Export';
  3         6  
  3         1439  
12              
13             our %EX = (
14             cpo => [qw/all/]
15             );
16              
17             sub cpo {
18 2     2 1 7652 my (%params, %compile, %build) = @_;
19 2         9 for my $key (keys %params) {
20 4         2453 $compile{$key} = CodeRef;
21             $build{$key} = ref $params{$key} eq 'HASH'
22             ? compile_named_oo( map { ref $params{$key}{$_} eq 'HASH'
23             ? ($_ => delete $params{$key}{$_}{type} => $params{$key}{$_})
24 8 100       34 : ($_ => $params{$key}{$_})
25 2         10 } keys %{$params{$key}})
26 4 100       27 : compile(@{$params{$key}});
  2         9  
27             }
28 2         12753 return compile_named_oo(%compile)->(%build);
29             }
30              
31             1;
32              
33             __END__