File Coverage

blib/lib/Pegex/CPAN/Packages/Grammar.pm
Criterion Covered Total %
statement 7 8 87.5
branch n/a
condition n/a
subroutine 3 4 75.0
pod 2 2 100.0
total 12 14 85.7


line stmt bran cond sub pod time code
1             package Pegex::CPAN::Packages::Grammar;
2              
3 1     1   5 use Pegex::Base;
  1         2  
  1         6  
4             extends 'Pegex::Grammar';
5              
6 1     1   2628 use constant file => 'share/cpan-packages.pgx';
  1         2  
  1         468  
7              
8             sub text { # Generated/Inlined by Pegex::Grammar (0.43)
9 1     1 1 372 <<'...';
10             packages-file:
11             meta-section
12             blank-line
13             index-section
14              
15             meta-section: key-value-pair+
16              
17             key-value-pair: key / ':' SPACE+ / value EOL
18             key: /
19             (File
20             |URL
21             |Description
22             |Columns
23             |Intended-For
24             |Written-By
25             |Line-Count
26             |Last-Updated
27             )
28             /
29              
30             value: / ( ANY* ) /
31              
32             package-name: / ( NS+ ) +/
33             version-number: / ( NS+ ) +/
34             dist-path: / ( NS+ ) EOL/
35              
36             ws: / SPACE /
37              
38             index-section: index-line+
39              
40             index-line:
41             package-name
42             version-number
43             dist-path
44              
45             blank-line: / BLANK* EOL /
46             ...
47             }
48              
49             sub tree { # Generated/Inlined by Pegex::Grammar (0.43)
50             {
51 0     0 1   '+toprule' => 'packages_file',
52             'EOL' => {
53             '.rgx' => qr/\G\r?\n/
54             },
55             'blank_line' => {
56             '.rgx' => qr/\G[\ \t]*\r?\n/
57             },
58             'dist_path' => {
59             '.rgx' => qr/\G(\S+)\r?\n/
60             },
61             'index_line' => {
62             '.all' => [
63             {
64             '.ref' => 'package_name'
65             },
66             {
67             '.ref' => 'version_number'
68             },
69             {
70             '.ref' => 'dist_path'
71             }
72             ]
73             },
74             'index_section' => {
75             '+min' => 1,
76             '.ref' => 'index_line'
77             },
78             'key' => {
79             '.rgx' => qr/\G(File|URL|Description|Columns|Intended-For|Written-By|Line-Count|Last-Updated)/
80             },
81             'key_value_pair' => {
82             '.all' => [
83             {
84             '.ref' => 'key'
85             },
86             {
87             '.rgx' => qr/\G:\ +/
88             },
89             {
90             '.ref' => 'value'
91             },
92             {
93             '.ref' => 'EOL'
94             }
95             ]
96             },
97             'meta_section' => {
98             '+min' => 1,
99             '.ref' => 'key_value_pair'
100             },
101             'package_name' => {
102             '.rgx' => qr/\G(\S+)\ +/
103             },
104             'packages_file' => {
105             '.all' => [
106             {
107             '.ref' => 'meta_section'
108             },
109             {
110             '.ref' => 'blank_line'
111             },
112             {
113             '.ref' => 'index_section'
114             }
115             ]
116             },
117             'value' => {
118             '.rgx' => qr/\G(.*)/
119             },
120             'version_number' => {
121             '.rgx' => qr/\G(\S+)\ +/
122             }
123             }
124             }
125              
126             1;