File Coverage

blib/lib/MooX/Keyword.pm
Criterion Covered Total %
statement 36 37 97.3
branch 6 10 60.0
condition n/a
subroutine 10 10 100.0
pod 0 1 0.0
total 52 58 89.6


line stmt bran cond sub pod time code
1             package MooX::Keyword;
2 3     3   204864 use 5.006; use strict; use warnings; our $VERSION = '0.03';
  3     3   14  
  3     3   14  
  3         6  
  3         53  
  3         14  
  3         3  
  3         96  
3 3     3   1161 use MooX::ReturnModifiers; use Anonymous::Object;
  3     3   1247  
  3         118  
  3         1182  
  3         25751  
  3         467  
4              
5             sub import {
6 4 100   4   843 my ( $package, %import ) = (shift, ref $_[0] ? %{ $_[0] } : @_);
  2         10  
7 4         10 my $target = caller;
8 4         18 my $moo = Anonymous::Object->new(object_name => 'MooX::Keyword')->hash_to_object_context({
9             return_modifiers( $target )
10             }); # *\o/*
11            
12 4 100       261639 if ($import{extends}) {
13 1         18 $moo->extends($import{extends});
14 1         354 %import = $import{extends}->keyword_meta;
15 1         2 delete $import{extends};
16             }
17              
18             keyword($target, $moo, 'keyword_meta', { builder => sub {
19 1     1   2 my $m = shift;
20 1         4 return %import;
21 4         38 }});
22 4         19 keyword($target, $moo, $_, $import{$_}) for keys %import;
23            
24 4         238 return 1;
25             }
26              
27             sub keyword {
28 3     3   21 no strict 'refs';
  3         5  
  3         407  
29 7     7 0 21 my ($target, $moo, $keyword, $params) = @_;
30 7 50       31 die 'no builder for ${keyword}' unless $params->{builder};
31 7 0       24 for ($keyword, $params->{alias} ? ref $params->{alias} ? @{ $params->{alias} } : $params->{alias} : ()) {
  0 50       0  
32 7         43 *{"${target}::${_}"} = sub {
33 6     6   35571 $params->{builder}->($moo, @_);
34 7         24 };
35             }
36             }
37              
38             1;
39              
40             __END__