File Coverage

blib/lib/Perl/PrereqScanner/Scanner/DistBuild.pm
Criterion Covered Total %
statement 31 31 100.0
branch 13 14 92.8
condition 3 6 50.0
subroutine 4 4 100.0
pod 0 1 0.0
total 51 56 91.0


line stmt bran cond sub pod time code
1             package Perl::PrereqScanner::Scanner::DistBuild;
2 1     1   796613 use strict;
  1         3  
  1         87  
3 1     1   7 use warnings;
  1         3  
  1         74  
4              
5             our $VERSION = '0.002';
6              
7 1     1   8 use Moo;
  1         2  
  1         5  
8             with 'Perl::PrereqScanner::Scanner';
9              
10             sub scan_for_prereqs {
11 21     21 0 129393 my ($self, $ppi_doc, $requirements) = @_;
12              
13             # Moose-based roles / inheritance
14             my @chunks =
15 18         504 map { [ $_->schildren ] }
16 18         200 grep { $_->child(0)->literal =~ m{\A(?:load_module|load_extension)\z} }
17 30         8480 grep { $_->child(0)->isa('PPI::Token::Word') }
18 21 100       47 @{ $ppi_doc->find('PPI::Statement') || [] };
  21         66  
19              
20 21         856 foreach my $hunk ( @chunks ) {
21 18         98 my ($load_module, @arguments) = @$hunk;
22              
23 18 50 66     94 pop @arguments if @arguments > 1 && $arguments[-1]->isa('PPI::Token::Structure') && $arguments[-1]->content eq ';';
      33        
24              
25 18 100       54 if (@arguments == 1) {
26 15 100       103 if ($arguments[0]->isa('PPI::Structure::List')) {
27 12         130 @arguments = $arguments[0]->children;
28             }
29 15 100       152 if ($arguments[0]->isa("PPI::Statement::Expression")) {
30 12         40 @arguments = $arguments[0]->children;
31             }
32             }
33              
34 18         84 my ($module_node, undef, $version_node) = grep { not $_->isa('PPI::Token::Whitespace') } @arguments;
  42         180  
35              
36 18         80 my ($module) = $module_node->string;
37              
38 18 100       208 if ($version_node) {
39 9 100       95 $version_node->simplify if $version_node->can('simplify');
40 9         101 my $version = $version_node->literal;
41 9         270 $requirements->add_minimum($module, $version);
42             } else {
43 9         47 $requirements->add_minimum($module, 0);
44             }
45             }
46             }
47              
48             1;
49              
50             __END__