File Coverage

blib/lib/Aspect/Pointcut/Highest.pm
Criterion Covered Total %
statement 26 26 100.0
branch n/a
condition n/a
subroutine 11 11 100.0
pod 4 4 100.0
total 41 41 100.0


line stmt bran cond sub pod time code
1             package Aspect::Pointcut::Highest;
2              
3 26     26   144 use strict;
  26         49  
  26         1074  
4 26     26   142 use Carp ();
  26         42  
  26         398  
5 26     26   143 use Scalar::Util ();
  26         55  
  26         383  
6 26     26   144 use Params::Util ();
  26         43  
  26         381  
7 26     26   12802 use Aspect::Guard ();
  26         66  
  26         448  
8 26     26   155 use Aspect::Pointcut ();
  26         53  
  26         5410  
9              
10             our $VERSION = '1.04';
11             our @ISA = 'Aspect::Pointcut';
12              
13              
14              
15              
16              
17             ######################################################################
18             # Constructor Methods
19              
20             sub new {
21 3     3 1 87 bless [ ], $_[0];
22             }
23              
24              
25              
26              
27              
28             ######################################################################
29             # Weaving Methods
30              
31             # The highest pointcut is a run-time only pointcut
32             sub curry_weave {
33 1     1 1 4 return;
34             }
35              
36             # Call pointcuts curry away to null, because they are the basis
37             # for which methods to hook in the first place. Any method called
38             # at run-time has already been checked.
39             sub curry_runtime {
40 3     3 1 16 bless [ 0 ], $_[0];
41             }
42              
43              
44              
45              
46              
47             ######################################################################
48             # Runtime Methods
49              
50             sub compile_runtime {
51 1     1 1 2 my $depth = 0;
52             return sub {
53 4     4   30 $_->{highest} = Aspect::Guard->new( sub { $depth-- } );
  4         22  
54 4         128 return ! $depth++;
55 1         7 };
56             }
57              
58             1;
59              
60             __END__