File Coverage

lib/Perl/PrereqScanner/NotQuiteLite/Parser/ClassAccessor.pm
Criterion Covered Total %
statement 28 39 71.7
branch 5 16 31.2
condition 1 8 12.5
subroutine 6 6 100.0
pod 0 3 0.0
total 40 72 55.5


line stmt bran cond sub pod time code
1             package Perl::PrereqScanner::NotQuiteLite::Parser::ClassAccessor;
2              
3 94     94   1973 use strict;
  94         182  
  94         2984  
4 94     94   404 use warnings;
  94         178  
  94         3728  
5 94     94   395 use Perl::PrereqScanner::NotQuiteLite::Util;
  94         138  
  94         47177  
6              
7             sub register {{
8 93     93 0 676 use => {
9             'Class::Accessor' => 'parse_class_accessor_args',
10             'Class::Accessor::Fast' => 'parse_class_accessor_args',
11             'Class::Accessor::Faster' => 'parse_class_accessor_args',
12             'Class::XSAccessor::Compat' => 'parse_class_accessor_args',
13             }
14             }}
15              
16             sub parse_class_accessor_args {
17 2     2 0 4 my ($class, $c, $used_module, $raw_tokens) = @_;
18              
19 2         10 my $tokens = convert_string_tokens($raw_tokens);
20 2 50       5 if (is_version($tokens->[0])) {
21 0         0 $c->add($used_module => shift @$tokens);
22             }
23 2         5 while(my $token = shift @$tokens) {
24 2 50       13 if ($token =~ /^(?:antlers|moose-?like)$/i) {
25 2         9 $c->register_keyword_parser(
26             'extends',
27             [$class, 'parse_extends_args', $used_module],
28             );
29 2         7 last;
30             }
31             }
32             }
33              
34             sub parse_extends_args {
35 2     2 0 4 my ($class, $c, $used_module, $raw_tokens) = @_;
36              
37 2         5 my $tokens = convert_string_tokens($raw_tokens);
38 2         4 shift @$tokens; # discard extends, with;
39              
40 2         3 my $prev;
41 2         5 for my $token (@$tokens) {
42 4 100       8 if (!ref $token) {
43 2         6 $c->add($token => 0);
44 2         73 $prev = $token;
45 2         4 next;
46             }
47 2   50     6 my $desc = $token->[1] || '';
48 2 50       9 if ($desc eq '{}') {
49 0 0         my @hash_tokens = @{$token->[0] || []};
  0            
50 0           for(my $i = 0, my $len = @hash_tokens; $i < $len; $i++) {
51 0 0 0       if ($hash_tokens[$i][0] eq '-version' and $i < $len - 2) {
52 0           my $maybe_version_token = $hash_tokens[$i + 2];
53 0           my $maybe_version = $maybe_version_token->[0];
54 0 0         if (ref $maybe_version) {
55 0           $maybe_version = $maybe_version->[0];
56             }
57 0 0 0       if ($prev and is_version($maybe_version)) {
58 0           $c->add($prev => $maybe_version);
59             }
60             }
61             }
62             }
63             }
64             }
65              
66             1;
67              
68             __END__