File Coverage

lib/Perl/PrereqScanner/NotQuiteLite/Parser/ModuleRuntime.pm
Criterion Covered Total %
statement 37 38 97.3
branch 9 12 75.0
condition 4 6 66.6
subroutine 9 9 100.0
pod 0 6 0.0
total 59 71 83.1


line stmt bran cond sub pod time code
1             package Perl::PrereqScanner::NotQuiteLite::Parser::ModuleRuntime;
2              
3 83     83   1379 use strict;
  83         185  
  83         2186  
4 83     83   401 use warnings;
  83         194  
  83         1870  
5 83     83   422 use Perl::PrereqScanner::NotQuiteLite::Util;
  83         281  
  83         44325  
6              
7             my %known_functions = map {$_ => 1} qw/
8             require_module use_module use_package_optimistically
9             /;
10              
11             sub register { return {
12 82     82 0 494 use => {
13             'Module::Runtime' => 'parse_module_runtime_args',
14             },
15             }}
16              
17             sub register_fqfn { return {
18 734     734 0 2281 map { "Module::Runtime::".$_ => "parse_".$_."_args" }
  2202         9064  
19             keys %known_functions
20             }}
21              
22             sub parse_module_runtime_args {
23 9     9 0 28 my ($class, $c, $used_module, $raw_tokens) = @_;
24              
25 9         31 my $tokens = convert_string_tokens($raw_tokens);
26 9 50       36 if (is_version($tokens->[0])) {
27 0         0 $c->add($used_module => shift @$tokens);
28             }
29              
30 9         30 for my $token (@$tokens) {
31 17 100       74 next if ref $token;
32              
33 8 50       25 if ($known_functions{$token}) {
34 8         48 $c->register_keyword_parser(
35             $token,
36             [$class, 'parse_'.$token.'_args', $used_module],
37             );
38             }
39             }
40             }
41              
42             sub parse_require_module_args {
43 1     1 0 5 my ($class, $c, $used_module, $raw_tokens) = @_;
44              
45 1         5 my $tokens = convert_string_tokens($raw_tokens);
46 1         3 shift @$tokens; # function
47 1         3 my $module = shift @$tokens;
48 1 50       4 return unless is_module_name($module);
49 1         4 $c->add_conditional($module => 0);
50             }
51              
52             sub parse_use_module_args {
53 6     6 0 18 my ($class, $c, $used_module, $raw_tokens) = @_;
54              
55 6         21 my $tokens = convert_string_tokens($raw_tokens);
56 6         14 shift @$tokens; # function
57 6         20 my ($module, undef, $version) = @$tokens;
58 6 100 66     22 $version = 0 unless $version and is_version($version);
59 6         23 $c->add_conditional($module => $version);
60             }
61              
62             sub parse_use_package_optimistically_args {
63 2     2 0 7 my ($class, $c, $used_module, $raw_tokens) = @_;
64              
65 2         9 my $tokens = convert_string_tokens($raw_tokens);
66 2         5 shift @$tokens; # function
67 2         7 my ($module, undef, $version) = @$tokens;
68 2 100 66     11 $version = 0 unless $version and is_version($version);
69 2         9 $c->add_conditional($module => $version);
70             }
71              
72             1;
73              
74             __END__