File Coverage

blib/lib/Sub/Alias.pm
Criterion Covered Total %
statement 41 41 100.0
branch 6 6 100.0
condition 3 6 50.0
subroutine 10 10 100.0
pod 1 1 100.0
total 61 64 95.3


line stmt bran cond sub pod time code
1             package Sub::Alias;
2 5     5   128018 use warnings;
  5         13  
  5         180  
3 5     5   28 use strict;
  5         11  
  5         170  
4 5     5   121 use 5.008;
  5         22  
  5         325  
5              
6 5         53 use Sub::Exporter -setup => {
7             exports => [ 'alias' ],
8             groups => { default => [ 'alias' ] }
9 5     5   5290 };
  5         87780  
10              
11 5     5   8143 use Devel::BeginLift qw(alias);
  5         71512  
  5         32  
12              
13 5     5   5585 use Devel::Declare qw();
  5         26698  
  5         1267  
14              
15             our $VERSION = '0.03';
16              
17             sub alias {
18 12     12 1 1625 my ($new_name, $old_name) = @_;
19 12         58 my $caller = caller;
20              
21 12 100 66     67 if (defined($new_name) && defined($old_name)) {
22 9         32 _alias($new_name, $old_name, $caller);
23             }
24             else {
25 3         9 my $line = Devel::Declare::get_linestr;
26 3         7 my $offset = Devel::Declare::get_linestr_offset;
27              
28 3         5 my $line2 = $line;
29 3 100       18 if ($line2 =~ s/alias/Sub::Alias::_alias/) {
30 2         5 substr($line, $offset, 0) = $line2;
31 2         6 Devel::Declare::set_linestr($line);
32             }
33             }
34 12         8570 return 1;
35             }
36              
37              
38             sub _alias {
39 9     9   14 my ($new_name, $old_name, $caller) = @_;
40 9   33     26 $caller ||= caller;
41              
42 5     5   37 no strict;
  5         11  
  5         178  
43 5     5   24 no warnings;
  5         9  
  5         475  
44 9 100       18 *{"$caller\::${new_name}"} = ref($old_name) ? $old_name : *{"$caller\::${old_name}"};
  9         39  
  8         17  
45              
46 9         16 return 1;
47             }
48              
49             1;
50              
51             __END__