File Coverage

blib/lib/exact/lib.pm
Criterion Covered Total %
statement 29 29 100.0
branch 7 10 70.0
condition 1 2 50.0
subroutine 6 6 100.0
pod n/a
total 43 47 91.4


line stmt bran cond sub pod time code
1             package exact::lib;
2             # ABSTRACT: Compile-time @INC manipulation extension for exact
3              
4 2     2   504850 use 5.014;
  2         10  
5 2     2   876 use exact;
  2         65750  
  2         18  
6 2     2   7794 use FindBin;
  2         2913  
  2         2194  
7              
8             our $VERSION = '1.05'; # VERSION
9              
10             sub import {
11 1     1   16 my ( $self, $params ) = @_;
12              
13 1   50     2 $params //= 'lib';
14 1         10 $params =~ s/(^\s+|\s+$)//g;
15              
16 1         5 for my $dir ( map { s/\\ / /g; $_ } split( /(?
  3         7  
  3         2  
17 3 100       9 if ( index( $dir, '/', 0 ) == 0 ) {
    100          
18 1         2 _add_to_inc($dir);
19             }
20             elsif ( index( $dir, '.', 0 ) == 0 ) {
21 1         4 _add_to_inc( $FindBin::Bin . '/' . $dir );
22             }
23             else {
24 1         2 my $found_dir = _find_dir($dir);
25 1 50       3 _add_to_inc($found_dir) if ($found_dir);
26             }
27             }
28             }
29              
30             sub _add_to_inc {
31 2     2   3 for my $lib (@_) {
32 2 50       3 unshift( @INC, $lib ) unless ( grep { $_ eq $lib } @INC );
  17         22  
33             }
34             }
35              
36             sub _find_dir {
37 1     1   3 my ($suffix) = @_;
38              
39 1         4 my @search_path = split( '/', $FindBin::Bin );
40 1         3 while ( @search_path > 0 ) {
41 6         11 my $dir = join( '/', @search_path, $suffix );
42 6 50       464 return $dir if ( -d $dir );
43 6         15 pop @search_path;
44             }
45              
46 1         2 return;
47             }
48              
49             1;
50              
51             __END__