File Coverage

blib/lib/MooX/Override.pm
Criterion Covered Total %
statement 26 37 70.2
branch 2 4 50.0
condition n/a
subroutine 8 13 61.5
pod n/a
total 36 54 66.6


line stmt bran cond sub pod time code
1             package MooX::Override;
2              
3 1     1   29706 use 5.008;
  1         2  
4 1     1   3 use strict;
  1         2  
  1         19  
5 1     1   3 use warnings;
  1         1  
  1         21  
6 1     1   2 no warnings qw( once void uninitialized );
  1         1  
  1         41  
7              
8             BEGIN {
9 1     1   2 $MooX::Override::AUTHORITY = 'cpan:TOBYINK';
10 1         229 $MooX::Override::VERSION = '0.003';
11             }
12              
13             sub import
14             {
15             goto &_import_class
16 2 50   2   1120 if grep { $_ eq '-class' } @_;
  4         14  
17             goto &_import_role
18 2 50       2 if grep { $_ eq '-role' } @_;
  4         12  
19            
20 0         0 require Carp;
21 0         0 Carp::confess("MooX::Override requires an indication of -class or -role; stopped");
22             }
23              
24             sub _import_class
25             {
26 0     0   0 my $target = caller;
27            
28 0         0 foreach my $fun (qw( override super ))
29             {
30             Moo::_install_tracked(
31             $target,
32             $fun,
33             sub {
34 0     0   0 require Class::Method::ModifiersX::Override;
35 0         0 my $orig = Class::Method::ModifiersX::Override->can($fun);
36 0         0 goto $orig;
37             },
38 0         0 );
39             }
40             }
41              
42             sub _import_role
43             {
44 2     2   4 my $target = caller;
45 2         2 my $INFO = \%Role::Tiny::INFO;
46            
47             Moo::Role::_install_tracked(
48             $target,
49             'override',
50             sub {
51 2     2   475 require Class::Method::ModifiersX::Override;
52 2         6 my $sub = Class::Method::ModifiersX::Override::_mk_around($target, pop);
53 2         1 push @{ $INFO->{$target}{modifiers} }, [ around => @_, $sub ];
  2         9  
54 2         26 'Moo::Role'->_maybe_reset_handlemoose($target);
55             },
56 2         11 );
57            
58             Moo::_install_tracked(
59             $target,
60             'super',
61             sub {
62 0     0     require Class::Method::ModifiersX::Override;
        0      
        0      
63 0           my $orig = 'Class::Method::ModifiersX::Override'->can('super');
64 0           goto $orig;
65             },
66 2         41 );
67             }
68              
69             1;
70              
71              
72             __END__