File Coverage

blib/lib/Pegex/vCard/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::vCard::Grammar;
2              
3 1     1   6 use Pegex::Base;
  1         2  
  1         7  
4             extends 'Pegex::Grammar';
5              
6 1     1   2857 use constant file => 'share/vcard.pgx';
  1         2  
  1         337  
7              
8             sub text { # Generated/Inlined by Pegex::Grammar (0.43)
9 1     1 1 276 <<'...';
10             vcard:
11             begin-line
12             version-line
13             info-line+
14             end-line
15              
16             begin-line: 'BEGIN:VCARD' EOL
17             version-line: 'VERSION:2.1' EOL
18             info-line: key-path COLON info-value EOL
19             end-line: 'END:VCARD' EOL
20              
21             key-path: / (!END) ([ UPPERS SEMI EQUAL DASH ]+) /
22              
23             info-value: / ( ANY+ ) /
24             ...
25             }
26              
27             sub tree { # Generated/Inlined by Pegex::Grammar (0.43)
28             {
29 0     0 1   '+toprule' => 'vcard',
30             'COLON' => {
31             '.rgx' => qr/\G:/
32             },
33             'EOL' => {
34             '.rgx' => qr/\G\r?\n/
35             },
36             'begin_line' => {
37             '.all' => [
38             {
39             '.rgx' => qr/\GBEGIN:VCARD/
40             },
41             {
42             '.ref' => 'EOL'
43             }
44             ]
45             },
46             'end_line' => {
47             '.all' => [
48             {
49             '.rgx' => qr/\GEND:VCARD/
50             },
51             {
52             '.ref' => 'EOL'
53             }
54             ]
55             },
56             'info_line' => {
57             '.all' => [
58             {
59             '.ref' => 'key_path'
60             },
61             {
62             '.ref' => 'COLON'
63             },
64             {
65             '.ref' => 'info_value'
66             },
67             {
68             '.ref' => 'EOL'
69             }
70             ]
71             },
72             'info_value' => {
73             '.rgx' => qr/\G(.+)/
74             },
75             'key_path' => {
76             '.rgx' => qr/\G(?!END)([A-Z;=\-]+)/
77             },
78             'vcard' => {
79             '.all' => [
80             {
81             '.ref' => 'begin_line'
82             },
83             {
84             '.ref' => 'version_line'
85             },
86             {
87             '+min' => 1,
88             '.ref' => 'info_line'
89             },
90             {
91             '.ref' => 'end_line'
92             }
93             ]
94             },
95             'version_line' => {
96             '.all' => [
97             {
98             '.rgx' => qr/\GVERSION:2\.1/
99             },
100             {
101             '.ref' => 'EOL'
102             }
103             ]
104             }
105             }
106             }
107              
108             1;