File Coverage

blib/lib/Devel/StashHook.pm
Criterion Covered Total %
statement 26 28 92.8
branch 2 2 100.0
condition n/a
subroutine 7 8 87.5
pod n/a
total 35 38 92.1


line stmt bran cond sub pod time code
1             package Devel::StashHook;
2              
3 2     2   63638 use 5.010000;
  2         24  
  2         87  
4              
5 2     2   12 use warnings;
  2         5  
  2         66  
6 2     2   10 use strict;
  2         7  
  2         89  
7 2     2   2032 use Variable::Magic qw(wizard cast);
  2         2812  
  2         561  
8              
9             our $VERSION = '0.01_002';
10             my $packages;
11              
12             sub import {
13 2     2   23 my ($class, $info) = @_;
14            
15 2         17 for my $package (keys %$info){
16 1         4 $packages->{$package} = $info->{$package};
17              
18             my $wizard = wizard(
19             'store' => sub {
20 11     11   342378 my ($stash,undef,$name) = @_;
21 11 100       45 if(exists $stash->{$name}){
22 6         37 $packages->{$package}->({ name => $name, action => 'modify' });
23             } else {
24 5         33 $packages->{$package}->({ name => $name, action => 'add' });
25             }
26             },
27             'delete' => sub {
28 0     0   0 my ($stash,undef,$name) = @_;
29 0         0 $packages->{$package}->({ name => $name, action => 'remove' });
30             },
31 1         8 );
32              
33             {
34 2     2   16 no strict 'refs';
  2         4  
  2         168  
  1         35  
35 1         2 cast(%{"${package}::"}, $wizard);
  1         26  
36             }
37             }
38             }
39              
40             1;
41             __END__