File Coverage

lib/Path/Extended.pm
Criterion Covered Total %
statement 31 31 100.0
branch 8 12 66.6
condition n/a
subroutine 8 8 100.0
pod n/a
total 47 51 92.1


line stmt bran cond sub pod time code
1             package Path::Extended;
2              
3 27     27   405491 use strict;
  27         52  
  27         993  
4 27     27   119 use warnings;
  27         42  
  27         718  
5 27     27   12632 use Sub::Install;
  27         39030  
  27         135  
6              
7             our $VERSION = '0.23';
8              
9             sub import {
10 28     28   233 my ($class, @imports) = @_;
11              
12 28         58 my $caller = caller;
13              
14 28         59 my $file_class = $class.'::File';
15 28         76 my $dir_class = $class.'::Dir';
16 28 50       1447 eval "require $file_class" or die $@;
17 28 50       1835 eval "require $dir_class" or die $@;
18              
19             my %map = (
20 81     81   52061 file => sub { $file_class->new(@_) },
21 87     87   62478 dir => sub { $dir_class->new(@_) },
22             file_or_dir => sub {
23 6     6   2959 my @args = @_;
24 6         27 my $file = $file_class->new(@args);
25 6 100       29 return $dir_class->new(@args) if -d $file->absolute;
26 4         12 return $file;
27             },
28             dir_or_file => sub {
29 6     6   2308 my @args = @_;
30 6         21 my $dir = $dir_class->new(@args);
31 6 100       22 return $file_class->new(@args) if -f $dir->absolute;
32 4         13 return $dir;
33             },
34 28         533 );
35              
36 28 50       216 @imports = qw( file dir file_or_dir dir_or_file ) unless @imports;
37 28         84 foreach my $name (@imports) {
38 112 50       3040 next unless $map{$name};
39              
40 112         493 Sub::Install::reinstall_sub({
41             as => $name,
42             into => $caller,
43             code => $map{$name},
44             });
45 112         5407 Sub::Install::reinstall_sub({
46             as => $name,
47             into => $class,
48             code => $map{$name},
49             });
50             }
51             }
52              
53             1;
54              
55             __END__