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   219074 use 5.006;
  3         29  
4 3     3   18 use strict;
  3         6  
  3         93  
5 3     3   18 use warnings;
  3         5  
  3         204  
6              
7             our $VERSION = '1.00';
8              
9 3     3   2066 use Type::Params qw/compile_named_oo compile/;
  3         362962  
  3         41  
10 3     3   1343 use Types::Standard qw/CodeRef/;
  3         8  
  3         27  
11 3     3   2305 use base 'Import::Export';
  3         8  
  3         1663  
12              
13             our %EX = (
14             cpo => [qw/all/]
15             );
16              
17             sub cpo {
18 2     2 1 26632 my (%params, %compile, %build) = @_;
19 2         9 for my $key (keys %params) {
20 4         2301 $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       32 : ($_ => $params{$key}{$_})
25 2         10 } keys %{$params{$key}})
26 4 100       27 : compile(@{$params{$key}});
  2         13  
27             }
28 2         11549 return compile_named_oo(%compile)->(%build);
29             }
30              
31             1;
32              
33             __END__