File Coverage

lib/Perl/PrereqScanner/NotQuiteLite/Parser/Plack.pm
Criterion Covered Total %
statement 31 31 100.0
branch 10 12 83.3
condition 2 3 66.6
subroutine 7 7 100.0
pod 0 4 0.0
total 50 57 87.7


line stmt bran cond sub pod time code
1             package Perl::PrereqScanner::NotQuiteLite::Parser::Plack;
2              
3 94     94   1749 use strict;
  94         178  
  94         2907  
4 94     94   372 use warnings;
  94         176  
  94         3737  
5 94     94   410 use Perl::PrereqScanner::NotQuiteLite::Util;
  94         140  
  94         44119  
6              
7             sub register { return {
8 93     93 0 474 use => {
9             'Plack::Builder' => 'parse_plack_builder_args',
10             },
11             }}
12              
13             sub parse_plack_builder_args {
14 9     9 0 21 my ($class, $c, $used_module, $raw_tokens) = @_;
15              
16             # TODO: support add_middleware(_if) methods?
17              
18 9         68 $c->register_keyword_parser(
19             'enable',
20             [$class, 'parse_enable_args', $used_module],
21             );
22 9         24 $c->register_keyword_parser(
23             'enable_if',
24             [$class, 'parse_enable_if_args', $used_module],
25             );
26             }
27              
28             sub parse_enable_args {
29 3     3 0 6 my ($class, $c, $used_module, $raw_tokens) = @_;
30              
31 3         7 my $tokens = convert_string_tokens($raw_tokens);
32 3         6 shift @$tokens; # discard 'enable' itself
33              
34 3 50       7 my $module = shift @$tokens or return;
35 3 100       9 if ($module =~ s/^\+//) {
36 1         3 $c->add($module => 0);
37             } else {
38 2         5 $module =~ s/^Plack::Middleware:://;
39 2         8 $c->add("Plack::Middleware::".$module => 0);
40             }
41             }
42              
43             sub parse_enable_if_args {
44 6     6 0 14 my ($class, $c, $used_module, $raw_tokens) = @_;
45              
46 6         18 while(my $token = shift @$raw_tokens) {
47 15 100 66     63 last if $token->[1] eq 'COMMA' or ref $token->[0];
48             }
49 6 100       33 shift @$raw_tokens if $raw_tokens->[0][1] eq 'COMMA';
50              
51 6         26 my $tokens = convert_string_tokens($raw_tokens);
52              
53 6 50       17 my $module = shift @$tokens or return;
54 6 100       39 if ($module =~ s/^\+//) {
55 2         7 $c->add($module => 0);
56             } else {
57 4         9 $module =~ s/^Plack::Middleware:://;
58 4         16 $c->add("Plack::Middleware::".$module => 0);
59             }
60             }
61              
62             1;
63              
64             __END__