File Coverage

blib/lib/Template/Mustache/Parser.pm
Criterion Covered Total %
statement 2165 2660 81.3
branch 645 1558 41.4
condition 178 423 42.0
subroutine 113 118 95.7
pod 0 1 0.0
total 3101 4760 65.1


line stmt bran cond sub pod time code
1             #
2             # This parser was generated with
3             # Parse::RecDescent version 1.967015
4             #
5              
6             package Template::Mustache::Parser;
7             our $AUTHORITY = 'cpan:YANICK';
8             $Template::Mustache::Parser::VERSION = '1.3.4';
9              
10 20     20   20273 use Parse::RecDescent;
  20         418759  
  20         136  
11             { my $ERRORS;
12              
13              
14             package Parse::RecDescent::Template::Mustache::Parser;
15             our $AUTHORITY = 'cpan:YANICK';
16             $Parse::RecDescent::Template::Mustache::Parser::VERSION = '1.3.4';
17              
18 20     20   1459 use strict;
  20         45  
  20         498  
19 20     20   91 use vars qw($skip $AUTOLOAD );
  20         45  
  20         1722  
20             @Parse::RecDescent::Template::Mustache::Parser::ISA = ();
21             $skip = qr//;
22              
23              
24             {
25             local $SIG{__WARN__} = sub {0};
26             # PRETEND TO BE IN Parse::RecDescent NAMESPACE
27             *Parse::RecDescent::Template::Mustache::Parser::AUTOLOAD = sub
28             {
29 20     20   114 no strict 'refs';
  20         62  
  20         1733  
30              
31 0     0   0 ${"AUTOLOAD"} =~ s/^Parse::RecDescent::Template::Mustache::Parser/Parse::RecDescent/;
  0         0  
32 0         0 goto &{${"AUTOLOAD"}};
  0         0  
  0         0  
33             }
34             }
35              
36             push @Parse::RecDescent::Template::Mustache::Parser::ISA, 'Parse::RecDescent';
37             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
38             sub Parse::RecDescent::Template::Mustache::Parser::_alternation_1_of_production_1_of_rule_template_item
39             {
40 288     288   448 my $thisparser = $_[0];
41 20     20   112 use vars q{$tracelevel};
  20         45  
  20         5444  
42 288   50     742 local $tracelevel = ($tracelevel||0)+1;
43 288         410 $ERRORS = 0;
44 288         534 my $thisrule = $thisparser->{"rules"}{"_alternation_1_of_production_1_of_rule_template_item"};
45              
46 288 50       560 Parse::RecDescent::_trace(q{Trying rule: [_alternation_1_of_production_1_of_rule_template_item]},
47             Parse::RecDescent::_tracefirst($_[1]),
48             q{_alternation_1_of_production_1_of_rule_template_item},
49             $tracelevel)
50             if defined $::RD_TRACE;
51              
52            
53 288         395 my $err_at = @{$thisparser->{errors}};
  288         515  
54              
55 288         705 my $score;
56             my $score_return;
57 288         0 my $_tok;
58 288         381 my $return = undef;
59 288         388 my $_matched=0;
60 288         356 my $commit=0;
61 288         442 my @item = ();
62 288         420 my %item = ();
63 288         392 my $repeating = $_[2];
64 288         415 my $_noactions = $_[3];
65 288 50       549 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  288         369  
  288         450  
66 288         407 my $_itempos = $_[5];
67 288 100       746 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
68 288         634 my $text;
69             my $lastsep;
70 288         0 my $current_match;
71 288         651 my $expectation = new Parse::RecDescent::Expectation(q{partial, or section, or delimiter_change, or comment, or unescaped_variable_amp, or unescaped_variable, or variable, or verbatim});
72 288         1608 $expectation->at($_[1]);
73            
74 288         996 my $thisoffset;
75 288         729 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
76            
77 288         1152 my $thisline;
78 288         629 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
79              
80            
81              
82 288   33     1939 while (!$_matched && !$commit)
83             {
84            
85 288 50       586 Parse::RecDescent::_trace(q{Trying production: [partial]},
86             Parse::RecDescent::_tracefirst($_[1]),
87             q{_alternation_1_of_production_1_of_rule_template_item},
88             $tracelevel)
89             if defined $::RD_TRACE;
90 288         567 my $thisprod = $thisrule->{"prods"}[0];
91 288         452 $text = $_[1];
92 288         397 my $_savetext;
93 288         523 @item = (q{_alternation_1_of_production_1_of_rule_template_item});
94 288         522 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_template_item});
95 288         404 my $repcount = 0;
96              
97              
98 288 50       556 Parse::RecDescent::_trace(q{Trying subrule: [partial]},
99             Parse::RecDescent::_tracefirst($text),
100             q{_alternation_1_of_production_1_of_rule_template_item},
101             $tracelevel)
102             if defined $::RD_TRACE;
103 20     20   136 if (1) { no strict qw{refs};
  20         45  
  20         4645  
  288         394  
104 288         658 $expectation->is(q{})->at($text);
105 288 100   288   2553 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::partial($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  288         615  
106             {
107            
108 272 50       531 Parse::RecDescent::_trace(q{<<Didn't match subrule: [partial]>>},
109             Parse::RecDescent::_tracefirst($text),
110             q{_alternation_1_of_production_1_of_rule_template_item},
111             $tracelevel)
112             if defined $::RD_TRACE;
113 272         725 $expectation->failed();
114 272         845 last;
115             }
116 16 50       61 Parse::RecDescent::_trace(q{>>Matched subrule: [partial]<< (return value: [}
117             . $_tok . q{]},
118              
119             Parse::RecDescent::_tracefirst($text),
120             q{_alternation_1_of_production_1_of_rule_template_item},
121             $tracelevel)
122             if defined $::RD_TRACE;
123 16         38 $item{q{partial}} = $_tok;
124 16         29 push @item, $_tok;
125            
126             }
127              
128 16 50       35 Parse::RecDescent::_trace(q{>>Matched production: [partial]<<},
129             Parse::RecDescent::_tracefirst($text),
130             q{_alternation_1_of_production_1_of_rule_template_item},
131             $tracelevel)
132             if defined $::RD_TRACE;
133              
134              
135              
136 16         24 $_matched = 1;
137 16         21 last;
138             }
139              
140              
141 288   66     1224 while (!$_matched && !$commit)
142             {
143            
144 272 50       547 Parse::RecDescent::_trace(q{Trying production: [section]},
145             Parse::RecDescent::_tracefirst($_[1]),
146             q{_alternation_1_of_production_1_of_rule_template_item},
147             $tracelevel)
148             if defined $::RD_TRACE;
149 272         542 my $thisprod = $thisrule->{"prods"}[1];
150 272         437 $text = $_[1];
151 272         387 my $_savetext;
152 272         574 @item = (q{_alternation_1_of_production_1_of_rule_template_item});
153 272         572 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_template_item});
154 272         433 my $repcount = 0;
155              
156              
157 272 50       501 Parse::RecDescent::_trace(q{Trying subrule: [section]},
158             Parse::RecDescent::_tracefirst($text),
159             q{_alternation_1_of_production_1_of_rule_template_item},
160             $tracelevel)
161             if defined $::RD_TRACE;
162 20     20   142 if (1) { no strict qw{refs};
  20         39  
  20         4804  
  272         357  
163 272         641 $expectation->is(q{})->at($text);
164 272 100   272   2520 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::section($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  272         583  
165             {
166            
167 261 50       540 Parse::RecDescent::_trace(q{<<Didn't match subrule: [section]>>},
168             Parse::RecDescent::_tracefirst($text),
169             q{_alternation_1_of_production_1_of_rule_template_item},
170             $tracelevel)
171             if defined $::RD_TRACE;
172 261         663 $expectation->failed();
173 261         810 last;
174             }
175 11 50       47 Parse::RecDescent::_trace(q{>>Matched subrule: [section]<< (return value: [}
176             . $_tok . q{]},
177              
178             Parse::RecDescent::_tracefirst($text),
179             q{_alternation_1_of_production_1_of_rule_template_item},
180             $tracelevel)
181             if defined $::RD_TRACE;
182 11         27 $item{q{section}} = $_tok;
183 11         25 push @item, $_tok;
184            
185             }
186              
187 11 50       24 Parse::RecDescent::_trace(q{>>Matched production: [section]<<},
188             Parse::RecDescent::_tracefirst($text),
189             q{_alternation_1_of_production_1_of_rule_template_item},
190             $tracelevel)
191             if defined $::RD_TRACE;
192              
193              
194              
195 11         19 $_matched = 1;
196 11         21 last;
197             }
198              
199              
200 288   66     1177 while (!$_matched && !$commit)
201             {
202            
203 261 50       513 Parse::RecDescent::_trace(q{Trying production: [delimiter_change]},
204             Parse::RecDescent::_tracefirst($_[1]),
205             q{_alternation_1_of_production_1_of_rule_template_item},
206             $tracelevel)
207             if defined $::RD_TRACE;
208 261         561 my $thisprod = $thisrule->{"prods"}[2];
209 261         423 $text = $_[1];
210 261         352 my $_savetext;
211 261         522 @item = (q{_alternation_1_of_production_1_of_rule_template_item});
212 261         581 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_template_item});
213 261         376 my $repcount = 0;
214              
215              
216 261 50       496 Parse::RecDescent::_trace(q{Trying subrule: [delimiter_change]},
217             Parse::RecDescent::_tracefirst($text),
218             q{_alternation_1_of_production_1_of_rule_template_item},
219             $tracelevel)
220             if defined $::RD_TRACE;
221 20     20   150 if (1) { no strict qw{refs};
  20         46  
  20         5697  
  261         358  
222 261         529 $expectation->is(q{})->at($text);
223 261 50   261   2424 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::delimiter_change($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  261         567  
224             {
225            
226 259 50       537 Parse::RecDescent::_trace(q{<<Didn't match subrule: [delimiter_change]>>},
227             Parse::RecDescent::_tracefirst($text),
228             q{_alternation_1_of_production_1_of_rule_template_item},
229             $tracelevel)
230             if defined $::RD_TRACE;
231 259         630 $expectation->failed();
232 259         763 last;
233             }
234 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [delimiter_change]<< (return value: [}
235             . $_tok . q{]},
236              
237             Parse::RecDescent::_tracefirst($text),
238             q{_alternation_1_of_production_1_of_rule_template_item},
239             $tracelevel)
240             if defined $::RD_TRACE;
241 0         0 $item{q{delimiter_change}} = $_tok;
242 0         0 push @item, $_tok;
243            
244             }
245              
246 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [delimiter_change]<<},
247             Parse::RecDescent::_tracefirst($text),
248             q{_alternation_1_of_production_1_of_rule_template_item},
249             $tracelevel)
250             if defined $::RD_TRACE;
251              
252              
253              
254 0         0 $_matched = 1;
255 0         0 last;
256             }
257              
258              
259 286   66     1228 while (!$_matched && !$commit)
260             {
261            
262 259 50       876 Parse::RecDescent::_trace(q{Trying production: [comment]},
263             Parse::RecDescent::_tracefirst($_[1]),
264             q{_alternation_1_of_production_1_of_rule_template_item},
265             $tracelevel)
266             if defined $::RD_TRACE;
267 259         540 my $thisprod = $thisrule->{"prods"}[3];
268 259         417 $text = $_[1];
269 259         330 my $_savetext;
270 259         556 @item = (q{_alternation_1_of_production_1_of_rule_template_item});
271 259         521 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_template_item});
272 259         403 my $repcount = 0;
273              
274              
275 259 50       502 Parse::RecDescent::_trace(q{Trying subrule: [comment]},
276             Parse::RecDescent::_tracefirst($text),
277             q{_alternation_1_of_production_1_of_rule_template_item},
278             $tracelevel)
279             if defined $::RD_TRACE;
280 20     20   135 if (1) { no strict qw{refs};
  20         47  
  20         4868  
  259         355  
281 259         629 $expectation->is(q{})->at($text);
282 259 100   259   2307 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::comment($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  259         545  
283             {
284            
285 256 50       510 Parse::RecDescent::_trace(q{<<Didn't match subrule: [comment]>>},
286             Parse::RecDescent::_tracefirst($text),
287             q{_alternation_1_of_production_1_of_rule_template_item},
288             $tracelevel)
289             if defined $::RD_TRACE;
290 256         705 $expectation->failed();
291 256         806 last;
292             }
293 3 50       11 Parse::RecDescent::_trace(q{>>Matched subrule: [comment]<< (return value: [}
294             . $_tok . q{]},
295              
296             Parse::RecDescent::_tracefirst($text),
297             q{_alternation_1_of_production_1_of_rule_template_item},
298             $tracelevel)
299             if defined $::RD_TRACE;
300 3         7 $item{q{comment}} = $_tok;
301 3         7 push @item, $_tok;
302            
303             }
304              
305 3 50       19 Parse::RecDescent::_trace(q{>>Matched production: [comment]<<},
306             Parse::RecDescent::_tracefirst($text),
307             q{_alternation_1_of_production_1_of_rule_template_item},
308             $tracelevel)
309             if defined $::RD_TRACE;
310              
311              
312              
313 3         6 $_matched = 1;
314 3         7 last;
315             }
316              
317              
318 286   66     1116 while (!$_matched && !$commit)
319             {
320            
321 256 50       528 Parse::RecDescent::_trace(q{Trying production: [unescaped_variable_amp]},
322             Parse::RecDescent::_tracefirst($_[1]),
323             q{_alternation_1_of_production_1_of_rule_template_item},
324             $tracelevel)
325             if defined $::RD_TRACE;
326 256         494 my $thisprod = $thisrule->{"prods"}[4];
327 256         449 $text = $_[1];
328 256         341 my $_savetext;
329 256         550 @item = (q{_alternation_1_of_production_1_of_rule_template_item});
330 256         578 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_template_item});
331 256         390 my $repcount = 0;
332              
333              
334 256 50       554 Parse::RecDescent::_trace(q{Trying subrule: [unescaped_variable_amp]},
335             Parse::RecDescent::_tracefirst($text),
336             q{_alternation_1_of_production_1_of_rule_template_item},
337             $tracelevel)
338             if defined $::RD_TRACE;
339 20     20   139 if (1) { no strict qw{refs};
  20         36  
  20         5060  
  256         341  
340 256         566 $expectation->is(q{})->at($text);
341 256 50   256   2297 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::unescaped_variable_amp($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  256         606  
342             {
343            
344 256 50       510 Parse::RecDescent::_trace(q{<<Didn't match subrule: [unescaped_variable_amp]>>},
345             Parse::RecDescent::_tracefirst($text),
346             q{_alternation_1_of_production_1_of_rule_template_item},
347             $tracelevel)
348             if defined $::RD_TRACE;
349 256         642 $expectation->failed();
350 256         757 last;
351             }
352 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [unescaped_variable_amp]<< (return value: [}
353             . $_tok . q{]},
354              
355             Parse::RecDescent::_tracefirst($text),
356             q{_alternation_1_of_production_1_of_rule_template_item},
357             $tracelevel)
358             if defined $::RD_TRACE;
359 0         0 $item{q{unescaped_variable_amp}} = $_tok;
360 0         0 push @item, $_tok;
361            
362             }
363              
364 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [unescaped_variable_amp]<<},
365             Parse::RecDescent::_tracefirst($text),
366             q{_alternation_1_of_production_1_of_rule_template_item},
367             $tracelevel)
368             if defined $::RD_TRACE;
369              
370              
371              
372 0         0 $_matched = 1;
373 0         0 last;
374             }
375              
376              
377 286   66     1144 while (!$_matched && !$commit)
378             {
379            
380 256 50       564 Parse::RecDescent::_trace(q{Trying production: [unescaped_variable]},
381             Parse::RecDescent::_tracefirst($_[1]),
382             q{_alternation_1_of_production_1_of_rule_template_item},
383             $tracelevel)
384             if defined $::RD_TRACE;
385 256         486 my $thisprod = $thisrule->{"prods"}[5];
386 256         399 $text = $_[1];
387 256         336 my $_savetext;
388 256         498 @item = (q{_alternation_1_of_production_1_of_rule_template_item});
389 256         576 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_template_item});
390 256         371 my $repcount = 0;
391              
392              
393 256 50       500 Parse::RecDescent::_trace(q{Trying subrule: [unescaped_variable]},
394             Parse::RecDescent::_tracefirst($text),
395             q{_alternation_1_of_production_1_of_rule_template_item},
396             $tracelevel)
397             if defined $::RD_TRACE;
398 20     20   143 if (1) { no strict qw{refs};
  20         41  
  20         5696  
  256         323  
399 256         567 $expectation->is(q{})->at($text);
400 256 50   256   2272 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::unescaped_variable($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  256         539  
401             {
402            
403 256 50       514 Parse::RecDescent::_trace(q{<<Didn't match subrule: [unescaped_variable]>>},
404             Parse::RecDescent::_tracefirst($text),
405             q{_alternation_1_of_production_1_of_rule_template_item},
406             $tracelevel)
407             if defined $::RD_TRACE;
408 256         645 $expectation->failed();
409 256         766 last;
410             }
411 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [unescaped_variable]<< (return value: [}
412             . $_tok . q{]},
413              
414             Parse::RecDescent::_tracefirst($text),
415             q{_alternation_1_of_production_1_of_rule_template_item},
416             $tracelevel)
417             if defined $::RD_TRACE;
418 0         0 $item{q{unescaped_variable}} = $_tok;
419 0         0 push @item, $_tok;
420            
421             }
422              
423 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [unescaped_variable]<<},
424             Parse::RecDescent::_tracefirst($text),
425             q{_alternation_1_of_production_1_of_rule_template_item},
426             $tracelevel)
427             if defined $::RD_TRACE;
428              
429              
430              
431 0         0 $_matched = 1;
432 0         0 last;
433             }
434              
435              
436 286   66     1107 while (!$_matched && !$commit)
437             {
438            
439 256 50       544 Parse::RecDescent::_trace(q{Trying production: [variable]},
440             Parse::RecDescent::_tracefirst($_[1]),
441             q{_alternation_1_of_production_1_of_rule_template_item},
442             $tracelevel)
443             if defined $::RD_TRACE;
444 256         479 my $thisprod = $thisrule->{"prods"}[6];
445 256         379 $text = $_[1];
446 256         335 my $_savetext;
447 256         504 @item = (q{_alternation_1_of_production_1_of_rule_template_item});
448 256         505 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_template_item});
449 256         377 my $repcount = 0;
450              
451              
452 256 50       481 Parse::RecDescent::_trace(q{Trying subrule: [variable]},
453             Parse::RecDescent::_tracefirst($text),
454             q{_alternation_1_of_production_1_of_rule_template_item},
455             $tracelevel)
456             if defined $::RD_TRACE;
457 20     20   136 if (1) { no strict qw{refs};
  20         39  
  20         4595  
  256         373  
458 256         546 $expectation->is(q{})->at($text);
459 256 100   256   2279 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::variable($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  256         544  
460             {
461            
462 193 50       470 Parse::RecDescent::_trace(q{<<Didn't match subrule: [variable]>>},
463             Parse::RecDescent::_tracefirst($text),
464             q{_alternation_1_of_production_1_of_rule_template_item},
465             $tracelevel)
466             if defined $::RD_TRACE;
467 193         524 $expectation->failed();
468 193         558 last;
469             }
470 63 50       253 Parse::RecDescent::_trace(q{>>Matched subrule: [variable]<< (return value: [}
471             . $_tok . q{]},
472              
473             Parse::RecDescent::_tracefirst($text),
474             q{_alternation_1_of_production_1_of_rule_template_item},
475             $tracelevel)
476             if defined $::RD_TRACE;
477 63         138 $item{q{variable}} = $_tok;
478 63         138 push @item, $_tok;
479            
480             }
481              
482 63 50       150 Parse::RecDescent::_trace(q{>>Matched production: [variable]<<},
483             Parse::RecDescent::_tracefirst($text),
484             q{_alternation_1_of_production_1_of_rule_template_item},
485             $tracelevel)
486             if defined $::RD_TRACE;
487              
488              
489              
490 63         114 $_matched = 1;
491 63         95 last;
492             }
493              
494              
495 286   66     1009 while (!$_matched && !$commit)
496             {
497            
498 193 50       425 Parse::RecDescent::_trace(q{Trying production: [verbatim]},
499             Parse::RecDescent::_tracefirst($_[1]),
500             q{_alternation_1_of_production_1_of_rule_template_item},
501             $tracelevel)
502             if defined $::RD_TRACE;
503 193         407 my $thisprod = $thisrule->{"prods"}[7];
504 193         364 $text = $_[1];
505 193         270 my $_savetext;
506 193         403 @item = (q{_alternation_1_of_production_1_of_rule_template_item});
507 193         378 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_template_item});
508 193         275 my $repcount = 0;
509              
510              
511 193 50       364 Parse::RecDescent::_trace(q{Trying subrule: [verbatim]},
512             Parse::RecDescent::_tracefirst($text),
513             q{_alternation_1_of_production_1_of_rule_template_item},
514             $tracelevel)
515             if defined $::RD_TRACE;
516 20     20   133 if (1) { no strict qw{refs};
  20         52  
  20         16220  
  193         260  
517 193         422 $expectation->is(q{})->at($text);
518 193 50   193   1755 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::verbatim($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  193         411  
519             {
520            
521 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match subrule: [verbatim]>>},
522             Parse::RecDescent::_tracefirst($text),
523             q{_alternation_1_of_production_1_of_rule_template_item},
524             $tracelevel)
525             if defined $::RD_TRACE;
526 0         0 $expectation->failed();
527 0         0 last;
528             }
529 193 50       632 Parse::RecDescent::_trace(q{>>Matched subrule: [verbatim]<< (return value: [}
530             . $_tok . q{]},
531              
532             Parse::RecDescent::_tracefirst($text),
533             q{_alternation_1_of_production_1_of_rule_template_item},
534             $tracelevel)
535             if defined $::RD_TRACE;
536 193         444 $item{q{verbatim}} = $_tok;
537 193         330 push @item, $_tok;
538            
539             }
540              
541 193 50       366 Parse::RecDescent::_trace(q{>>Matched production: [verbatim]<<},
542             Parse::RecDescent::_tracefirst($text),
543             q{_alternation_1_of_production_1_of_rule_template_item},
544             $tracelevel)
545             if defined $::RD_TRACE;
546              
547              
548              
549 193         254 $_matched = 1;
550 193         293 last;
551             }
552              
553              
554 286         638 while (!$_matched)
555             {
556            
557 0 0       0 Parse::RecDescent::_trace(q{Trying production: [<error...>]},
558             Parse::RecDescent::_tracefirst($_[1]),
559             q{_alternation_1_of_production_1_of_rule_template_item},
560             $tracelevel)
561             if defined $::RD_TRACE;
562 0         0 my $thisprod = $thisrule->{"prods"}[8];
563            
564 0         0 my $_savetext;
565 0         0 @item = (q{_alternation_1_of_production_1_of_rule_template_item});
566 0         0 %item = (__RULE__ => q{_alternation_1_of_production_1_of_rule_template_item});
567 0         0 my $repcount = 0;
568              
569              
570            
571              
572 0 0       0 Parse::RecDescent::_trace(q{Trying directive: [<error...>]},
573             Parse::RecDescent::_tracefirst($text),
574             q{_alternation_1_of_production_1_of_rule_template_item},
575             $tracelevel)
576             if defined $::RD_TRACE;
577 0 0       0 $_tok = do { if (1) { do {
  0         0  
  0         0  
578 0         0 my $rule = $item[0];
579 0         0 $rule =~ s/_/ /g;
580             #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
581 0         0 push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
  0         0  
582 0         0 } unless $_noactions; undef } else {0} };
583 0 0       0 if (defined($_tok))
584             {
585 0 0       0 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
586             . $_tok . q{])},
587             Parse::RecDescent::_tracefirst($text))
588             if defined $::RD_TRACE;
589             }
590             else
591             {
592 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match directive>>},
593             Parse::RecDescent::_tracefirst($text))
594             if defined $::RD_TRACE;
595             }
596            
597 0 0       0 last unless defined $_tok;
598 0         0 push @item, $item{__DIRECTIVE1__}=$_tok;
599            
600              
601 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [<error...>]<<},
602             Parse::RecDescent::_tracefirst($text),
603             q{_alternation_1_of_production_1_of_rule_template_item},
604             $tracelevel)
605             if defined $::RD_TRACE;
606              
607              
608              
609 0         0 $_matched = 1;
610 0         0 last;
611             }
612              
613              
614 286 50 33     636 unless ( $_matched || defined($score) )
615             {
616            
617              
618 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
619 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
620             Parse::RecDescent::_tracefirst($_[1]),
621             q{_alternation_1_of_production_1_of_rule_template_item},
622             $tracelevel)
623             if defined $::RD_TRACE;
624 0         0 return undef;
625             }
626 286 50 33     981 if (!defined($return) && defined($score))
627             {
628 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
629             q{_alternation_1_of_production_1_of_rule_template_item},
630             $tracelevel)
631             if defined $::RD_TRACE;
632 0         0 $return = $score_return;
633             }
634 286         364 splice @{$thisparser->{errors}}, $err_at;
  286         531  
635 286 50       644 $return = $item[$#item] unless defined $return;
636 286 50       577 if (defined $::RD_TRACE)
637             {
638 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
639             $return . q{])}, "",
640             q{_alternation_1_of_production_1_of_rule_template_item},
641             $tracelevel);
642 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
643             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
644             Parse::RecDescent::_tracefirst($text),
645             , q{_alternation_1_of_production_1_of_rule_template_item},
646             $tracelevel)
647             }
648 286         465 $_[1] = $text;
649 286         1732 return $return;
650             }
651              
652             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
653             sub Parse::RecDescent::Template::Mustache::Parser::close_section
654             {
655 56     56   89 my $thisparser = $_[0];
656 20     20   158 use vars q{$tracelevel};
  20         41  
  20         9601  
657 56   50     133 local $tracelevel = ($tracelevel||0)+1;
658 56         88 $ERRORS = 0;
659 56         107 my $thisrule = $thisparser->{"rules"}{"close_section"};
660              
661 56 50       121 Parse::RecDescent::_trace(q{Trying rule: [close_section]},
662             Parse::RecDescent::_tracefirst($_[1]),
663             q{close_section},
664             $tracelevel)
665             if defined $::RD_TRACE;
666              
667            
668 56         85 my $err_at = @{$thisparser->{errors}};
  56         103  
669              
670 56         126 my $score;
671             my $score_return;
672 56         0 my $_tok;
673 56         73 my $return = undef;
674 56         73 my $_matched=0;
675 56         70 my $commit=0;
676 56         81 my @item = ();
677 56         70 my %item = ();
678 56         68 my $repeating = $_[2];
679 56         74 my $_noactions = $_[3];
680 56 50       107 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  56         62  
  56         92  
681 56         107 my $_itempos = $_[5];
682 56 50       141 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
683 56         122 my $text;
684             my $lastsep;
685 56         0 my $current_match;
686 56         129 my $expectation = new Parse::RecDescent::Expectation(q{/\\s*/});
687 56         393 $expectation->at($_[1]);
688            
689 56         181 my $thisoffset;
690 56         148 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
691            
692 56         225 my $thisline;
693 56         138 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
694              
695            
696              
697 56   33     378 while (!$_matched && !$commit)
698             {
699            
700 56 50       103 Parse::RecDescent::_trace(q{Trying production: [/\\s*/ opening_tag '/' /\\s*/ '$arg[0]' /\\s*/ closing_tag /\\s*/]},
701             Parse::RecDescent::_tracefirst($_[1]),
702             q{close_section},
703             $tracelevel)
704             if defined $::RD_TRACE;
705 56         108 my $thisprod = $thisrule->{"prods"}[0];
706 56         76 $text = $_[1];
707 56         72 my $_savetext;
708 56         98 @item = (q{close_section});
709 56         94 %item = (__RULE__ => q{close_section});
710 56         67 my $repcount = 0;
711              
712              
713 56 50       104 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
714             q{close_section},
715             $tracelevel)
716             if defined $::RD_TRACE;
717 56         77 undef $lastsep;
718 56         123 $expectation->is(q{})->at($text);
719            
720              
721 56 50 33     581 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  56 50       415  
722             {
723 0 0       0 $text = $lastsep . $text if defined $lastsep;
724 0         0 $expectation->failed();
725 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
726             Parse::RecDescent::_tracefirst($text))
727             if defined $::RD_TRACE;
728              
729 0         0 last;
730             }
731 56         237 $current_match = substr($text, $-[0], $+[0] - $-[0]);
732 56         143 substr($text,0,length($current_match),q{});
733 56 50       112 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
734             . $current_match . q{])},
735             Parse::RecDescent::_tracefirst($text))
736             if defined $::RD_TRACE;
737 56         121 push @item, $item{__PATTERN1__}=$current_match;
738            
739              
740 56 50       110 Parse::RecDescent::_trace(q{Trying subrule: [opening_tag]},
741             Parse::RecDescent::_tracefirst($text),
742             q{close_section},
743             $tracelevel)
744             if defined $::RD_TRACE;
745 20     20   144 if (1) { no strict qw{refs};
  20         58  
  20         14966  
  56         83  
746 56         124 $expectation->is(q{opening_tag})->at($text);
747 56 100   56   472 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::opening_tag($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  56         164  
748             {
749            
750 5 50       14 Parse::RecDescent::_trace(q{<<Didn't match subrule: [opening_tag]>>},
751             Parse::RecDescent::_tracefirst($text),
752             q{close_section},
753             $tracelevel)
754             if defined $::RD_TRACE;
755 5         17 $expectation->failed();
756 5         35 last;
757             }
758 51 50       159 Parse::RecDescent::_trace(q{>>Matched subrule: [opening_tag]<< (return value: [}
759             . $_tok . q{]},
760              
761             Parse::RecDescent::_tracefirst($text),
762             q{close_section},
763             $tracelevel)
764             if defined $::RD_TRACE;
765 51         97 $item{q{opening_tag}} = $_tok;
766 51         83 push @item, $_tok;
767            
768             }
769              
770 51 50       98 Parse::RecDescent::_trace(q{Trying terminal: ['/']},
771             Parse::RecDescent::_tracefirst($text),
772             q{close_section},
773             $tracelevel)
774             if defined $::RD_TRACE;
775 51         72 undef $lastsep;
776 51         113 $expectation->is(q{'/'})->at($text);
777            
778              
779 51 50 66     456 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\//)
  51 100       359  
780             {
781 19 50       57 $text = $lastsep . $text if defined $lastsep;
782            
783 19         52 $expectation->failed();
784 19 50       144 Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
785             Parse::RecDescent::_tracefirst($text))
786             if defined $::RD_TRACE;
787 19         54 last;
788             }
789 32         157 $current_match = substr($text, $-[0], $+[0] - $-[0]);
790 32         76 substr($text,0,length($current_match),q{});
791 32 50       72 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
792             . $current_match . q{])},
793             Parse::RecDescent::_tracefirst($text))
794             if defined $::RD_TRACE;
795 32         77 push @item, $item{__STRING1__}=$current_match;
796            
797              
798 32 50       64 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
799             q{close_section},
800             $tracelevel)
801             if defined $::RD_TRACE;
802 32         66 undef $lastsep;
803 32         245 $expectation->is(q{/\\s*/})->at($text);
804            
805              
806 32 50 33     333 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  32 50       211  
807             {
808 0 0       0 $text = $lastsep . $text if defined $lastsep;
809 0         0 $expectation->failed();
810 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
811             Parse::RecDescent::_tracefirst($text))
812             if defined $::RD_TRACE;
813              
814 0         0 last;
815             }
816 32         109 $current_match = substr($text, $-[0], $+[0] - $-[0]);
817 32         73 substr($text,0,length($current_match),q{});
818 32 50       71 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
819             . $current_match . q{])},
820             Parse::RecDescent::_tracefirst($text))
821             if defined $::RD_TRACE;
822 32         67 push @item, $item{__PATTERN2__}=$current_match;
823            
824              
825 32 50       73 Parse::RecDescent::_trace(q{Trying terminal: ['$arg[0]']},
826             Parse::RecDescent::_tracefirst($text),
827             q{close_section},
828             $tracelevel)
829             if defined $::RD_TRACE;
830 32         48 undef $lastsep;
831 32         68 $expectation->is(q{'$arg[0]'})->at($text);
832            
833              
834 32 50 33     256 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "$arg[0]"; 1 } and
  32 100 66     135  
  32   66     52  
  32         146  
835             substr($text,0,length($_tok)) eq $_tok and
836 22         42 do { substr($text,0,length($_tok)) = ""; 1; }
  22         51  
837             )
838             {
839 10 50       27 $text = $lastsep . $text if defined $lastsep;
840            
841 10         24 $expectation->failed();
842 10 50       79 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
843             Parse::RecDescent::_tracefirst($text))
844             if defined $::RD_TRACE;
845 10         19 last;
846             }
847 22 50       62 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
848             . $_tok . q{])},
849             Parse::RecDescent::_tracefirst($text))
850             if defined $::RD_TRACE;
851 22         48 push @item, $item{__STRING2__}=$_tok;
852            
853              
854 22 50       45 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
855             q{close_section},
856             $tracelevel)
857             if defined $::RD_TRACE;
858 22         34 undef $lastsep;
859 22         47 $expectation->is(q{/\\s*/})->at($text);
860            
861              
862 22 50 33     181 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  22 50       136  
863             {
864 0 0       0 $text = $lastsep . $text if defined $lastsep;
865 0         0 $expectation->failed();
866 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
867             Parse::RecDescent::_tracefirst($text))
868             if defined $::RD_TRACE;
869              
870 0         0 last;
871             }
872 22         76 $current_match = substr($text, $-[0], $+[0] - $-[0]);
873 22         52 substr($text,0,length($current_match),q{});
874 22 50       45 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
875             . $current_match . q{])},
876             Parse::RecDescent::_tracefirst($text))
877             if defined $::RD_TRACE;
878 22         48 push @item, $item{__PATTERN3__}=$current_match;
879            
880              
881 22 50       43 Parse::RecDescent::_trace(q{Trying subrule: [closing_tag]},
882             Parse::RecDescent::_tracefirst($text),
883             q{close_section},
884             $tracelevel)
885             if defined $::RD_TRACE;
886 20     20   148 if (1) { no strict qw{refs};
  20         38  
  20         16446  
  22         27  
887 22         47 $expectation->is(q{closing_tag})->at($text);
888 22 50   22   179 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::closing_tag($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  22         45  
889             {
890            
891 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match subrule: [closing_tag]>>},
892             Parse::RecDescent::_tracefirst($text),
893             q{close_section},
894             $tracelevel)
895             if defined $::RD_TRACE;
896 0         0 $expectation->failed();
897 0         0 last;
898             }
899 22 50       67 Parse::RecDescent::_trace(q{>>Matched subrule: [closing_tag]<< (return value: [}
900             . $_tok . q{]},
901              
902             Parse::RecDescent::_tracefirst($text),
903             q{close_section},
904             $tracelevel)
905             if defined $::RD_TRACE;
906 22         51 $item{q{closing_tag}} = $_tok;
907 22         43 push @item, $_tok;
908            
909             }
910              
911 22 50       41 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
912             q{close_section},
913             $tracelevel)
914             if defined $::RD_TRACE;
915 22         31 undef $lastsep;
916 22         55 $expectation->is(q{/\\s*/})->at($text);
917            
918              
919 22 50 33     203 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  22 50       156  
920             {
921 0 0       0 $text = $lastsep . $text if defined $lastsep;
922 0         0 $expectation->failed();
923 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
924             Parse::RecDescent::_tracefirst($text))
925             if defined $::RD_TRACE;
926              
927 0         0 last;
928             }
929 22         83 $current_match = substr($text, $-[0], $+[0] - $-[0]);
930 22         55 substr($text,0,length($current_match),q{});
931 22 50       46 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
932             . $current_match . q{])},
933             Parse::RecDescent::_tracefirst($text))
934             if defined $::RD_TRACE;
935 22         56 push @item, $item{__PATTERN4__}=$current_match;
936            
937              
938 22 50       47 Parse::RecDescent::_trace(q{Trying action},
939             Parse::RecDescent::_tracefirst($text),
940             q{close_section},
941             $tracelevel)
942             if defined $::RD_TRACE;
943            
944              
945 22 100       47 $_tok = ($_noactions) ? 0 : do {
946 11         20 my $prev = $thisparser->{prev_is_standalone};
947 11         18 $thisparser->{prev_is_standalone} = 0;
948 11 50 33     44 if ( $item[1] =~ /\n/ or $prev) {
949 0 0 0     0 if ( $item[8] =~ /\n/ or length $text == 0 ) {
950 0         0 $item[1] =~ s/(^|\n)[ \t]*?$/$1/;
951 0         0 $item[8] =~ s/^.*?\n//;
952 0         0 $thisparser->{prev_is_standalone} = 1;
953             }
954             }
955             [
956 11         239 Template::Mustache::Token::Verbatim->new( content => $item[1] ),
957             Template::Mustache::Token::Verbatim->new( content => $item[8] ),
958             ]
959             };
960 22 50       320 unless (defined $_tok)
961             {
962 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
963             if defined $::RD_TRACE;
964 0         0 last;
965             }
966 22 50       46 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
967             . $_tok . q{])},
968             Parse::RecDescent::_tracefirst($text))
969             if defined $::RD_TRACE;
970 22         136 push @item, $_tok;
971 22         41 $item{__ACTION1__}=$_tok;
972            
973              
974 22 50       38 Parse::RecDescent::_trace(q{>>Matched production: [/\\s*/ opening_tag '/' /\\s*/ '$arg[0]' /\\s*/ closing_tag /\\s*/]<<},
975             Parse::RecDescent::_tracefirst($text),
976             q{close_section},
977             $tracelevel)
978             if defined $::RD_TRACE;
979              
980              
981              
982 22         28 $_matched = 1;
983 22         47 last;
984             }
985              
986              
987 56 100 66     174 unless ( $_matched || defined($score) )
988             {
989            
990              
991 34         52 $_[1] = $text; # NOT SURE THIS IS NEEDED
992 34 50       63 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
993             Parse::RecDescent::_tracefirst($_[1]),
994             q{close_section},
995             $tracelevel)
996             if defined $::RD_TRACE;
997 34         231 return undef;
998             }
999 22 50 33     113 if (!defined($return) && defined($score))
1000             {
1001 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1002             q{close_section},
1003             $tracelevel)
1004             if defined $::RD_TRACE;
1005 0         0 $return = $score_return;
1006             }
1007 22         31 splice @{$thisparser->{errors}}, $err_at;
  22         40  
1008 22 50       53 $return = $item[$#item] unless defined $return;
1009 22 50       53 if (defined $::RD_TRACE)
1010             {
1011 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1012             $return . q{])}, "",
1013             q{close_section},
1014             $tracelevel);
1015 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1016             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1017             Parse::RecDescent::_tracefirst($text),
1018             , q{close_section},
1019             $tracelevel)
1020             }
1021 22         36 $_[1] = $text;
1022 22         147 return $return;
1023             }
1024              
1025             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
1026             sub Parse::RecDescent::Template::Mustache::Parser::closing_tag
1027             {
1028 124     124   223 my $thisparser = $_[0];
1029 20     20   217 use vars q{$tracelevel};
  20         48  
  20         13472  
1030 124   50     375 local $tracelevel = ($tracelevel||0)+1;
1031 124         195 $ERRORS = 0;
1032 124         282 my $thisrule = $thisparser->{"rules"}{"closing_tag"};
1033              
1034 124 50       279 Parse::RecDescent::_trace(q{Trying rule: [closing_tag]},
1035             Parse::RecDescent::_tracefirst($_[1]),
1036             q{closing_tag},
1037             $tracelevel)
1038             if defined $::RD_TRACE;
1039              
1040            
1041 124         172 my $err_at = @{$thisparser->{errors}};
  124         249  
1042              
1043 124         323 my $score;
1044             my $score_return;
1045 124         0 my $_tok;
1046 124         175 my $return = undef;
1047 124         196 my $_matched=0;
1048 124         165 my $commit=0;
1049 124         204 my @item = ();
1050 124         185 my %item = ();
1051 124         192 my $repeating = $_[2];
1052 124         167 my $_noactions = $_[3];
1053 124 50       293 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  124         162  
  124         512  
1054 124         196 my $_itempos = $_[5];
1055 124 100       387 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1056 124         301 my $text;
1057             my $lastsep;
1058 124         0 my $current_match;
1059 124         346 my $expectation = new Parse::RecDescent::Expectation(q{'$thisparser->\{closing_tag\}'});
1060 124         784 $expectation->at($_[1]);
1061            
1062 124         428 my $thisoffset;
1063 124         393 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
1064            
1065 124         591 my $thisline;
1066 124         313 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1067              
1068            
1069              
1070 124   33     902 while (!$_matched && !$commit)
1071             {
1072            
1073 124 50       298 Parse::RecDescent::_trace(q{Trying production: ['$thisparser->\{closing_tag\}']},
1074             Parse::RecDescent::_tracefirst($_[1]),
1075             q{closing_tag},
1076             $tracelevel)
1077             if defined $::RD_TRACE;
1078 124         319 my $thisprod = $thisrule->{"prods"}[0];
1079 124         211 $text = $_[1];
1080 124         169 my $_savetext;
1081 124         266 @item = (q{closing_tag});
1082 124         245 %item = (__RULE__ => q{closing_tag});
1083 124         188 my $repcount = 0;
1084              
1085              
1086 124 50       296 Parse::RecDescent::_trace(q{Trying terminal: ['$thisparser->\{closing_tag\}']},
1087             Parse::RecDescent::_tracefirst($text),
1088             q{closing_tag},
1089             $tracelevel)
1090             if defined $::RD_TRACE;
1091 124         201 undef $lastsep;
1092 124         311 $expectation->is(q{})->at($text);
1093            
1094              
1095 124 50 33     1299 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "$thisparser->{closing_tag}"; 1 } and
  124 50 33     697  
  124   33     259  
  124         659  
1096             substr($text,0,length($_tok)) eq $_tok and
1097 124         271 do { substr($text,0,length($_tok)) = ""; 1; }
  124         302  
1098             )
1099             {
1100 0 0       0 $text = $lastsep . $text if defined $lastsep;
1101            
1102 0         0 $expectation->failed();
1103 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
1104             Parse::RecDescent::_tracefirst($text))
1105             if defined $::RD_TRACE;
1106 0         0 last;
1107             }
1108 124 50       311 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1109             . $_tok . q{])},
1110             Parse::RecDescent::_tracefirst($text))
1111             if defined $::RD_TRACE;
1112 124         306 push @item, $item{__STRING1__}=$_tok;
1113            
1114              
1115 124 50       270 Parse::RecDescent::_trace(q{>>Matched production: ['$thisparser->\{closing_tag\}']<<},
1116             Parse::RecDescent::_tracefirst($text),
1117             q{closing_tag},
1118             $tracelevel)
1119             if defined $::RD_TRACE;
1120              
1121              
1122              
1123 124         192 $_matched = 1;
1124 124         230 last;
1125             }
1126              
1127              
1128 124 50 33     334 unless ( $_matched || defined($score) )
1129             {
1130            
1131              
1132 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
1133 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
1134             Parse::RecDescent::_tracefirst($_[1]),
1135             q{closing_tag},
1136             $tracelevel)
1137             if defined $::RD_TRACE;
1138 0         0 return undef;
1139             }
1140 124 50 33     447 if (!defined($return) && defined($score))
1141             {
1142 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1143             q{closing_tag},
1144             $tracelevel)
1145             if defined $::RD_TRACE;
1146 0         0 $return = $score_return;
1147             }
1148 124         188 splice @{$thisparser->{errors}}, $err_at;
  124         246  
1149 124 50       340 $return = $item[$#item] unless defined $return;
1150 124 50       298 if (defined $::RD_TRACE)
1151             {
1152 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1153             $return . q{])}, "",
1154             q{closing_tag},
1155             $tracelevel);
1156 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1157             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1158             Parse::RecDescent::_tracefirst($text),
1159             , q{closing_tag},
1160             $tracelevel)
1161             }
1162 124         229 $_[1] = $text;
1163 124         693 return $return;
1164             }
1165              
1166             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
1167             sub Parse::RecDescent::Template::Mustache::Parser::comment
1168             {
1169 259     259   410 my $thisparser = $_[0];
1170 20     20   142 use vars q{$tracelevel};
  20         53  
  20         6131  
1171 259   50     610 local $tracelevel = ($tracelevel||0)+1;
1172 259         363 $ERRORS = 0;
1173 259         484 my $thisrule = $thisparser->{"rules"}{"comment"};
1174              
1175 259 50       498 Parse::RecDescent::_trace(q{Trying rule: [comment]},
1176             Parse::RecDescent::_tracefirst($_[1]),
1177             q{comment},
1178             $tracelevel)
1179             if defined $::RD_TRACE;
1180              
1181            
1182 259         346 my $err_at = @{$thisparser->{errors}};
  259         465  
1183              
1184 259         575 my $score;
1185             my $score_return;
1186 259         0 my $_tok;
1187 259         336 my $return = undef;
1188 259         340 my $_matched=0;
1189 259         368 my $commit=0;
1190 259         418 my @item = ();
1191 259         381 my %item = ();
1192 259         346 my $repeating = $_[2];
1193 259         396 my $_noactions = $_[3];
1194 259 50       804 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  259         323  
  259         385  
1195 259         393 my $_itempos = $_[5];
1196 259 100       694 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1197 259         615 my $text;
1198             my $lastsep;
1199 259         0 my $current_match;
1200 259         614 my $expectation = new Parse::RecDescent::Expectation(q{standalone_surround});
1201 259         1668 $expectation->at($_[1]);
1202            
1203 259         861 my $thisoffset;
1204 259         748 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
1205            
1206 259         1105 my $thisline;
1207 259         593 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1208              
1209            
1210              
1211 259   33     1674 while (!$_matched && !$commit)
1212             {
1213            
1214 259 50       530 Parse::RecDescent::_trace(q{Trying production: [standalone_surround]},
1215             Parse::RecDescent::_tracefirst($_[1]),
1216             q{comment},
1217             $tracelevel)
1218             if defined $::RD_TRACE;
1219 259         496 my $thisprod = $thisrule->{"prods"}[0];
1220 259         385 $text = $_[1];
1221 259         325 my $_savetext;
1222 259         440 @item = (q{comment});
1223 259         474 %item = (__RULE__ => q{comment});
1224 259         368 my $repcount = 0;
1225              
1226              
1227 259 50       509 Parse::RecDescent::_trace(q{Trying subrule: [standalone_surround]},
1228             Parse::RecDescent::_tracefirst($text),
1229             q{comment},
1230             $tracelevel)
1231             if defined $::RD_TRACE;
1232 20     20   171 if (1) { no strict qw{refs};
  20         62  
  20         9832  
  259         322  
1233 259         544 $expectation->is(q{})->at($text);
1234 259 100   259   2027 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::standalone_surround($thisparser,$text,$repeating,$_noactions,sub { return [$item[0]] },undef)))
  259         573  
1235             {
1236            
1237 256 50       550 Parse::RecDescent::_trace(q{<<Didn't match subrule: [standalone_surround]>>},
1238             Parse::RecDescent::_tracefirst($text),
1239             q{comment},
1240             $tracelevel)
1241             if defined $::RD_TRACE;
1242 256         652 $expectation->failed();
1243 256         757 last;
1244             }
1245 3 50       12 Parse::RecDescent::_trace(q{>>Matched subrule: [standalone_surround]<< (return value: [}
1246             . $_tok . q{]},
1247              
1248             Parse::RecDescent::_tracefirst($text),
1249             q{comment},
1250             $tracelevel)
1251             if defined $::RD_TRACE;
1252 3         9 $item{q{standalone_surround}} = $_tok;
1253 3         13 push @item, $_tok;
1254            
1255             }
1256              
1257 3 50       8 Parse::RecDescent::_trace(q{Trying action},
1258             Parse::RecDescent::_tracefirst($text),
1259             q{comment},
1260             $tracelevel)
1261             if defined $::RD_TRACE;
1262            
1263              
1264 3 50       8 $_tok = ($_noactions) ? 0 : do {
1265 3         108 Template::Mustache::Token::Verbatim->new(
1266             content => $item[1][0] . $item[1][1]
1267             ),
1268             };
1269 3 50       71 unless (defined $_tok)
1270             {
1271 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
1272             if defined $::RD_TRACE;
1273 0         0 last;
1274             }
1275 3 50       10 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1276             . $_tok . q{])},
1277             Parse::RecDescent::_tracefirst($text))
1278             if defined $::RD_TRACE;
1279 3         6 push @item, $_tok;
1280 3         6 $item{__ACTION1__}=$_tok;
1281            
1282              
1283 3 50       9 Parse::RecDescent::_trace(q{>>Matched production: [standalone_surround]<<},
1284             Parse::RecDescent::_tracefirst($text),
1285             q{comment},
1286             $tracelevel)
1287             if defined $::RD_TRACE;
1288              
1289              
1290              
1291 3         5 $_matched = 1;
1292 3         6 last;
1293             }
1294              
1295              
1296 259 100 66     1088 unless ( $_matched || defined($score) )
1297             {
1298            
1299              
1300 256         423 $_[1] = $text; # NOT SURE THIS IS NEEDED
1301 256 50       507 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
1302             Parse::RecDescent::_tracefirst($_[1]),
1303             q{comment},
1304             $tracelevel)
1305             if defined $::RD_TRACE;
1306 256         1164 return undef;
1307             }
1308 3 50 33     14 if (!defined($return) && defined($score))
1309             {
1310 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1311             q{comment},
1312             $tracelevel)
1313             if defined $::RD_TRACE;
1314 0         0 $return = $score_return;
1315             }
1316 3         5 splice @{$thisparser->{errors}}, $err_at;
  3         8  
1317 3 50       7 $return = $item[$#item] unless defined $return;
1318 3 50       9 if (defined $::RD_TRACE)
1319             {
1320 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1321             $return . q{])}, "",
1322             q{comment},
1323             $tracelevel);
1324 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1325             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1326             Parse::RecDescent::_tracefirst($text),
1327             , q{comment},
1328             $tracelevel)
1329             }
1330 3         6 $_[1] = $text;
1331 3         23 return $return;
1332             }
1333              
1334             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
1335             sub Parse::RecDescent::Template::Mustache::Parser::comment_inner
1336             {
1337 83     83   163 my $thisparser = $_[0];
1338 20     20   143 use vars q{$tracelevel};
  20         90  
  20         17276  
1339 83   50     246 local $tracelevel = ($tracelevel||0)+1;
1340 83         133 $ERRORS = 0;
1341 83         182 my $thisrule = $thisparser->{"rules"}{"comment_inner"};
1342              
1343 83 50       186 Parse::RecDescent::_trace(q{Trying rule: [comment_inner]},
1344             Parse::RecDescent::_tracefirst($_[1]),
1345             q{comment_inner},
1346             $tracelevel)
1347             if defined $::RD_TRACE;
1348              
1349            
1350 83         115 my $err_at = @{$thisparser->{errors}};
  83         168  
1351              
1352 83         226 my $score;
1353             my $score_return;
1354 83         0 my $_tok;
1355 83         123 my $return = undef;
1356 83         116 my $_matched=0;
1357 83         109 my $commit=0;
1358 83         143 my @item = ();
1359 83         158 my %item = ();
1360 83         129 my $repeating = $_[2];
1361 83         134 my $_noactions = $_[3];
1362 83 50       200 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  83         124  
  83         142  
1363 83         162 my $_itempos = $_[5];
1364 83 50       264 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1365 83         226 my $text;
1366             my $lastsep;
1367 83         0 my $current_match;
1368 83         238 my $expectation = new Parse::RecDescent::Expectation(q{'!'});
1369 83         530 $expectation->at($_[1]);
1370            
1371 83         283 my $thisoffset;
1372 83         274 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
1373            
1374 83         375 my $thisline;
1375 83         218 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1376              
1377            
1378              
1379 83   33     613 while (!$_matched && !$commit)
1380             {
1381            
1382 83 50       185 Parse::RecDescent::_trace(q{Trying production: ['!' /.*?(?=\\Q$item[2]\\E)/s]},
1383             Parse::RecDescent::_tracefirst($_[1]),
1384             q{comment_inner},
1385             $tracelevel)
1386             if defined $::RD_TRACE;
1387 83         195 my $thisprod = $thisrule->{"prods"}[0];
1388 83         134 $text = $_[1];
1389 83         115 my $_savetext;
1390 83         174 @item = (q{comment_inner});
1391 83         184 %item = (__RULE__ => q{comment_inner});
1392 83         127 my $repcount = 0;
1393              
1394              
1395 83 50       196 Parse::RecDescent::_trace(q{Trying terminal: ['!']},
1396             Parse::RecDescent::_tracefirst($text),
1397             q{comment_inner},
1398             $tracelevel)
1399             if defined $::RD_TRACE;
1400 83         183 undef $lastsep;
1401 83         209 $expectation->is(q{})->at($text);
1402            
1403              
1404 83 50 66     962 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\!/)
  83 100       682  
1405             {
1406 80 50       272 $text = $lastsep . $text if defined $lastsep;
1407            
1408 80         261 $expectation->failed();
1409 80 50       317 Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
1410             Parse::RecDescent::_tracefirst($text))
1411             if defined $::RD_TRACE;
1412 80         167 last;
1413             }
1414 3         16 $current_match = substr($text, $-[0], $+[0] - $-[0]);
1415 3         11 substr($text,0,length($current_match),q{});
1416 3 50       10 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1417             . $current_match . q{])},
1418             Parse::RecDescent::_tracefirst($text))
1419             if defined $::RD_TRACE;
1420 3         7 push @item, $item{__STRING1__}=$current_match;
1421            
1422              
1423 3 50       9 Parse::RecDescent::_trace(q{Trying action},
1424             Parse::RecDescent::_tracefirst($text),
1425             q{comment_inner},
1426             $tracelevel)
1427             if defined $::RD_TRACE;
1428            
1429              
1430 3 50       10 $_tok = ($_noactions) ? 0 : do { $thisparser->{closing_tag} };
  3         9  
1431 3 50       8 unless (defined $_tok)
1432             {
1433 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
1434             if defined $::RD_TRACE;
1435 0         0 last;
1436             }
1437 3 50       8 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1438             . $_tok . q{])},
1439             Parse::RecDescent::_tracefirst($text))
1440             if defined $::RD_TRACE;
1441 3         5 push @item, $_tok;
1442 3         7 $item{__ACTION1__}=$_tok;
1443            
1444              
1445 3 50       7 Parse::RecDescent::_trace(q{Trying terminal: [/.*?(?=\\Q$item[2]\\E)/s]}, Parse::RecDescent::_tracefirst($text),
1446             q{comment_inner},
1447             $tracelevel)
1448             if defined $::RD_TRACE;
1449 3         6 undef $lastsep;
1450 3         8 $expectation->is(q{/.*?(?=\\Q$item[2]\\E)/s})->at($text);
1451            
1452              
1453 3 50 33     55 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:.*?(?=\Q$item[2]\E))/s)
  3 50       52  
1454             {
1455 0 0       0 $text = $lastsep . $text if defined $lastsep;
1456 0         0 $expectation->failed();
1457 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
1458             Parse::RecDescent::_tracefirst($text))
1459             if defined $::RD_TRACE;
1460              
1461 0         0 last;
1462             }
1463 3         13 $current_match = substr($text, $-[0], $+[0] - $-[0]);
1464 3         8 substr($text,0,length($current_match),q{});
1465 3 50       11 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1466             . $current_match . q{])},
1467             Parse::RecDescent::_tracefirst($text))
1468             if defined $::RD_TRACE;
1469 3         7 push @item, $item{__PATTERN1__}=$current_match;
1470            
1471              
1472 3 50       10 Parse::RecDescent::_trace(q{>>Matched production: ['!' /.*?(?=\\Q$item[2]\\E)/s]<<},
1473             Parse::RecDescent::_tracefirst($text),
1474             q{comment_inner},
1475             $tracelevel)
1476             if defined $::RD_TRACE;
1477              
1478              
1479              
1480 3         5 $_matched = 1;
1481 3         7 last;
1482             }
1483              
1484              
1485 83 100 66     332 unless ( $_matched || defined($score) )
1486             {
1487            
1488              
1489 80         157 $_[1] = $text; # NOT SURE THIS IS NEEDED
1490 80 50       217 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
1491             Parse::RecDescent::_tracefirst($_[1]),
1492             q{comment_inner},
1493             $tracelevel)
1494             if defined $::RD_TRACE;
1495 80         394 return undef;
1496             }
1497 3 50 33     33 if (!defined($return) && defined($score))
1498             {
1499 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1500             q{comment_inner},
1501             $tracelevel)
1502             if defined $::RD_TRACE;
1503 0         0 $return = $score_return;
1504             }
1505 3         4 splice @{$thisparser->{errors}}, $err_at;
  3         8  
1506 3 50       19 $return = $item[$#item] unless defined $return;
1507 3 50       10 if (defined $::RD_TRACE)
1508             {
1509 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1510             $return . q{])}, "",
1511             q{comment_inner},
1512             $tracelevel);
1513 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1514             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1515             Parse::RecDescent::_tracefirst($text),
1516             , q{comment_inner},
1517             $tracelevel)
1518             }
1519 3         7 $_[1] = $text;
1520 3         20 return $return;
1521             }
1522              
1523             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
1524             sub Parse::RecDescent::Template::Mustache::Parser::delimiter_change
1525             {
1526 261     261   402 my $thisparser = $_[0];
1527 20     20   152 use vars q{$tracelevel};
  20         40  
  20         6493  
1528 261   50     637 local $tracelevel = ($tracelevel||0)+1;
1529 261         363 $ERRORS = 0;
1530 261         543 my $thisrule = $thisparser->{"rules"}{"delimiter_change"};
1531              
1532 261 50       505 Parse::RecDescent::_trace(q{Trying rule: [delimiter_change]},
1533             Parse::RecDescent::_tracefirst($_[1]),
1534             q{delimiter_change},
1535             $tracelevel)
1536             if defined $::RD_TRACE;
1537              
1538            
1539 261         373 my $err_at = @{$thisparser->{errors}};
  261         461  
1540              
1541 261         614 my $score;
1542             my $score_return;
1543 261         0 my $_tok;
1544 261         358 my $return = undef;
1545 261         381 my $_matched=0;
1546 261         333 my $commit=0;
1547 261         396 my @item = ();
1548 261         407 my %item = ();
1549 261         433 my $repeating = $_[2];
1550 261         384 my $_noactions = $_[3];
1551 261 50       560 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  261         334  
  261         436  
1552 261         420 my $_itempos = $_[5];
1553 261 100       725 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1554 261         625 my $text;
1555             my $lastsep;
1556 261         0 my $current_match;
1557 261         636 my $expectation = new Parse::RecDescent::Expectation(q{standalone_surround});
1558 261         1457 $expectation->at($_[1]);
1559            
1560 261         985 my $thisoffset;
1561 261         826 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
1562            
1563 261         1124 my $thisline;
1564 261         611 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1565              
1566            
1567              
1568 261   33     1645 while (!$_matched && !$commit)
1569             {
1570            
1571 261 50       512 Parse::RecDescent::_trace(q{Trying production: [standalone_surround]},
1572             Parse::RecDescent::_tracefirst($_[1]),
1573             q{delimiter_change},
1574             $tracelevel)
1575             if defined $::RD_TRACE;
1576 261         510 my $thisprod = $thisrule->{"prods"}[0];
1577 261         420 $text = $_[1];
1578 261         357 my $_savetext;
1579 261         532 @item = (q{delimiter_change});
1580 261         500 %item = (__RULE__ => q{delimiter_change});
1581 261         344 my $repcount = 0;
1582              
1583              
1584 261 50       508 Parse::RecDescent::_trace(q{Trying subrule: [standalone_surround]},
1585             Parse::RecDescent::_tracefirst($text),
1586             q{delimiter_change},
1587             $tracelevel)
1588             if defined $::RD_TRACE;
1589 20     20   143 if (1) { no strict qw{refs};
  20         76  
  20         9820  
  261         362  
1590 261         523 $expectation->is(q{})->at($text);
1591 261 100   261   2161 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::standalone_surround($thisparser,$text,$repeating,$_noactions,sub { return [$item[0]] },undef)))
  261         632  
1592             {
1593            
1594 259 50       551 Parse::RecDescent::_trace(q{<<Didn't match subrule: [standalone_surround]>>},
1595             Parse::RecDescent::_tracefirst($text),
1596             q{delimiter_change},
1597             $tracelevel)
1598             if defined $::RD_TRACE;
1599 259         636 $expectation->failed();
1600 259         774 last;
1601             }
1602 2 50       8 Parse::RecDescent::_trace(q{>>Matched subrule: [standalone_surround]<< (return value: [}
1603             . $_tok . q{]},
1604              
1605             Parse::RecDescent::_tracefirst($text),
1606             q{delimiter_change},
1607             $tracelevel)
1608             if defined $::RD_TRACE;
1609 2         5 $item{q{standalone_surround}} = $_tok;
1610 2         4 push @item, $_tok;
1611            
1612             }
1613              
1614 2 50       4 Parse::RecDescent::_trace(q{Trying action},
1615             Parse::RecDescent::_tracefirst($text),
1616             q{delimiter_change},
1617             $tracelevel)
1618             if defined $::RD_TRACE;
1619            
1620              
1621 2 50       4 $_tok = ($_noactions) ? 0 : do {
1622 2 50       4 die "needs two delimiters\n" unless @{ $item[1][2] } == 2;
  2         62  
1623             ( $thisparser->{opening_tag},
1624 0         0 $thisparser->{closing_tag} ) = @{ $item[1][2] };
  0         0  
1625              
1626 0         0 Template::Mustache::Token::Verbatim->new( content =>
1627             $item[1][0] . $item[1][1]
1628             );
1629             };
1630 0 0       0 unless (defined $_tok)
1631             {
1632 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
1633             if defined $::RD_TRACE;
1634 0         0 last;
1635             }
1636 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1637             . $_tok . q{])},
1638             Parse::RecDescent::_tracefirst($text))
1639             if defined $::RD_TRACE;
1640 0         0 push @item, $_tok;
1641 0         0 $item{__ACTION1__}=$_tok;
1642            
1643              
1644 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [standalone_surround]<<},
1645             Parse::RecDescent::_tracefirst($text),
1646             q{delimiter_change},
1647             $tracelevel)
1648             if defined $::RD_TRACE;
1649              
1650              
1651              
1652 0         0 $_matched = 1;
1653 0         0 last;
1654             }
1655              
1656              
1657 259 50 33     1152 unless ( $_matched || defined($score) )
1658             {
1659            
1660              
1661 259         438 $_[1] = $text; # NOT SURE THIS IS NEEDED
1662 259 50       484 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
1663             Parse::RecDescent::_tracefirst($_[1]),
1664             q{delimiter_change},
1665             $tracelevel)
1666             if defined $::RD_TRACE;
1667 259         1234 return undef;
1668             }
1669 0 0 0     0 if (!defined($return) && defined($score))
1670             {
1671 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1672             q{delimiter_change},
1673             $tracelevel)
1674             if defined $::RD_TRACE;
1675 0         0 $return = $score_return;
1676             }
1677 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
1678 0 0       0 $return = $item[$#item] unless defined $return;
1679 0 0       0 if (defined $::RD_TRACE)
1680             {
1681 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1682             $return . q{])}, "",
1683             q{delimiter_change},
1684             $tracelevel);
1685 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1686             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1687             Parse::RecDescent::_tracefirst($text),
1688             , q{delimiter_change},
1689             $tracelevel)
1690             }
1691 0         0 $_[1] = $text;
1692 0         0 return $return;
1693             }
1694              
1695             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
1696             sub Parse::RecDescent::Template::Mustache::Parser::delimiter_change_inner
1697             {
1698 85     85   164 my $thisparser = $_[0];
1699 20     20   219 use vars q{$tracelevel};
  20         52  
  20         25334  
1700 85   50     244 local $tracelevel = ($tracelevel||0)+1;
1701 85         145 $ERRORS = 0;
1702 85         190 my $thisrule = $thisparser->{"rules"}{"delimiter_change_inner"};
1703              
1704 85 50       192 Parse::RecDescent::_trace(q{Trying rule: [delimiter_change_inner]},
1705             Parse::RecDescent::_tracefirst($_[1]),
1706             q{delimiter_change_inner},
1707             $tracelevel)
1708             if defined $::RD_TRACE;
1709              
1710            
1711 85         127 my $err_at = @{$thisparser->{errors}};
  85         178  
1712              
1713 85         263 my $score;
1714             my $score_return;
1715 85         0 my $_tok;
1716 85         115 my $return = undef;
1717 85         126 my $_matched=0;
1718 85         121 my $commit=0;
1719 85         137 my @item = ();
1720 85         143 my %item = ();
1721 85         138 my $repeating = $_[2];
1722 85         130 my $_noactions = $_[3];
1723 85 50       203 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  85         123  
  85         183  
1724 85         142 my $_itempos = $_[5];
1725 85 50       284 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1726 85         220 my $text;
1727             my $lastsep;
1728 85         0 my $current_match;
1729 85         255 my $expectation = new Parse::RecDescent::Expectation(q{'='});
1730 85         579 $expectation->at($_[1]);
1731            
1732 85         301 my $thisoffset;
1733 85         265 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
1734            
1735 85         384 my $thisline;
1736 85         219 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
1737              
1738            
1739              
1740 85   33     608 while (!$_matched && !$commit)
1741             {
1742            
1743 85 50       194 Parse::RecDescent::_trace(q{Trying production: ['=' /\\s*/ /.*?(?=\\=\\Q$item[2]\\E)/s '=']},
1744             Parse::RecDescent::_tracefirst($_[1]),
1745             q{delimiter_change_inner},
1746             $tracelevel)
1747             if defined $::RD_TRACE;
1748 85         183 my $thisprod = $thisrule->{"prods"}[0];
1749 85         136 $text = $_[1];
1750 85         120 my $_savetext;
1751 85         159 @item = (q{delimiter_change_inner});
1752 85         200 %item = (__RULE__ => q{delimiter_change_inner});
1753 85         127 my $repcount = 0;
1754              
1755              
1756 85 50       185 Parse::RecDescent::_trace(q{Trying terminal: ['=']},
1757             Parse::RecDescent::_tracefirst($text),
1758             q{delimiter_change_inner},
1759             $tracelevel)
1760             if defined $::RD_TRACE;
1761 85         161 undef $lastsep;
1762 85         190 $expectation->is(q{})->at($text);
1763            
1764              
1765 85 50 66     929 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\=/)
  85 100       692  
1766             {
1767 83 50       276 $text = $lastsep . $text if defined $lastsep;
1768            
1769 83         263 $expectation->failed();
1770 83 50       314 Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
1771             Parse::RecDescent::_tracefirst($text))
1772             if defined $::RD_TRACE;
1773 83         173 last;
1774             }
1775 2         13 $current_match = substr($text, $-[0], $+[0] - $-[0]);
1776 2         7 substr($text,0,length($current_match),q{});
1777 2 50       51 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1778             . $current_match . q{])},
1779             Parse::RecDescent::_tracefirst($text))
1780             if defined $::RD_TRACE;
1781 2         7 push @item, $item{__STRING1__}=$current_match;
1782            
1783              
1784 2 50       5 Parse::RecDescent::_trace(q{Trying action},
1785             Parse::RecDescent::_tracefirst($text),
1786             q{delimiter_change_inner},
1787             $tracelevel)
1788             if defined $::RD_TRACE;
1789            
1790              
1791 2 50       5 $_tok = ($_noactions) ? 0 : do {
1792             $thisparser->{closing_tag}
1793 2         5 };
1794 2 50       5 unless (defined $_tok)
1795             {
1796 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
1797             if defined $::RD_TRACE;
1798 0         0 last;
1799             }
1800 2 50       4 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1801             . $_tok . q{])},
1802             Parse::RecDescent::_tracefirst($text))
1803             if defined $::RD_TRACE;
1804 2         4 push @item, $_tok;
1805 2         3 $item{__ACTION1__}=$_tok;
1806            
1807              
1808 2 50       6 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
1809             q{delimiter_change_inner},
1810             $tracelevel)
1811             if defined $::RD_TRACE;
1812 2         4 undef $lastsep;
1813 2         7 $expectation->is(q{/\\s*/})->at($text);
1814            
1815              
1816 2 50 33     45 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  2 50       37  
1817             {
1818 0 0       0 $text = $lastsep . $text if defined $lastsep;
1819 0         0 $expectation->failed();
1820 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
1821             Parse::RecDescent::_tracefirst($text))
1822             if defined $::RD_TRACE;
1823              
1824 0         0 last;
1825             }
1826 2         25 $current_match = substr($text, $-[0], $+[0] - $-[0]);
1827 2         6 substr($text,0,length($current_match),q{});
1828 2 50       5 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1829             . $current_match . q{])},
1830             Parse::RecDescent::_tracefirst($text))
1831             if defined $::RD_TRACE;
1832 2         6 push @item, $item{__PATTERN1__}=$current_match;
1833            
1834              
1835 2 50       6 Parse::RecDescent::_trace(q{Trying terminal: [/.*?(?=\\=\\Q$item[2]\\E)/s]}, Parse::RecDescent::_tracefirst($text),
1836             q{delimiter_change_inner},
1837             $tracelevel)
1838             if defined $::RD_TRACE;
1839 2         3 undef $lastsep;
1840 2         8 $expectation->is(q{/.*?(?=\\=\\Q$item[2]\\E)/s})->at($text);
1841            
1842              
1843 2 50 33     40 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:.*?(?=\=\Q$item[2]\E))/s)
  2 50       39  
1844             {
1845 0 0       0 $text = $lastsep . $text if defined $lastsep;
1846 0         0 $expectation->failed();
1847 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
1848             Parse::RecDescent::_tracefirst($text))
1849             if defined $::RD_TRACE;
1850              
1851 0         0 last;
1852             }
1853 2         15 $current_match = substr($text, $-[0], $+[0] - $-[0]);
1854 2         6 substr($text,0,length($current_match),q{});
1855 2 50       5 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1856             . $current_match . q{])},
1857             Parse::RecDescent::_tracefirst($text))
1858             if defined $::RD_TRACE;
1859 2         6 push @item, $item{__PATTERN2__}=$current_match;
1860            
1861              
1862 2 50       11 Parse::RecDescent::_trace(q{Trying terminal: ['=']},
1863             Parse::RecDescent::_tracefirst($text),
1864             q{delimiter_change_inner},
1865             $tracelevel)
1866             if defined $::RD_TRACE;
1867 2         6 undef $lastsep;
1868 2         7 $expectation->is(q{'='})->at($text);
1869            
1870              
1871 2 50 33     23 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\=/)
  2 50       16  
1872             {
1873 0 0       0 $text = $lastsep . $text if defined $lastsep;
1874            
1875 0         0 $expectation->failed();
1876 0 0       0 Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
1877             Parse::RecDescent::_tracefirst($text))
1878             if defined $::RD_TRACE;
1879 0         0 last;
1880             }
1881 2         16 $current_match = substr($text, $-[0], $+[0] - $-[0]);
1882 2         11 substr($text,0,length($current_match),q{});
1883 2 50       8 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
1884             . $current_match . q{])},
1885             Parse::RecDescent::_tracefirst($text))
1886             if defined $::RD_TRACE;
1887 2         5 push @item, $item{__STRING2__}=$current_match;
1888            
1889              
1890 2 50       15 Parse::RecDescent::_trace(q{Trying action},
1891             Parse::RecDescent::_tracefirst($text),
1892             q{delimiter_change_inner},
1893             $tracelevel)
1894             if defined $::RD_TRACE;
1895            
1896              
1897 2 50       11 $_tok = ($_noactions) ? 0 : do {
1898 2         10 [ split ' ', $item[4] ]
1899             };
1900 2 50       5 unless (defined $_tok)
1901             {
1902 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
1903             if defined $::RD_TRACE;
1904 0         0 last;
1905             }
1906 2 50       4 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
1907             . $_tok . q{])},
1908             Parse::RecDescent::_tracefirst($text))
1909             if defined $::RD_TRACE;
1910 2         3 push @item, $_tok;
1911 2         5 $item{__ACTION2__}=$_tok;
1912            
1913              
1914 2 50       3 Parse::RecDescent::_trace(q{>>Matched production: ['=' /\\s*/ /.*?(?=\\=\\Q$item[2]\\E)/s '=']<<},
1915             Parse::RecDescent::_tracefirst($text),
1916             q{delimiter_change_inner},
1917             $tracelevel)
1918             if defined $::RD_TRACE;
1919              
1920              
1921              
1922 2         150 $_matched = 1;
1923 2         7 last;
1924             }
1925              
1926              
1927 85 100 66     331 unless ( $_matched || defined($score) )
1928             {
1929            
1930              
1931 83         166 $_[1] = $text; # NOT SURE THIS IS NEEDED
1932 83 50       169 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
1933             Parse::RecDescent::_tracefirst($_[1]),
1934             q{delimiter_change_inner},
1935             $tracelevel)
1936             if defined $::RD_TRACE;
1937 83         444 return undef;
1938             }
1939 2 50 33     16 if (!defined($return) && defined($score))
1940             {
1941 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
1942             q{delimiter_change_inner},
1943             $tracelevel)
1944             if defined $::RD_TRACE;
1945 0         0 $return = $score_return;
1946             }
1947 2         4 splice @{$thisparser->{errors}}, $err_at;
  2         5  
1948 2 50       6 $return = $item[$#item] unless defined $return;
1949 2 50       5 if (defined $::RD_TRACE)
1950             {
1951 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
1952             $return . q{])}, "",
1953             q{delimiter_change_inner},
1954             $tracelevel);
1955 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
1956             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
1957             Parse::RecDescent::_tracefirst($text),
1958             , q{delimiter_change_inner},
1959             $tracelevel)
1960             }
1961 2         5 $_[1] = $text;
1962 2         16 return $return;
1963             }
1964              
1965             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
1966             sub Parse::RecDescent::Template::Mustache::Parser::eofile
1967             {
1968 70     70   134 my $thisparser = $_[0];
1969 20     20   166 use vars q{$tracelevel};
  20         40  
  20         13406  
1970 70   50     210 local $tracelevel = ($tracelevel||0)+1;
1971 70         118 $ERRORS = 0;
1972 70         175 my $thisrule = $thisparser->{"rules"}{"eofile"};
1973              
1974 70 50       347 Parse::RecDescent::_trace(q{Trying rule: [eofile]},
1975             Parse::RecDescent::_tracefirst($_[1]),
1976             q{eofile},
1977             $tracelevel)
1978             if defined $::RD_TRACE;
1979              
1980            
1981 70         108 my $err_at = @{$thisparser->{errors}};
  70         270  
1982              
1983 70         200 my $score;
1984             my $score_return;
1985 70         0 my $_tok;
1986 70         114 my $return = undef;
1987 70         112 my $_matched=0;
1988 70         105 my $commit=0;
1989 70         125 my @item = ();
1990 70         130 my %item = ();
1991 70         111 my $repeating = $_[2];
1992 70         111 my $_noactions = $_[3];
1993 70 50       181 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  70         105  
  70         137  
1994 70         129 my $_itempos = $_[5];
1995 70 50       272 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
1996 70         195 my $text;
1997             my $lastsep;
1998 70         0 my $current_match;
1999 70         353 my $expectation = new Parse::RecDescent::Expectation(q{/^\\Z/});
2000 70         501 $expectation->at($_[1]);
2001            
2002 70         250 my $thisoffset;
2003 70         250 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
2004            
2005 70         343 my $thisline;
2006 70         188 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2007              
2008            
2009              
2010 70   33     557 while (!$_matched && !$commit)
2011             {
2012            
2013 70 50       174 Parse::RecDescent::_trace(q{Trying production: [/^\\Z/]},
2014             Parse::RecDescent::_tracefirst($_[1]),
2015             q{eofile},
2016             $tracelevel)
2017             if defined $::RD_TRACE;
2018 70         195 my $thisprod = $thisrule->{"prods"}[0];
2019 70         132 $text = $_[1];
2020 70         109 my $_savetext;
2021 70         162 @item = (q{eofile});
2022 70         157 %item = (__RULE__ => q{eofile});
2023 70         125 my $repcount = 0;
2024              
2025              
2026 70 50       241 Parse::RecDescent::_trace(q{Trying terminal: [/^\\Z/]}, Parse::RecDescent::_tracefirst($text),
2027             q{eofile},
2028             $tracelevel)
2029             if defined $::RD_TRACE;
2030 70         126 undef $lastsep;
2031 70         198 $expectation->is(q{})->at($text);
2032            
2033              
2034 70 50 66     943 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^\Z)/)
  70 100       607  
2035             {
2036 5 50       20 $text = $lastsep . $text if defined $lastsep;
2037 5         17 $expectation->failed();
2038 5 50       22 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
2039             Parse::RecDescent::_tracefirst($text))
2040             if defined $::RD_TRACE;
2041              
2042 5         11 last;
2043             }
2044 65         314 $current_match = substr($text, $-[0], $+[0] - $-[0]);
2045 65         192 substr($text,0,length($current_match),q{});
2046 65 50       153 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2047             . $current_match . q{])},
2048             Parse::RecDescent::_tracefirst($text))
2049             if defined $::RD_TRACE;
2050 65         181 push @item, $item{__PATTERN1__}=$current_match;
2051            
2052              
2053 65 50       171 Parse::RecDescent::_trace(q{>>Matched production: [/^\\Z/]<<},
2054             Parse::RecDescent::_tracefirst($text),
2055             q{eofile},
2056             $tracelevel)
2057             if defined $::RD_TRACE;
2058              
2059              
2060              
2061 65         112 $_matched = 1;
2062 65         139 last;
2063             }
2064              
2065              
2066 70 100 66     232 unless ( $_matched || defined($score) )
2067             {
2068            
2069              
2070 5         12 $_[1] = $text; # NOT SURE THIS IS NEEDED
2071 5 50       13 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
2072             Parse::RecDescent::_tracefirst($_[1]),
2073             q{eofile},
2074             $tracelevel)
2075             if defined $::RD_TRACE;
2076 5         30 return undef;
2077             }
2078 65 50 33     316 if (!defined($return) && defined($score))
2079             {
2080 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2081             q{eofile},
2082             $tracelevel)
2083             if defined $::RD_TRACE;
2084 0         0 $return = $score_return;
2085             }
2086 65         211 splice @{$thisparser->{errors}}, $err_at;
  65         170  
2087 65 50       316 $return = $item[$#item] unless defined $return;
2088 65 50       164 if (defined $::RD_TRACE)
2089             {
2090 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2091             $return . q{])}, "",
2092             q{eofile},
2093             $tracelevel);
2094 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2095             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2096             Parse::RecDescent::_tracefirst($text),
2097             , q{eofile},
2098             $tracelevel)
2099             }
2100 65         113 $_[1] = $text;
2101 65         436 return $return;
2102             }
2103              
2104             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
2105             sub Parse::RecDescent::Template::Mustache::Parser::inner_section
2106             {
2107 38     38   634 my $thisparser = $_[0];
2108 20     20   149 use vars q{$tracelevel};
  20         39  
  20         6293  
2109 38   50     96 local $tracelevel = ($tracelevel||0)+1;
2110 38         57 $ERRORS = 0;
2111 38         72 my $thisrule = $thisparser->{"rules"}{"inner_section"};
2112              
2113 38 50       81 Parse::RecDescent::_trace(q{Trying rule: [inner_section]},
2114             Parse::RecDescent::_tracefirst($_[1]),
2115             q{inner_section},
2116             $tracelevel)
2117             if defined $::RD_TRACE;
2118              
2119            
2120 38         48 my $err_at = @{$thisparser->{errors}};
  38         66  
2121              
2122 38         116 my $score;
2123             my $score_return;
2124 38         0 my $_tok;
2125 38         57 my $return = undef;
2126 38         50 my $_matched=0;
2127 38         51 my $commit=0;
2128 38         56 my @item = ();
2129 38         60 my %item = ();
2130 38         60 my $repeating = $_[2];
2131 38         54 my $_noactions = $_[3];
2132 38 50       80 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  38         43  
  38         64  
2133 38         71 my $_itempos = $_[5];
2134 38 50       134 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2135 38         91 my $text;
2136             my $lastsep;
2137 38         0 my $current_match;
2138 38         112 my $expectation = new Parse::RecDescent::Expectation(q{close_section});
2139 38         221 $expectation->at($_[1]);
2140            
2141 38         125 my $thisoffset;
2142 38         121 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
2143            
2144 38         179 my $thisline;
2145 38         90 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2146              
2147            
2148              
2149 38   33     242 while (!$_matched && !$commit)
2150             {
2151            
2152 38 50       76 Parse::RecDescent::_trace(q{Trying production: [close_section template_item]},
2153             Parse::RecDescent::_tracefirst($_[1]),
2154             q{inner_section},
2155             $tracelevel)
2156             if defined $::RD_TRACE;
2157 38         77 my $thisprod = $thisrule->{"prods"}[0];
2158 38         54 $text = $_[1];
2159 38         47 my $_savetext;
2160 38         91 @item = (q{inner_section});
2161 38         79 %item = (__RULE__ => q{inner_section});
2162 38         59 my $repcount = 0;
2163              
2164              
2165 38 50       81 Parse::RecDescent::_trace(q{Trying subrule: [close_section]},
2166             Parse::RecDescent::_tracefirst($text),
2167             q{inner_section},
2168             $tracelevel)
2169             if defined $::RD_TRACE;
2170 20     20   147 if (1) { no strict qw{refs};
  20         43  
  20         3125  
  38         43  
2171 38         85 $expectation->is(q{})->at($text);
2172 38 100   38   210 $_savetext = $text;if (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::close_section($thisparser,$text,$repeating,1,sub { return [ $arg[0] ] },undef)))
  38         166  
  38         127  
2173             {
2174 11         31 $text = $_savetext;
2175 11 50       23 Parse::RecDescent::_trace(q{<<...!Matched(reject) subrule: [close_section]>>},
2176             Parse::RecDescent::_tracefirst($text),
2177             q{inner_section},
2178             $tracelevel)
2179             if defined $::RD_TRACE;
2180 11         41 $expectation->failed();
2181 11         36 last;
2182             }
2183 27 50       93 Parse::RecDescent::_trace(q{>>...!Didn't match(keep) subrule: [close_section]<< (return value: [}
2184             . $_tok . q{]},
2185              
2186             Parse::RecDescent::_tracefirst($text),
2187             q{inner_section},
2188             $tracelevel)
2189             if defined $::RD_TRACE;
2190 27         50 $item{q{close_section}} = $_tok;
2191 27         45 push @item, $_tok;
2192 27         55 $text = $_savetext;
2193             }
2194              
2195 27 50       55 Parse::RecDescent::_trace(q{Trying subrule: [template_item]},
2196             Parse::RecDescent::_tracefirst($text),
2197             q{inner_section},
2198             $tracelevel)
2199             if defined $::RD_TRACE;
2200 20     20   191 if (1) { no strict qw{refs};
  20         70  
  20         8279  
  27         36  
2201 27         63 $expectation->is(q{template_item})->at($text);
2202 27 50   27   270 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::template_item($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  27         59  
2203             {
2204            
2205 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match subrule: [template_item]>>},
2206             Parse::RecDescent::_tracefirst($text),
2207             q{inner_section},
2208             $tracelevel)
2209             if defined $::RD_TRACE;
2210 0         0 $expectation->failed();
2211 0         0 last;
2212             }
2213 27 50       88 Parse::RecDescent::_trace(q{>>Matched subrule: [template_item]<< (return value: [}
2214             . $_tok . q{]},
2215              
2216             Parse::RecDescent::_tracefirst($text),
2217             q{inner_section},
2218             $tracelevel)
2219             if defined $::RD_TRACE;
2220 27         57 $item{q{template_item}} = $_tok;
2221 27         48 push @item, $_tok;
2222            
2223             }
2224              
2225 27 50       57 Parse::RecDescent::_trace(q{>>Matched production: [close_section template_item]<<},
2226             Parse::RecDescent::_tracefirst($text),
2227             q{inner_section},
2228             $tracelevel)
2229             if defined $::RD_TRACE;
2230              
2231              
2232              
2233 27         42 $_matched = 1;
2234 27         52 last;
2235             }
2236              
2237              
2238 38 100 66     115 unless ( $_matched || defined($score) )
2239             {
2240            
2241              
2242 11         18 $_[1] = $text; # NOT SURE THIS IS NEEDED
2243 11 50       22 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
2244             Parse::RecDescent::_tracefirst($_[1]),
2245             q{inner_section},
2246             $tracelevel)
2247             if defined $::RD_TRACE;
2248 11         49 return undef;
2249             }
2250 27 50 33     112 if (!defined($return) && defined($score))
2251             {
2252 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2253             q{inner_section},
2254             $tracelevel)
2255             if defined $::RD_TRACE;
2256 0         0 $return = $score_return;
2257             }
2258 27         67 splice @{$thisparser->{errors}}, $err_at;
  27         54  
2259 27 50       80 $return = $item[$#item] unless defined $return;
2260 27 50       61 if (defined $::RD_TRACE)
2261             {
2262 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2263             $return . q{])}, "",
2264             q{inner_section},
2265             $tracelevel);
2266 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2267             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2268             Parse::RecDescent::_tracefirst($text),
2269             , q{inner_section},
2270             $tracelevel)
2271             }
2272 27         48 $_[1] = $text;
2273 27         177 return $return;
2274             }
2275              
2276             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
2277             sub Parse::RecDescent::Template::Mustache::Parser::open_section
2278             {
2279 272     272   442 my $thisparser = $_[0];
2280 20     20   167 use vars q{$tracelevel};
  20         48  
  20         9162  
2281 272   50     611 local $tracelevel = ($tracelevel||0)+1;
2282 272         373 $ERRORS = 0;
2283 272         499 my $thisrule = $thisparser->{"rules"}{"open_section"};
2284              
2285 272 50       531 Parse::RecDescent::_trace(q{Trying rule: [open_section]},
2286             Parse::RecDescent::_tracefirst($_[1]),
2287             q{open_section},
2288             $tracelevel)
2289             if defined $::RD_TRACE;
2290              
2291            
2292 272         365 my $err_at = @{$thisparser->{errors}};
  272         456  
2293              
2294 272         626 my $score;
2295             my $score_return;
2296 272         0 my $_tok;
2297 272         393 my $return = undef;
2298 272         352 my $_matched=0;
2299 272         341 my $commit=0;
2300 272         382 my @item = ();
2301 272         392 my %item = ();
2302 272         388 my $repeating = $_[2];
2303 272         433 my $_noactions = $_[3];
2304 272 50       540 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  272         342  
  272         447  
2305 272         429 my $_itempos = $_[5];
2306 272 100       700 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2307 272         638 my $text;
2308             my $lastsep;
2309 272         0 my $current_match;
2310 272         589 my $expectation = new Parse::RecDescent::Expectation(q{/\\s*/});
2311 272         1443 $expectation->at($_[1]);
2312            
2313 272         906 my $thisoffset;
2314 272         666 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
2315            
2316 272         1088 my $thisline;
2317 272         782 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2318              
2319            
2320              
2321 272   33     1622 while (!$_matched && !$commit)
2322             {
2323            
2324 272 50       548 Parse::RecDescent::_trace(q{Trying production: [/\\s*/ opening_tag /[#^]/ /\\s*/ /[-\\w.]+/ /\\s*/ closing_tag /\\s*/]},
2325             Parse::RecDescent::_tracefirst($_[1]),
2326             q{open_section},
2327             $tracelevel)
2328             if defined $::RD_TRACE;
2329 272         514 my $thisprod = $thisrule->{"prods"}[0];
2330 272         412 $text = $_[1];
2331 272         335 my $_savetext;
2332 272         480 @item = (q{open_section});
2333 272         480 %item = (__RULE__ => q{open_section});
2334 272         374 my $repcount = 0;
2335              
2336              
2337 272 50       533 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
2338             q{open_section},
2339             $tracelevel)
2340             if defined $::RD_TRACE;
2341 272         393 undef $lastsep;
2342 272         582 $expectation->is(q{})->at($text);
2343            
2344              
2345 272 50 33     2726 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  272 50       2037  
2346             {
2347 0 0       0 $text = $lastsep . $text if defined $lastsep;
2348 0         0 $expectation->failed();
2349 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
2350             Parse::RecDescent::_tracefirst($text))
2351             if defined $::RD_TRACE;
2352              
2353 0         0 last;
2354             }
2355 272         1233 $current_match = substr($text, $-[0], $+[0] - $-[0]);
2356 272         991 substr($text,0,length($current_match),q{});
2357 272 50       523 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2358             . $current_match . q{])},
2359             Parse::RecDescent::_tracefirst($text))
2360             if defined $::RD_TRACE;
2361 272         651 push @item, $item{__PATTERN1__}=$current_match;
2362            
2363              
2364 272 50       605 Parse::RecDescent::_trace(q{Trying subrule: [opening_tag]},
2365             Parse::RecDescent::_tracefirst($text),
2366             q{open_section},
2367             $tracelevel)
2368             if defined $::RD_TRACE;
2369 20     20   157 if (1) { no strict qw{refs};
  20         47  
  20         15791  
  272         358  
2370 272         660 $expectation->is(q{opening_tag})->at($text);
2371 272 100   272   2310 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::opening_tag($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  272         585  
2372             {
2373            
2374 176 50       366 Parse::RecDescent::_trace(q{<<Didn't match subrule: [opening_tag]>>},
2375             Parse::RecDescent::_tracefirst($text),
2376             q{open_section},
2377             $tracelevel)
2378             if defined $::RD_TRACE;
2379 176         437 $expectation->failed();
2380 176         1205 last;
2381             }
2382 96 50       361 Parse::RecDescent::_trace(q{>>Matched subrule: [opening_tag]<< (return value: [}
2383             . $_tok . q{]},
2384              
2385             Parse::RecDescent::_tracefirst($text),
2386             q{open_section},
2387             $tracelevel)
2388             if defined $::RD_TRACE;
2389 96         206 $item{q{opening_tag}} = $_tok;
2390 96         167 push @item, $_tok;
2391            
2392             }
2393              
2394 96 50       209 Parse::RecDescent::_trace(q{Trying terminal: [/[#^]/]}, Parse::RecDescent::_tracefirst($text),
2395             q{open_section},
2396             $tracelevel)
2397             if defined $::RD_TRACE;
2398 96         145 undef $lastsep;
2399 96         298 $expectation->is(q{/[#^]/})->at($text);
2400            
2401              
2402 96 50 66     991 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:[#^])/)
  96 100       780  
2403             {
2404 77 50       301 $text = $lastsep . $text if defined $lastsep;
2405 77         246 $expectation->failed();
2406 77 50       562 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
2407             Parse::RecDescent::_tracefirst($text))
2408             if defined $::RD_TRACE;
2409              
2410 77         171 last;
2411             }
2412 19         87 $current_match = substr($text, $-[0], $+[0] - $-[0]);
2413 19         51 substr($text,0,length($current_match),q{});
2414 19 50       46 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2415             . $current_match . q{])},
2416             Parse::RecDescent::_tracefirst($text))
2417             if defined $::RD_TRACE;
2418 19         46 push @item, $item{__PATTERN2__}=$current_match;
2419            
2420              
2421 19 50       40 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
2422             q{open_section},
2423             $tracelevel)
2424             if defined $::RD_TRACE;
2425 19         31 undef $lastsep;
2426 19         56 $expectation->is(q{/\\s*/})->at($text);
2427            
2428              
2429 19 50 33     199 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  19 50       149  
2430             {
2431 0 0       0 $text = $lastsep . $text if defined $lastsep;
2432 0         0 $expectation->failed();
2433 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
2434             Parse::RecDescent::_tracefirst($text))
2435             if defined $::RD_TRACE;
2436              
2437 0         0 last;
2438             }
2439 19         74 $current_match = substr($text, $-[0], $+[0] - $-[0]);
2440 19         50 substr($text,0,length($current_match),q{});
2441 19 50       45 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2442             . $current_match . q{])},
2443             Parse::RecDescent::_tracefirst($text))
2444             if defined $::RD_TRACE;
2445 19         56 push @item, $item{__PATTERN3__}=$current_match;
2446            
2447              
2448 19 50       40 Parse::RecDescent::_trace(q{Trying terminal: [/[-\\w.]+/]}, Parse::RecDescent::_tracefirst($text),
2449             q{open_section},
2450             $tracelevel)
2451             if defined $::RD_TRACE;
2452 19         27 undef $lastsep;
2453 19         69 $expectation->is(q{/[-\\w.]+/})->at($text);
2454            
2455              
2456 19 50 66     176 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:[-\w.]+)/)
  19 100       142  
2457             {
2458 1 50       5 $text = $lastsep . $text if defined $lastsep;
2459 1         3 $expectation->failed();
2460 1 50       8 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
2461             Parse::RecDescent::_tracefirst($text))
2462             if defined $::RD_TRACE;
2463              
2464 1         2 last;
2465             }
2466 18         105 $current_match = substr($text, $-[0], $+[0] - $-[0]);
2467 18         56 substr($text,0,length($current_match),q{});
2468 18 50       47 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2469             . $current_match . q{])},
2470             Parse::RecDescent::_tracefirst($text))
2471             if defined $::RD_TRACE;
2472 18         47 push @item, $item{__PATTERN4__}=$current_match;
2473            
2474              
2475 18 50       40 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
2476             q{open_section},
2477             $tracelevel)
2478             if defined $::RD_TRACE;
2479 18         28 undef $lastsep;
2480 18         47 $expectation->is(q{/\\s*/})->at($text);
2481            
2482              
2483 18 50 33     168 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  18 50       131  
2484             {
2485 0 0       0 $text = $lastsep . $text if defined $lastsep;
2486 0         0 $expectation->failed();
2487 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
2488             Parse::RecDescent::_tracefirst($text))
2489             if defined $::RD_TRACE;
2490              
2491 0         0 last;
2492             }
2493 18         83 $current_match = substr($text, $-[0], $+[0] - $-[0]);
2494 18         50 substr($text,0,length($current_match),q{});
2495 18 50       43 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2496             . $current_match . q{])},
2497             Parse::RecDescent::_tracefirst($text))
2498             if defined $::RD_TRACE;
2499 18         48 push @item, $item{__PATTERN5__}=$current_match;
2500            
2501              
2502 18 50       41 Parse::RecDescent::_trace(q{Trying subrule: [closing_tag]},
2503             Parse::RecDescent::_tracefirst($text),
2504             q{open_section},
2505             $tracelevel)
2506             if defined $::RD_TRACE;
2507 20     20   149 if (1) { no strict qw{refs};
  20         200  
  20         15699  
  18         23  
2508 18         44 $expectation->is(q{closing_tag})->at($text);
2509 18 50   18   193 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::closing_tag($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  18         53  
2510             {
2511            
2512 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match subrule: [closing_tag]>>},
2513             Parse::RecDescent::_tracefirst($text),
2514             q{open_section},
2515             $tracelevel)
2516             if defined $::RD_TRACE;
2517 0         0 $expectation->failed();
2518 0         0 last;
2519             }
2520 18 50       63 Parse::RecDescent::_trace(q{>>Matched subrule: [closing_tag]<< (return value: [}
2521             . $_tok . q{]},
2522              
2523             Parse::RecDescent::_tracefirst($text),
2524             q{open_section},
2525             $tracelevel)
2526             if defined $::RD_TRACE;
2527 18         42 $item{q{closing_tag}} = $_tok;
2528 18         32 push @item, $_tok;
2529            
2530             }
2531              
2532 18 50       39 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
2533             q{open_section},
2534             $tracelevel)
2535             if defined $::RD_TRACE;
2536 18         30 undef $lastsep;
2537 18         47 $expectation->is(q{/\\s*/})->at($text);
2538            
2539              
2540 18 50 33     216 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  18 50       143  
2541             {
2542 0 0       0 $text = $lastsep . $text if defined $lastsep;
2543 0         0 $expectation->failed();
2544 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
2545             Parse::RecDescent::_tracefirst($text))
2546             if defined $::RD_TRACE;
2547              
2548 0         0 last;
2549             }
2550 18         84 $current_match = substr($text, $-[0], $+[0] - $-[0]);
2551 18         49 substr($text,0,length($current_match),q{});
2552 18 50       50 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2553             . $current_match . q{])},
2554             Parse::RecDescent::_tracefirst($text))
2555             if defined $::RD_TRACE;
2556 18         46 push @item, $item{__PATTERN6__}=$current_match;
2557            
2558              
2559 18 50       56 Parse::RecDescent::_trace(q{Trying action},
2560             Parse::RecDescent::_tracefirst($text),
2561             q{open_section},
2562             $tracelevel)
2563             if defined $::RD_TRACE;
2564            
2565              
2566 18 50       47 $_tok = ($_noactions) ? 0 : do {
2567 18         30 my $prev = $thisparser->{prev_is_standalone};
2568 18         33 $thisparser->{prev_is_standalone} = 0;
2569 18 100 100     88 if ( $item[1] =~ /\n/ or $prev ) {
2570 11 100       28 if ( $item[8] =~ /\n/ ) {
2571 3         15 $item[1] =~ s/(^|\n)[ \t]*?$/$1/;
2572 3         11 $item[8] =~ s/^.*?\n//;
2573 3         7 $thisparser->{prev_is_standalone} = 1;
2574             }
2575             }
2576              
2577 18         407 [ $item[5], $item[3] eq '^',
2578             Template::Mustache::Token::Verbatim->new( content => $item[1] ),
2579             Template::Mustache::Token::Verbatim->new( content => $item[8] )
2580             ];
2581             };
2582 18 50       1461 unless (defined $_tok)
2583             {
2584 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
2585             if defined $::RD_TRACE;
2586 0         0 last;
2587             }
2588 18 50       53 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
2589             . $_tok . q{])},
2590             Parse::RecDescent::_tracefirst($text))
2591             if defined $::RD_TRACE;
2592 18         36 push @item, $_tok;
2593 18         33 $item{__ACTION1__}=$_tok;
2594            
2595              
2596 18 50       42 Parse::RecDescent::_trace(q{>>Matched production: [/\\s*/ opening_tag /[#^]/ /\\s*/ /[-\\w.]+/ /\\s*/ closing_tag /\\s*/]<<},
2597             Parse::RecDescent::_tracefirst($text),
2598             q{open_section},
2599             $tracelevel)
2600             if defined $::RD_TRACE;
2601              
2602              
2603              
2604 18         29 $_matched = 1;
2605 18         63 last;
2606             }
2607              
2608              
2609 272 100 66     1129 unless ( $_matched || defined($score) )
2610             {
2611            
2612              
2613 254         472 $_[1] = $text; # NOT SURE THIS IS NEEDED
2614 254 50       491 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
2615             Parse::RecDescent::_tracefirst($_[1]),
2616             q{open_section},
2617             $tracelevel)
2618             if defined $::RD_TRACE;
2619 254         1238 return undef;
2620             }
2621 18 50 33     81 if (!defined($return) && defined($score))
2622             {
2623 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2624             q{open_section},
2625             $tracelevel)
2626             if defined $::RD_TRACE;
2627 0         0 $return = $score_return;
2628             }
2629 18         30 splice @{$thisparser->{errors}}, $err_at;
  18         40  
2630 18 50       55 $return = $item[$#item] unless defined $return;
2631 18 50       48 if (defined $::RD_TRACE)
2632             {
2633 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2634             $return . q{])}, "",
2635             q{open_section},
2636             $tracelevel);
2637 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2638             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2639             Parse::RecDescent::_tracefirst($text),
2640             , q{open_section},
2641             $tracelevel)
2642             }
2643 18         44 $_[1] = $text;
2644 18         136 return $return;
2645             }
2646              
2647             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
2648             sub Parse::RecDescent::Template::Mustache::Parser::opening_tag
2649             {
2650 1904     1904   2802 my $thisparser = $_[0];
2651 20     20   150 use vars q{$tracelevel};
  20         47  
  20         13558  
2652 1904   50     3685 local $tracelevel = ($tracelevel||0)+1;
2653 1904         2686 $ERRORS = 0;
2654 1904         2934 my $thisrule = $thisparser->{"rules"}{"opening_tag"};
2655              
2656 1904 50       3037 Parse::RecDescent::_trace(q{Trying rule: [opening_tag]},
2657             Parse::RecDescent::_tracefirst($_[1]),
2658             q{opening_tag},
2659             $tracelevel)
2660             if defined $::RD_TRACE;
2661              
2662            
2663 1904         2182 my $err_at = @{$thisparser->{errors}};
  1904         2864  
2664              
2665 1904         3721 my $score;
2666             my $score_return;
2667 1904         0 my $_tok;
2668 1904         2277 my $return = undef;
2669 1904         2191 my $_matched=0;
2670 1904         2152 my $commit=0;
2671 1904         2407 my @item = ();
2672 1904         2248 my %item = ();
2673 1904         2224 my $repeating = $_[2];
2674 1904         2264 my $_noactions = $_[3];
2675 1904 50       3079 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  1904         2567  
  1904         2663  
2676 1904         2474 my $_itempos = $_[5];
2677 1904 100       4215 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2678 1904         3667 my $text;
2679             my $lastsep;
2680 1904         0 my $current_match;
2681 1904         3733 my $expectation = new Parse::RecDescent::Expectation(q{'$thisparser->\{opening_tag\}'});
2682 1904         10060 $expectation->at($_[1]);
2683            
2684 1904         6282 my $thisoffset;
2685 1904         4554 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
2686            
2687 1904         7932 my $thisline;
2688 1904         3800 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2689              
2690            
2691              
2692 1904   33     10383 while (!$_matched && !$commit)
2693             {
2694            
2695 1904 50       3110 Parse::RecDescent::_trace(q{Trying production: ['$thisparser->\{opening_tag\}']},
2696             Parse::RecDescent::_tracefirst($_[1]),
2697             q{opening_tag},
2698             $tracelevel)
2699             if defined $::RD_TRACE;
2700 1904         2813 my $thisprod = $thisrule->{"prods"}[0];
2701 1904         2570 $text = $_[1];
2702 1904         2195 my $_savetext;
2703 1904         2961 @item = (q{opening_tag});
2704 1904         3077 %item = (__RULE__ => q{opening_tag});
2705 1904         2226 my $repcount = 0;
2706              
2707              
2708 1904 50       3037 Parse::RecDescent::_trace(q{Trying terminal: ['$thisparser->\{opening_tag\}']},
2709             Parse::RecDescent::_tracefirst($text),
2710             q{opening_tag},
2711             $tracelevel)
2712             if defined $::RD_TRACE;
2713 1904         2558 undef $lastsep;
2714 1904         3485 $expectation->is(q{})->at($text);
2715            
2716              
2717 1904 50 33     16180 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and do { $_tok = "$thisparser->{opening_tag}"; 1 } and
  1904 100 66     7965  
  1904   66     3249  
  1904         7324  
2718             substr($text,0,length($_tok)) eq $_tok and
2719 667         1154 do { substr($text,0,length($_tok)) = ""; 1; }
  667         1461  
2720             )
2721             {
2722 1237 50       2854 $text = $lastsep . $text if defined $lastsep;
2723            
2724 1237         3189 $expectation->failed();
2725 1237 50       3960 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
2726             Parse::RecDescent::_tracefirst($text))
2727             if defined $::RD_TRACE;
2728 1237         2170 last;
2729             }
2730 667 50       1367 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2731             . $_tok . q{])},
2732             Parse::RecDescent::_tracefirst($text))
2733             if defined $::RD_TRACE;
2734 667         1447 push @item, $item{__STRING1__}=$_tok;
2735            
2736              
2737 667 50       1156 Parse::RecDescent::_trace(q{>>Matched production: ['$thisparser->\{opening_tag\}']<<},
2738             Parse::RecDescent::_tracefirst($text),
2739             q{opening_tag},
2740             $tracelevel)
2741             if defined $::RD_TRACE;
2742              
2743              
2744              
2745 667         797 $_matched = 1;
2746 667         1155 last;
2747             }
2748              
2749              
2750 1904 100 66     4750 unless ( $_matched || defined($score) )
2751             {
2752            
2753              
2754 1237         1934 $_[1] = $text; # NOT SURE THIS IS NEEDED
2755 1237 50       1982 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
2756             Parse::RecDescent::_tracefirst($_[1]),
2757             q{opening_tag},
2758             $tracelevel)
2759             if defined $::RD_TRACE;
2760 1237         6051 return undef;
2761             }
2762 667 50 33     1918 if (!defined($return) && defined($score))
2763             {
2764 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
2765             q{opening_tag},
2766             $tracelevel)
2767             if defined $::RD_TRACE;
2768 0         0 $return = $score_return;
2769             }
2770 667         804 splice @{$thisparser->{errors}}, $err_at;
  667         1277  
2771 667 50       1456 $return = $item[$#item] unless defined $return;
2772 667 50       1155 if (defined $::RD_TRACE)
2773             {
2774 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
2775             $return . q{])}, "",
2776             q{opening_tag},
2777             $tracelevel);
2778 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
2779             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
2780             Parse::RecDescent::_tracefirst($text),
2781             , q{opening_tag},
2782             $tracelevel)
2783             }
2784 667         1086 $_[1] = $text;
2785 667         3791 return $return;
2786             }
2787              
2788             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
2789             sub Parse::RecDescent::Template::Mustache::Parser::partial
2790             {
2791 288     288   470 my $thisparser = $_[0];
2792 20     20   179 use vars q{$tracelevel};
  20         40  
  20         9532  
2793 288   50     664 local $tracelevel = ($tracelevel||0)+1;
2794 288         397 $ERRORS = 0;
2795 288         542 my $thisrule = $thisparser->{"rules"}{"partial"};
2796              
2797 288 50       537 Parse::RecDescent::_trace(q{Trying rule: [partial]},
2798             Parse::RecDescent::_tracefirst($_[1]),
2799             q{partial},
2800             $tracelevel)
2801             if defined $::RD_TRACE;
2802              
2803            
2804 288         1616 my $err_at = @{$thisparser->{errors}};
  288         481  
2805              
2806 288         669 my $score;
2807             my $score_return;
2808 288         0 my $_tok;
2809 288         367 my $return = undef;
2810 288         359 my $_matched=0;
2811 288         366 my $commit=0;
2812 288         404 my @item = ();
2813 288         393 my %item = ();
2814 288         384 my $repeating = $_[2];
2815 288         383 my $_noactions = $_[3];
2816 288 50       534 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  288         412  
  288         471  
2817 288         431 my $_itempos = $_[5];
2818 288 100       736 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
2819 288         647 my $text;
2820             my $lastsep;
2821 288         0 my $current_match;
2822 288         673 my $expectation = new Parse::RecDescent::Expectation(q{/\\s*/});
2823 288         1591 $expectation->at($_[1]);
2824            
2825 288         954 my $thisoffset;
2826 288         735 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
2827            
2828 288         1222 my $thisline;
2829 288         625 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
2830              
2831            
2832              
2833 288   33     1783 while (!$_matched && !$commit)
2834             {
2835            
2836 288 50       588 Parse::RecDescent::_trace(q{Trying production: [/\\s*/ opening_tag '>' /\\s*/ /[\\/-\\w.]+/ /\\s*/ closing_tag /\\s*/]},
2837             Parse::RecDescent::_tracefirst($_[1]),
2838             q{partial},
2839             $tracelevel)
2840             if defined $::RD_TRACE;
2841 288         574 my $thisprod = $thisrule->{"prods"}[0];
2842 288         446 $text = $_[1];
2843 288         357 my $_savetext;
2844 288         527 @item = (q{partial});
2845 288         536 %item = (__RULE__ => q{partial});
2846 288         397 my $repcount = 0;
2847              
2848              
2849 288 50       543 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
2850             q{partial},
2851             $tracelevel)
2852             if defined $::RD_TRACE;
2853 288         469 undef $lastsep;
2854 288         620 $expectation->is(q{})->at($text);
2855            
2856              
2857 288 50 33     3149 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  288 50       2241  
2858             {
2859 0 0       0 $text = $lastsep . $text if defined $lastsep;
2860 0         0 $expectation->failed();
2861 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
2862             Parse::RecDescent::_tracefirst($text))
2863             if defined $::RD_TRACE;
2864              
2865 0         0 last;
2866             }
2867 288         1396 $current_match = substr($text, $-[0], $+[0] - $-[0]);
2868 288         772 substr($text,0,length($current_match),q{});
2869 288 50       608 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2870             . $current_match . q{])},
2871             Parse::RecDescent::_tracefirst($text))
2872             if defined $::RD_TRACE;
2873 288         715 push @item, $item{__PATTERN1__}=$current_match;
2874            
2875              
2876 288 50       613 Parse::RecDescent::_trace(q{Trying subrule: [opening_tag]},
2877             Parse::RecDescent::_tracefirst($text),
2878             q{partial},
2879             $tracelevel)
2880             if defined $::RD_TRACE;
2881 20     20   145 if (1) { no strict qw{refs};
  20         53  
  20         15986  
  288         376  
2882 288         667 $expectation->is(q{opening_tag})->at($text);
2883 288 100   288   2456 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::opening_tag($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  288         595  
2884             {
2885            
2886 176 50       397 Parse::RecDescent::_trace(q{<<Didn't match subrule: [opening_tag]>>},
2887             Parse::RecDescent::_tracefirst($text),
2888             q{partial},
2889             $tracelevel)
2890             if defined $::RD_TRACE;
2891 176         434 $expectation->failed();
2892 176         1303 last;
2893             }
2894 112 50       400 Parse::RecDescent::_trace(q{>>Matched subrule: [opening_tag]<< (return value: [}
2895             . $_tok . q{]},
2896              
2897             Parse::RecDescent::_tracefirst($text),
2898             q{partial},
2899             $tracelevel)
2900             if defined $::RD_TRACE;
2901 112         248 $item{q{opening_tag}} = $_tok;
2902 112         229 push @item, $_tok;
2903            
2904             }
2905              
2906 112 50       664 Parse::RecDescent::_trace(q{Trying terminal: ['>']},
2907             Parse::RecDescent::_tracefirst($text),
2908             q{partial},
2909             $tracelevel)
2910             if defined $::RD_TRACE;
2911 112         174 undef $lastsep;
2912 112         293 $expectation->is(q{'>'})->at($text);
2913            
2914              
2915 112 50 66     1157 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\>/)
  112 100       866  
2916             {
2917 96 50       303 $text = $lastsep . $text if defined $lastsep;
2918            
2919 96         335 $expectation->failed();
2920 96 50       759 Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
2921             Parse::RecDescent::_tracefirst($text))
2922             if defined $::RD_TRACE;
2923 96         201 last;
2924             }
2925 16         78 $current_match = substr($text, $-[0], $+[0] - $-[0]);
2926 16         53 substr($text,0,length($current_match),q{});
2927 16 50       43 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2928             . $current_match . q{])},
2929             Parse::RecDescent::_tracefirst($text))
2930             if defined $::RD_TRACE;
2931 16         42 push @item, $item{__STRING1__}=$current_match;
2932            
2933              
2934 16 50       54 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
2935             q{partial},
2936             $tracelevel)
2937             if defined $::RD_TRACE;
2938 16         26 undef $lastsep;
2939 16         54 $expectation->is(q{/\\s*/})->at($text);
2940            
2941              
2942 16 50 33     170 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  16 50       131  
2943             {
2944 0 0       0 $text = $lastsep . $text if defined $lastsep;
2945 0         0 $expectation->failed();
2946 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
2947             Parse::RecDescent::_tracefirst($text))
2948             if defined $::RD_TRACE;
2949              
2950 0         0 last;
2951             }
2952 16         73 $current_match = substr($text, $-[0], $+[0] - $-[0]);
2953 16         40 substr($text,0,length($current_match),q{});
2954 16 50       36 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2955             . $current_match . q{])},
2956             Parse::RecDescent::_tracefirst($text))
2957             if defined $::RD_TRACE;
2958 16         42 push @item, $item{__PATTERN2__}=$current_match;
2959            
2960              
2961 16 50       34 Parse::RecDescent::_trace(q{Trying terminal: [/[\\/-\\w.]+/]}, Parse::RecDescent::_tracefirst($text),
2962             q{partial},
2963             $tracelevel)
2964             if defined $::RD_TRACE;
2965 16         34 undef $lastsep;
2966 16         60 $expectation->is(q{/[\\/-\\w.]+/})->at($text);
2967            
2968              
2969 16 50 33     153 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:[\/\w.-]+)/)
  16 50       144  
2970             {
2971 0 0       0 $text = $lastsep . $text if defined $lastsep;
2972 0         0 $expectation->failed();
2973 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
2974             Parse::RecDescent::_tracefirst($text))
2975             if defined $::RD_TRACE;
2976              
2977 0         0 last;
2978             }
2979 16         77 $current_match = substr($text, $-[0], $+[0] - $-[0]);
2980 16         45 substr($text,0,length($current_match),q{});
2981 16 50       39 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
2982             . $current_match . q{])},
2983             Parse::RecDescent::_tracefirst($text))
2984             if defined $::RD_TRACE;
2985 16         48 push @item, $item{__PATTERN3__}=$current_match;
2986            
2987              
2988 16 50       35 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
2989             q{partial},
2990             $tracelevel)
2991             if defined $::RD_TRACE;
2992 16         40 undef $lastsep;
2993 16         42 $expectation->is(q{/\\s*/})->at($text);
2994            
2995              
2996 16 50 33     154 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  16 50       168  
2997             {
2998 0 0       0 $text = $lastsep . $text if defined $lastsep;
2999 0         0 $expectation->failed();
3000 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
3001             Parse::RecDescent::_tracefirst($text))
3002             if defined $::RD_TRACE;
3003              
3004 0         0 last;
3005             }
3006 16         112 $current_match = substr($text, $-[0], $+[0] - $-[0]);
3007 16         46 substr($text,0,length($current_match),q{});
3008 16 50       35 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3009             . $current_match . q{])},
3010             Parse::RecDescent::_tracefirst($text))
3011             if defined $::RD_TRACE;
3012 16         41 push @item, $item{__PATTERN4__}=$current_match;
3013            
3014              
3015 16 50       53 Parse::RecDescent::_trace(q{Trying subrule: [closing_tag]},
3016             Parse::RecDescent::_tracefirst($text),
3017             q{partial},
3018             $tracelevel)
3019             if defined $::RD_TRACE;
3020 20     20   143 if (1) { no strict qw{refs};
  20         41  
  20         18081  
  16         22  
3021 16         83 $expectation->is(q{closing_tag})->at($text);
3022 16 50   16   164 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::closing_tag($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  16         50  
3023             {
3024            
3025 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match subrule: [closing_tag]>>},
3026             Parse::RecDescent::_tracefirst($text),
3027             q{partial},
3028             $tracelevel)
3029             if defined $::RD_TRACE;
3030 0         0 $expectation->failed();
3031 0         0 last;
3032             }
3033 16 50       59 Parse::RecDescent::_trace(q{>>Matched subrule: [closing_tag]<< (return value: [}
3034             . $_tok . q{]},
3035              
3036             Parse::RecDescent::_tracefirst($text),
3037             q{partial},
3038             $tracelevel)
3039             if defined $::RD_TRACE;
3040 16         39 $item{q{closing_tag}} = $_tok;
3041 16         32 push @item, $_tok;
3042            
3043             }
3044              
3045 16 50       33 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
3046             q{partial},
3047             $tracelevel)
3048             if defined $::RD_TRACE;
3049 16         35 undef $lastsep;
3050 16         46 $expectation->is(q{/\\s*/})->at($text);
3051            
3052              
3053 16 50 33     218 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  16 50       144  
3054             {
3055 0 0       0 $text = $lastsep . $text if defined $lastsep;
3056 0         0 $expectation->failed();
3057 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
3058             Parse::RecDescent::_tracefirst($text))
3059             if defined $::RD_TRACE;
3060              
3061 0         0 last;
3062             }
3063 16         74 $current_match = substr($text, $-[0], $+[0] - $-[0]);
3064 16         46 substr($text,0,length($current_match),q{});
3065 16 50       37 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3066             . $current_match . q{])},
3067             Parse::RecDescent::_tracefirst($text))
3068             if defined $::RD_TRACE;
3069 16         50 push @item, $item{__PATTERN5__}=$current_match;
3070            
3071              
3072 16 50       40 Parse::RecDescent::_trace(q{Trying action},
3073             Parse::RecDescent::_tracefirst($text),
3074             q{partial},
3075             $tracelevel)
3076             if defined $::RD_TRACE;
3077            
3078              
3079 16 50       36 $_tok = ($_noactions) ? 0 : do {
3080 16         29 my $prev = $thisparser->{prev_is_standalone};
3081 16         26 $thisparser->{prev_is_standalone} = 0;
3082 16         34 my $indent = '';
3083 16 100 66     83 if ( $item[1] =~ /\n/ or $prev ) {
3084 2 50 33     12 if ( $item[8] =~ /\n/ or length $text == 0) {
3085 2         9 $item[1] =~ /(^|\n)([ \t]*?)$/;
3086 2         7 $indent = $2;
3087 2         5 $item[8] =~ s/^.*?\n//;
3088 2         4 $thisparser->{prev_is_standalone} = 1;
3089             }
3090             }
3091             Template::Mustache::Token::Template->new(
3092 16         340 items => [
3093             Template::Mustache::Token::Verbatim->new( content => $item[1] ),
3094             Template::Mustache::Token::Partial->new( name => $item[5],
3095             indent => $indent ),
3096             Template::Mustache::Token::Verbatim->new( content => $item[8] ),
3097             ],
3098             )
3099             };
3100 16 50       9070 unless (defined $_tok)
3101             {
3102 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
3103             if defined $::RD_TRACE;
3104 0         0 last;
3105             }
3106 16 50       56 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3107             . $_tok . q{])},
3108             Parse::RecDescent::_tracefirst($text))
3109             if defined $::RD_TRACE;
3110 16         35 push @item, $_tok;
3111 16         32 $item{__ACTION1__}=$_tok;
3112            
3113              
3114 16 50       37 Parse::RecDescent::_trace(q{>>Matched production: [/\\s*/ opening_tag '>' /\\s*/ /[\\/-\\w.]+/ /\\s*/ closing_tag /\\s*/]<<},
3115             Parse::RecDescent::_tracefirst($text),
3116             q{partial},
3117             $tracelevel)
3118             if defined $::RD_TRACE;
3119              
3120              
3121              
3122 16         24 $_matched = 1;
3123 16         38 last;
3124             }
3125              
3126              
3127 288 100 66     1207 unless ( $_matched || defined($score) )
3128             {
3129            
3130              
3131 272         762 $_[1] = $text; # NOT SURE THIS IS NEEDED
3132 272 50       532 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
3133             Parse::RecDescent::_tracefirst($_[1]),
3134             q{partial},
3135             $tracelevel)
3136             if defined $::RD_TRACE;
3137 272         1383 return undef;
3138             }
3139 16 50 33     69 if (!defined($return) && defined($score))
3140             {
3141 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3142             q{partial},
3143             $tracelevel)
3144             if defined $::RD_TRACE;
3145 0         0 $return = $score_return;
3146             }
3147 16         27 splice @{$thisparser->{errors}}, $err_at;
  16         40  
3148 16 50       44 $return = $item[$#item] unless defined $return;
3149 16 50       40 if (defined $::RD_TRACE)
3150             {
3151 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3152             $return . q{])}, "",
3153             q{partial},
3154             $tracelevel);
3155 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3156             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3157             Parse::RecDescent::_tracefirst($text),
3158             , q{partial},
3159             $tracelevel)
3160             }
3161 16         35 $_[1] = $text;
3162 16         120 return $return;
3163             }
3164              
3165             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
3166             sub Parse::RecDescent::Template::Mustache::Parser::section
3167             {
3168 272     272   444 my $thisparser = $_[0];
3169 20     20   171 use vars q{$tracelevel};
  20         51  
  20         6986  
3170 272   50     660 local $tracelevel = ($tracelevel||0)+1;
3171 272         413 $ERRORS = 0;
3172 272         550 my $thisrule = $thisparser->{"rules"}{"section"};
3173              
3174 272 50       528 Parse::RecDescent::_trace(q{Trying rule: [section]},
3175             Parse::RecDescent::_tracefirst($_[1]),
3176             q{section},
3177             $tracelevel)
3178             if defined $::RD_TRACE;
3179              
3180            
3181 272         356 my $err_at = @{$thisparser->{errors}};
  272         512  
3182              
3183 272         617 my $score;
3184             my $score_return;
3185 272         0 my $_tok;
3186 272         337 my $return = undef;
3187 272         347 my $_matched=0;
3188 272         348 my $commit=0;
3189 272         379 my @item = ();
3190 272         369 my %item = ();
3191 272         384 my $repeating = $_[2];
3192 272         385 my $_noactions = $_[3];
3193 272 50       543 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  272         337  
  272         443  
3194 272         405 my $_itempos = $_[5];
3195 272 100       789 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3196 272         600 my $text;
3197             my $lastsep;
3198 272         0 my $current_match;
3199 272         603 my $expectation = new Parse::RecDescent::Expectation(q{open_section});
3200 272         1505 $expectation->at($_[1]);
3201            
3202 272         948 my $thisoffset;
3203 272         817 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
3204            
3205 272         1144 my $thisline;
3206 272         634 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3207              
3208            
3209              
3210 272   33     1716 while (!$_matched && !$commit)
3211             {
3212            
3213 272 50       537 Parse::RecDescent::_trace(q{Trying production: [open_section inner_section close_section]},
3214             Parse::RecDescent::_tracefirst($_[1]),
3215             q{section},
3216             $tracelevel)
3217             if defined $::RD_TRACE;
3218 272         524 my $thisprod = $thisrule->{"prods"}[0];
3219 272         436 $text = $_[1];
3220 272         358 my $_savetext;
3221 272         448 @item = (q{section});
3222 272         525 %item = (__RULE__ => q{section});
3223 272         426 my $repcount = 0;
3224              
3225              
3226 272 50       523 Parse::RecDescent::_trace(q{Trying subrule: [open_section]},
3227             Parse::RecDescent::_tracefirst($text),
3228             q{section},
3229             $tracelevel)
3230             if defined $::RD_TRACE;
3231 20     20   170 if (1) { no strict qw{refs};
  20         54  
  20         8485  
  272         351  
3232 272         568 $expectation->is(q{})->at($text);
3233 272 100   272   2305 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::open_section($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  272         551  
3234             {
3235            
3236 254 50       511 Parse::RecDescent::_trace(q{<<Didn't match subrule: [open_section]>>},
3237             Parse::RecDescent::_tracefirst($text),
3238             q{section},
3239             $tracelevel)
3240             if defined $::RD_TRACE;
3241 254         624 $expectation->failed();
3242 254         787 last;
3243             }
3244 18 50       62 Parse::RecDescent::_trace(q{>>Matched subrule: [open_section]<< (return value: [}
3245             . $_tok . q{]},
3246              
3247             Parse::RecDescent::_tracefirst($text),
3248             q{section},
3249             $tracelevel)
3250             if defined $::RD_TRACE;
3251 18         35 $item{q{open_section}} = $_tok;
3252 18         32 push @item, $_tok;
3253            
3254             }
3255              
3256 18 50       41 Parse::RecDescent::_trace(q{Trying action},
3257             Parse::RecDescent::_tracefirst($text),
3258             q{section},
3259             $tracelevel)
3260             if defined $::RD_TRACE;
3261            
3262              
3263 18 50       46 $_tok = ($_noactions) ? 0 : do {$thisoffset};
  18         71  
3264 18 50       164 unless (defined $_tok)
3265             {
3266 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
3267             if defined $::RD_TRACE;
3268 0         0 last;
3269             }
3270 18 50       37 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3271             . $_tok . q{])},
3272             Parse::RecDescent::_tracefirst($text))
3273             if defined $::RD_TRACE;
3274 18         29 push @item, $_tok;
3275 18         28 $item{__ACTION1__}=$_tok;
3276            
3277              
3278 18 50       36 Parse::RecDescent::_trace(q{Trying repeated subrule: [inner_section]},
3279             Parse::RecDescent::_tracefirst($text),
3280             q{section},
3281             $tracelevel)
3282             if defined $::RD_TRACE;
3283 18         43 $expectation->is(q{inner_section})->at($text);
3284            
3285 18 50   38   216 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Template::Mustache::Parser::inner_section, 0, 100000000, $_noactions,$expectation,sub { return [ $item[1][0] ] },undef)))
  38         114  
3286             {
3287 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [inner_section]>>},
3288             Parse::RecDescent::_tracefirst($text),
3289             q{section},
3290             $tracelevel)
3291             if defined $::RD_TRACE;
3292 0         0 last;
3293             }
3294 18 50       292 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [inner_section]<< (}
3295             . @$_tok . q{ times)},
3296              
3297             Parse::RecDescent::_tracefirst($text),
3298             q{section},
3299             $tracelevel)
3300             if defined $::RD_TRACE;
3301 18         46 $item{q{inner_section(s?)}} = $_tok;
3302 18         34 push @item, $_tok;
3303            
3304              
3305              
3306 18 50       38 Parse::RecDescent::_trace(q{Trying action},
3307             Parse::RecDescent::_tracefirst($text),
3308             q{section},
3309             $tracelevel)
3310             if defined $::RD_TRACE;
3311            
3312              
3313 18 50       37 $_tok = ($_noactions) ? 0 : do {$thisoffset
  18         69  
3314             - $item[2]
3315             };
3316 18 50       176 unless (defined $_tok)
3317             {
3318 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
3319             if defined $::RD_TRACE;
3320 0         0 last;
3321             }
3322 18 50       40 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3323             . $_tok . q{])},
3324             Parse::RecDescent::_tracefirst($text))
3325             if defined $::RD_TRACE;
3326 18         31 push @item, $_tok;
3327 18         36 $item{__ACTION2__}=$_tok;
3328            
3329              
3330 18 50       60 Parse::RecDescent::_trace(q{Trying subrule: [close_section]},
3331             Parse::RecDescent::_tracefirst($text),
3332             q{section},
3333             $tracelevel)
3334             if defined $::RD_TRACE;
3335 20     20   136 if (1) { no strict qw{refs};
  20         42  
  20         13034  
  18         35  
3336 18         54 $expectation->is(q{close_section})->at($text);
3337 18 100   18   181 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::close_section($thisparser,$text,$repeating,$_noactions,sub { return [ $item[1][0] ] },undef)))
  18         51  
3338             {
3339            
3340 7 50       20 Parse::RecDescent::_trace(q{<<Didn't match subrule: [close_section]>>},
3341             Parse::RecDescent::_tracefirst($text),
3342             q{section},
3343             $tracelevel)
3344             if defined $::RD_TRACE;
3345 7         21 $expectation->failed();
3346 7         45 last;
3347             }
3348 11 50       44 Parse::RecDescent::_trace(q{>>Matched subrule: [close_section]<< (return value: [}
3349             . $_tok . q{]},
3350              
3351             Parse::RecDescent::_tracefirst($text),
3352             q{section},
3353             $tracelevel)
3354             if defined $::RD_TRACE;
3355 11         24 $item{q{close_section}} = $_tok;
3356 11         23 push @item, $_tok;
3357            
3358             }
3359              
3360 11 50       29 Parse::RecDescent::_trace(q{Trying action},
3361             Parse::RecDescent::_tracefirst($text),
3362             q{section},
3363             $tracelevel)
3364             if defined $::RD_TRACE;
3365            
3366              
3367 11 50       20 $_tok = ($_noactions) ? 0 : do {
3368 11         34 my $raw = substr( $thisparser->{fulltext}, $item[2], $item[4] );
3369             Template::Mustache::Token::Template->new( items => [
3370             $item[1]->[2],
3371             Template::Mustache::Token::Section->new(
3372 22         63 delimiters => [ map { $thisparser->{$_} } qw/ opening_tag closing_tag / ],
3373             variable => $item[1][0],
3374             inverse => $item[1][1],
3375             raw => $raw,
3376             template => Template::Mustache::Token::Template->new(
3377             items => [
3378 11         34 $item[1][3], @{$item[3]}, $item[5][0] ],
  11         238  
3379             )
3380             ),
3381             $item[5][1]
3382             ]
3383             );
3384             };
3385 11 50       4791 unless (defined $_tok)
3386             {
3387 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
3388             if defined $::RD_TRACE;
3389 0         0 last;
3390             }
3391 11 50       32 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3392             . $_tok . q{])},
3393             Parse::RecDescent::_tracefirst($text))
3394             if defined $::RD_TRACE;
3395 11         23 push @item, $_tok;
3396 11         23 $item{__ACTION3__}=$_tok;
3397            
3398              
3399 11 50       23 Parse::RecDescent::_trace(q{>>Matched production: [open_section inner_section close_section]<<},
3400             Parse::RecDescent::_tracefirst($text),
3401             q{section},
3402             $tracelevel)
3403             if defined $::RD_TRACE;
3404              
3405              
3406              
3407 11         17 $_matched = 1;
3408 11         21 last;
3409             }
3410              
3411              
3412 272 100 66     1058 unless ( $_matched || defined($score) )
3413             {
3414            
3415              
3416 261         440 $_[1] = $text; # NOT SURE THIS IS NEEDED
3417 261 50       515 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
3418             Parse::RecDescent::_tracefirst($_[1]),
3419             q{section},
3420             $tracelevel)
3421             if defined $::RD_TRACE;
3422 261         1228 return undef;
3423             }
3424 11 50 33     50 if (!defined($return) && defined($score))
3425             {
3426 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3427             q{section},
3428             $tracelevel)
3429             if defined $::RD_TRACE;
3430 0         0 $return = $score_return;
3431             }
3432 11         17 splice @{$thisparser->{errors}}, $err_at;
  11         23  
3433 11 50       34 $return = $item[$#item] unless defined $return;
3434 11 50       28 if (defined $::RD_TRACE)
3435             {
3436 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3437             $return . q{])}, "",
3438             q{section},
3439             $tracelevel);
3440 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3441             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3442             Parse::RecDescent::_tracefirst($text),
3443             , q{section},
3444             $tracelevel)
3445             }
3446 11         24 $_[1] = $text;
3447 11         103 return $return;
3448             }
3449              
3450             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
3451             sub Parse::RecDescent::Template::Mustache::Parser::standalone_surround
3452             {
3453 520     520   746 my $thisparser = $_[0];
3454 20     20   147 use vars q{$tracelevel};
  20         37  
  20         9455  
3455 520   50     1126 local $tracelevel = ($tracelevel||0)+1;
3456 520         715 $ERRORS = 0;
3457 520         858 my $thisrule = $thisparser->{"rules"}{"standalone_surround"};
3458              
3459 520 50       920 Parse::RecDescent::_trace(q{Trying rule: [standalone_surround]},
3460             Parse::RecDescent::_tracefirst($_[1]),
3461             q{standalone_surround},
3462             $tracelevel)
3463             if defined $::RD_TRACE;
3464              
3465            
3466 520         671 my $err_at = @{$thisparser->{errors}};
  520         846  
3467              
3468 520         1089 my $score;
3469             my $score_return;
3470 520         0 my $_tok;
3471 520         635 my $return = undef;
3472 520         623 my $_matched=0;
3473 520         616 my $commit=0;
3474 520         673 my @item = ();
3475 520         694 my %item = ();
3476 520         683 my $repeating = $_[2];
3477 520         643 my $_noactions = $_[3];
3478 520 50       1056 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  520         658  
  520         788  
3479 520         925 my $_itempos = $_[5];
3480 520 50       1301 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3481 520         1069 my $text;
3482             my $lastsep;
3483 520         0 my $current_match;
3484 520         1107 my $expectation = new Parse::RecDescent::Expectation(q{/\\s*/});
3485 520         2686 $expectation->at($_[1]);
3486            
3487 520         1731 my $thisoffset;
3488 520         1242 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
3489            
3490 520         1948 my $thisline;
3491 520         1068 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3492              
3493            
3494              
3495 520   33     2961 while (!$_matched && !$commit)
3496             {
3497            
3498 520 50       1028 Parse::RecDescent::_trace(q{Trying production: [/\\s*/ opening_tag /\\s*/ <matchrule:$arg[0]_inner> closing_tag /\\s*/]},
3499             Parse::RecDescent::_tracefirst($_[1]),
3500             q{standalone_surround},
3501             $tracelevel)
3502             if defined $::RD_TRACE;
3503 520         866 my $thisprod = $thisrule->{"prods"}[0];
3504 520         715 $text = $_[1];
3505 520         609 my $_savetext;
3506 520         848 @item = (q{standalone_surround});
3507 520         821 %item = (__RULE__ => q{standalone_surround});
3508 520         649 my $repcount = 0;
3509              
3510              
3511 520 50       869 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
3512             q{standalone_surround},
3513             $tracelevel)
3514             if defined $::RD_TRACE;
3515 520         723 undef $lastsep;
3516 520         1074 $expectation->is(q{})->at($text);
3517            
3518              
3519 520 50 33     4959 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  520 50       3453  
3520             {
3521 0 0       0 $text = $lastsep . $text if defined $lastsep;
3522 0         0 $expectation->failed();
3523 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
3524             Parse::RecDescent::_tracefirst($text))
3525             if defined $::RD_TRACE;
3526              
3527 0         0 last;
3528             }
3529 520         2065 $current_match = substr($text, $-[0], $+[0] - $-[0]);
3530 520         1272 substr($text,0,length($current_match),q{});
3531 520 50       992 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3532             . $current_match . q{])},
3533             Parse::RecDescent::_tracefirst($text))
3534             if defined $::RD_TRACE;
3535 520         1152 push @item, $item{__PATTERN1__}=$current_match;
3536            
3537              
3538 520 50       928 Parse::RecDescent::_trace(q{Trying subrule: [opening_tag]},
3539             Parse::RecDescent::_tracefirst($text),
3540             q{standalone_surround},
3541             $tracelevel)
3542             if defined $::RD_TRACE;
3543 20     20   142 if (1) { no strict qw{refs};
  20         37  
  20         6084  
  520         637  
3544 520         1113 $expectation->is(q{opening_tag})->at($text);
3545 520 100   520   3999 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::opening_tag($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  520         941  
3546             {
3547            
3548 352 50       684 Parse::RecDescent::_trace(q{<<Didn't match subrule: [opening_tag]>>},
3549             Parse::RecDescent::_tracefirst($text),
3550             q{standalone_surround},
3551             $tracelevel)
3552             if defined $::RD_TRACE;
3553 352         794 $expectation->failed();
3554 352         2401 last;
3555             }
3556 168 50       527 Parse::RecDescent::_trace(q{>>Matched subrule: [opening_tag]<< (return value: [}
3557             . $_tok . q{]},
3558              
3559             Parse::RecDescent::_tracefirst($text),
3560             q{standalone_surround},
3561             $tracelevel)
3562             if defined $::RD_TRACE;
3563 168         326 $item{q{opening_tag}} = $_tok;
3564 168         282 push @item, $_tok;
3565            
3566             }
3567              
3568 168 50       306 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
3569             q{standalone_surround},
3570             $tracelevel)
3571             if defined $::RD_TRACE;
3572 168         230 undef $lastsep;
3573 168         413 $expectation->is(q{/\\s*/})->at($text);
3574            
3575              
3576 168 50 33     1467 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  168 50       1078  
3577             {
3578 0 0       0 $text = $lastsep . $text if defined $lastsep;
3579 0         0 $expectation->failed();
3580 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
3581             Parse::RecDescent::_tracefirst($text))
3582             if defined $::RD_TRACE;
3583              
3584 0         0 last;
3585             }
3586 168         664 $current_match = substr($text, $-[0], $+[0] - $-[0]);
3587 168         414 substr($text,0,length($current_match),q{});
3588 168 50       374 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3589             . $current_match . q{])},
3590             Parse::RecDescent::_tracefirst($text))
3591             if defined $::RD_TRACE;
3592 168         387 push @item, $item{__PATTERN2__}=$current_match;
3593            
3594              
3595 168 50       323 Parse::RecDescent::_trace(q{Trying subrule: [$arg[0]_inner]},
3596             Parse::RecDescent::_tracefirst($text),
3597             q{standalone_surround},
3598             $tracelevel)
3599             if defined $::RD_TRACE;
3600 20     20   137 if (1) { no strict qw{refs};
  20         39  
  20         3291  
  168         227  
3601 168         409 $expectation->is(q{<matchrule:$arg[0]_inner>})->at($text);
3602 168 100   168   1303 unless (defined ($_tok = &{'Parse::RecDescent::Template::Mustache::Parser::'.qq{$arg[0]_inner}}($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  168         1045  
  168         373  
3603             {
3604            
3605 163 50       324 Parse::RecDescent::_trace(q{<<Didn't match subrule: [$arg[0]_inner]>>},
3606             Parse::RecDescent::_tracefirst($text),
3607             q{standalone_surround},
3608             $tracelevel)
3609             if defined $::RD_TRACE;
3610 163         419 $expectation->failed();
3611 163         1106 last;
3612             }
3613 5 50       20 Parse::RecDescent::_trace(q{>>Matched subrule: [$arg[0]_inner]<< (return value: [}
3614             . $_tok . q{]},
3615              
3616             Parse::RecDescent::_tracefirst($text),
3617             q{standalone_surround},
3618             $tracelevel)
3619             if defined $::RD_TRACE;
3620 5         13 $item{q{$arg[0]_inner}} = $_tok;
3621 5         10 push @item, $_tok;
3622            
3623             }
3624              
3625 5 50       19 Parse::RecDescent::_trace(q{Trying subrule: [closing_tag]},
3626             Parse::RecDescent::_tracefirst($text),
3627             q{standalone_surround},
3628             $tracelevel)
3629             if defined $::RD_TRACE;
3630 20     20   141 if (1) { no strict qw{refs};
  20         36  
  20         15621  
  5         7  
3631 5         15 $expectation->is(q{closing_tag})->at($text);
3632 5 50   5   56 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::closing_tag($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  5         16  
3633             {
3634            
3635 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match subrule: [closing_tag]>>},
3636             Parse::RecDescent::_tracefirst($text),
3637             q{standalone_surround},
3638             $tracelevel)
3639             if defined $::RD_TRACE;
3640 0         0 $expectation->failed();
3641 0         0 last;
3642             }
3643 5 50       17 Parse::RecDescent::_trace(q{>>Matched subrule: [closing_tag]<< (return value: [}
3644             . $_tok . q{]},
3645              
3646             Parse::RecDescent::_tracefirst($text),
3647             q{standalone_surround},
3648             $tracelevel)
3649             if defined $::RD_TRACE;
3650 5         13 $item{q{closing_tag}} = $_tok;
3651 5         13 push @item, $_tok;
3652            
3653             }
3654              
3655 5 50       13 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
3656             q{standalone_surround},
3657             $tracelevel)
3658             if defined $::RD_TRACE;
3659 5         11 undef $lastsep;
3660 5         13 $expectation->is(q{/\\s*/})->at($text);
3661            
3662              
3663 5 50 33     60 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  5 50       51  
3664             {
3665 0 0       0 $text = $lastsep . $text if defined $lastsep;
3666 0         0 $expectation->failed();
3667 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
3668             Parse::RecDescent::_tracefirst($text))
3669             if defined $::RD_TRACE;
3670              
3671 0         0 last;
3672             }
3673 5         25 $current_match = substr($text, $-[0], $+[0] - $-[0]);
3674 5         15 substr($text,0,length($current_match),q{});
3675 5 50       11 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
3676             . $current_match . q{])},
3677             Parse::RecDescent::_tracefirst($text))
3678             if defined $::RD_TRACE;
3679 5         16 push @item, $item{__PATTERN3__}=$current_match;
3680            
3681              
3682 5 50       34 Parse::RecDescent::_trace(q{Trying action},
3683             Parse::RecDescent::_tracefirst($text),
3684             q{standalone_surround},
3685             $tracelevel)
3686             if defined $::RD_TRACE;
3687            
3688              
3689 5 50       13 $_tok = ($_noactions) ? 0 : do {
3690 5         11 my $prev = $thisparser->{prev_is_standalone};
3691 5         9 $thisparser->{prev_is_standalone} = 0;
3692              
3693 5 100 100     26 if ( $item[1] =~ /\n/ or $prev) {
3694 4 50 66     34 if ( $item[6] =~ /\n/ or length $text == 0) {
3695 4         24 $item[1] =~ s/(\r?\n?)\s*?$/$1/;
3696 4         11 $item[6] =~ s/^.*?\n//;
3697 4         9 $thisparser->{prev_is_standalone} = 1;
3698             }
3699             }
3700              
3701 5         21 [ @item[1,6,4] ],
3702             };
3703 5 50       15 unless (defined $_tok)
3704             {
3705 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
3706             if defined $::RD_TRACE;
3707 0         0 last;
3708             }
3709 5 50       14 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3710             . $_tok . q{])},
3711             Parse::RecDescent::_tracefirst($text))
3712             if defined $::RD_TRACE;
3713 5         9 push @item, $_tok;
3714 5         11 $item{__ACTION1__}=$_tok;
3715            
3716              
3717 5 50       31 Parse::RecDescent::_trace(q{>>Matched production: [/\\s*/ opening_tag /\\s*/ <matchrule:$arg[0]_inner> closing_tag /\\s*/]<<},
3718             Parse::RecDescent::_tracefirst($text),
3719             q{standalone_surround},
3720             $tracelevel)
3721             if defined $::RD_TRACE;
3722              
3723              
3724              
3725 5         11 $_matched = 1;
3726 5         13 last;
3727             }
3728              
3729              
3730 520 100 66     2082 unless ( $_matched || defined($score) )
3731             {
3732            
3733              
3734 515         843 $_[1] = $text; # NOT SURE THIS IS NEEDED
3735 515 50       943 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
3736             Parse::RecDescent::_tracefirst($_[1]),
3737             q{standalone_surround},
3738             $tracelevel)
3739             if defined $::RD_TRACE;
3740 515         2527 return undef;
3741             }
3742 5 50 33     36 if (!defined($return) && defined($score))
3743             {
3744 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
3745             q{standalone_surround},
3746             $tracelevel)
3747             if defined $::RD_TRACE;
3748 0         0 $return = $score_return;
3749             }
3750 5         9 splice @{$thisparser->{errors}}, $err_at;
  5         148  
3751 5 50       23 $return = $item[$#item] unless defined $return;
3752 5 50       13 if (defined $::RD_TRACE)
3753             {
3754 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
3755             $return . q{])}, "",
3756             q{standalone_surround},
3757             $tracelevel);
3758 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
3759             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
3760             Parse::RecDescent::_tracefirst($text),
3761             , q{standalone_surround},
3762             $tracelevel)
3763             }
3764 5         12 $_[1] = $text;
3765 5         39 return $return;
3766             }
3767              
3768             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
3769             sub Parse::RecDescent::Template::Mustache::Parser::template
3770             {
3771 72     72   4500 my $thisparser = $_[0];
3772 20     20   157 use vars q{$tracelevel};
  20         53  
  20         25301  
3773 72   50     417 local $tracelevel = ($tracelevel||0)+1;
3774 72         135 $ERRORS = 0;
3775 72         223 my $thisrule = $thisparser->{"rules"}{"template"};
3776              
3777 72 50       237 Parse::RecDescent::_trace(q{Trying rule: [template]},
3778             Parse::RecDescent::_tracefirst($_[1]),
3779             q{template},
3780             $tracelevel)
3781             if defined $::RD_TRACE;
3782              
3783            
3784 72         120 my $err_at = @{$thisparser->{errors}};
  72         174  
3785              
3786 72         225 my $score;
3787             my $score_return;
3788 72         0 my $_tok;
3789 72         120 my $return = undef;
3790 72         124 my $_matched=0;
3791 72         102 my $commit=0;
3792 72         130 my @item = ();
3793 72         126 my %item = ();
3794 72         116 my $repeating = $_[2];
3795 72         113 my $_noactions = $_[3];
3796 72 50       210 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  72         115  
  72         188  
3797 72         375 my $_itempos = $_[5];
3798 72 50       330 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
3799 72         209 my $text;
3800             my $lastsep;
3801 72         0 my $current_match;
3802 72         344 my $expectation = new Parse::RecDescent::Expectation(q{});
3803 72         628 $expectation->at($_[1]);
3804            
3805 72         360 my $thisoffset;
3806 72         370 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
3807            
3808 72         472 my $thisline;
3809 72         305 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
3810              
3811            
3812              
3813 72   33     660 while (!$_matched && !$commit)
3814             {
3815            
3816 72 50       248 Parse::RecDescent::_trace(q{Trying production: [template_item eofile]},
3817             Parse::RecDescent::_tracefirst($_[1]),
3818             q{template},
3819             $tracelevel)
3820             if defined $::RD_TRACE;
3821 72         229 my $thisprod = $thisrule->{"prods"}[0];
3822 72         134 $text = $_[1];
3823 72         123 my $_savetext;
3824 72         166 @item = (q{template});
3825 72         194 %item = (__RULE__ => q{template});
3826 72         118 my $repcount = 0;
3827              
3828              
3829 72 50       259 Parse::RecDescent::_trace(q{Trying action},
3830             Parse::RecDescent::_tracefirst($text),
3831             q{template},
3832             $tracelevel)
3833             if defined $::RD_TRACE;
3834            
3835              
3836 72 50       191 $_tok = ($_noactions) ? 0 : do { my ($otag,$ctag) = @arg ? @arg : ( qw/ {{ }} / );
  72 50       231  
3837 72         303 $thisparser->{opening_tag} = $otag;
3838 72         182 $thisparser->{closing_tag} = $ctag;
3839 72         154 $thisparser->{prev_is_standalone} = 1;
3840 72         162 1;
3841             };
3842 72 50       208 unless (defined $_tok)
3843             {
3844 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
3845             if defined $::RD_TRACE;
3846 0         0 last;
3847             }
3848 72 50       189 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3849             . $_tok . q{])},
3850             Parse::RecDescent::_tracefirst($text))
3851             if defined $::RD_TRACE;
3852 72         171 push @item, $_tok;
3853 72         146 $item{__ACTION1__}=$_tok;
3854            
3855              
3856 72 50       172 Parse::RecDescent::_trace(q{Trying repeated subrule: [template_item]},
3857             Parse::RecDescent::_tracefirst($text),
3858             q{template},
3859             $tracelevel)
3860             if defined $::RD_TRACE;
3861 72         236 $expectation->is(q{template_item})->at($text);
3862            
3863 72 50   261   871 unless (defined ($_tok = $thisparser->_parserepeat($text, \&Parse::RecDescent::Template::Mustache::Parser::template_item, 0, 100000000, $_noactions,$expectation,sub { \@arg },undef)))
  261         652  
3864             {
3865 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match repeated subrule: [template_item]>>},
3866             Parse::RecDescent::_tracefirst($text),
3867             q{template},
3868             $tracelevel)
3869             if defined $::RD_TRACE;
3870 0         0 last;
3871             }
3872 70 50       1313 Parse::RecDescent::_trace(q{>>Matched repeated subrule: [template_item]<< (}
3873             . @$_tok . q{ times)},
3874              
3875             Parse::RecDescent::_tracefirst($text),
3876             q{template},
3877             $tracelevel)
3878             if defined $::RD_TRACE;
3879 70         179 $item{q{template_item(s?)}} = $_tok;
3880 70         167 push @item, $_tok;
3881            
3882              
3883              
3884 70 50       197 Parse::RecDescent::_trace(q{Trying subrule: [eofile]},
3885             Parse::RecDescent::_tracefirst($text),
3886             q{template},
3887             $tracelevel)
3888             if defined $::RD_TRACE;
3889 20     20   150 if (1) { no strict qw{refs};
  20         51  
  20         14420  
  70         104  
3890 70         209 $expectation->is(q{eofile})->at($text);
3891 70 100   70   847 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::eofile($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  70         196  
3892             {
3893            
3894 5 50       13 Parse::RecDescent::_trace(q{<<Didn't match subrule: [eofile]>>},
3895             Parse::RecDescent::_tracefirst($text),
3896             q{template},
3897             $tracelevel)
3898             if defined $::RD_TRACE;
3899 5         18 $expectation->failed();
3900 5         35 last;
3901             }
3902 65 50       236 Parse::RecDescent::_trace(q{>>Matched subrule: [eofile]<< (return value: [}
3903             . $_tok . q{]},
3904              
3905             Parse::RecDescent::_tracefirst($text),
3906             q{template},
3907             $tracelevel)
3908             if defined $::RD_TRACE;
3909 65         170 $item{q{eofile}} = $_tok;
3910 65         139 push @item, $_tok;
3911            
3912             }
3913              
3914 65 50       163 Parse::RecDescent::_trace(q{Trying action},
3915             Parse::RecDescent::_tracefirst($text),
3916             q{template},
3917             $tracelevel)
3918             if defined $::RD_TRACE;
3919            
3920              
3921 65 50       144 $_tok = ($_noactions) ? 0 : do {
3922 65         1363 Template::Mustache::Token::Template->new(
3923             items => $item[2]
3924             );
3925             };
3926 65 50       3120 unless (defined $_tok)
3927             {
3928 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
3929             if defined $::RD_TRACE;
3930 0         0 last;
3931             }
3932 65 50       176 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
3933             . $_tok . q{])},
3934             Parse::RecDescent::_tracefirst($text))
3935             if defined $::RD_TRACE;
3936 65         132 push @item, $_tok;
3937 65         154 $item{__ACTION2__}=$_tok;
3938            
3939              
3940 65 50       148 Parse::RecDescent::_trace(q{>>Matched production: [template_item eofile]<<},
3941             Parse::RecDescent::_tracefirst($text),
3942             q{template},
3943             $tracelevel)
3944             if defined $::RD_TRACE;
3945              
3946              
3947              
3948 65         101 $_matched = 1;
3949 65         134 last;
3950             }
3951              
3952              
3953 70         212 while (!$_matched)
3954             {
3955            
3956 5 50       14 Parse::RecDescent::_trace(q{Trying production: [<error...>]},
3957             Parse::RecDescent::_tracefirst($_[1]),
3958             q{template},
3959             $tracelevel)
3960             if defined $::RD_TRACE;
3961 5         13 my $thisprod = $thisrule->{"prods"}[1];
3962            
3963 5         9 my $_savetext;
3964 5         24 @item = (q{template});
3965 5         23 %item = (__RULE__ => q{template});
3966 5         10 my $repcount = 0;
3967              
3968              
3969            
3970              
3971 5 50       14 Parse::RecDescent::_trace(q{Trying directive: [<error...>]},
3972             Parse::RecDescent::_tracefirst($text),
3973             q{template},
3974             $tracelevel)
3975             if defined $::RD_TRACE;
3976 5 50       8 $_tok = do { if (1) { do {
  5         7  
  5         12  
3977 5         10 my $rule = $item[0];
3978 5         12 $rule =~ s/_/ /g;
3979             #WAS: Parse::RecDescent::_error("Invalid $rule: " . $expectation->message() ,$thisline);
3980 5         7 push @{$thisparser->{errors}}, ["Invalid $rule: " . $expectation->message() ,$thisline];
  5         24  
3981 5         238 } unless $_noactions; undef } else {0} };
3982 5 50       17 if (defined($_tok))
3983             {
3984 0 0       0 Parse::RecDescent::_trace(q{>>Matched directive<< (return value: [}
3985             . $_tok . q{])},
3986             Parse::RecDescent::_tracefirst($text))
3987             if defined $::RD_TRACE;
3988             }
3989             else
3990             {
3991 5 50       23 Parse::RecDescent::_trace(q{<<Didn't match directive>>},
3992             Parse::RecDescent::_tracefirst($text))
3993             if defined $::RD_TRACE;
3994             }
3995            
3996 5 50       18 last unless defined $_tok;
3997 0         0 push @item, $item{__DIRECTIVE1__}=$_tok;
3998            
3999              
4000 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [<error...>]<<},
4001             Parse::RecDescent::_tracefirst($text),
4002             q{template},
4003             $tracelevel)
4004             if defined $::RD_TRACE;
4005              
4006              
4007              
4008 0         0 $_matched = 1;
4009 0         0 last;
4010             }
4011              
4012              
4013 70 100 66     259 unless ( $_matched || defined($score) )
4014             {
4015            
4016              
4017 5         11 $_[1] = $text; # NOT SURE THIS IS NEEDED
4018 5 50       25 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
4019             Parse::RecDescent::_tracefirst($_[1]),
4020             q{template},
4021             $tracelevel)
4022             if defined $::RD_TRACE;
4023 5         35 return undef;
4024             }
4025 65 50 33     301 if (!defined($return) && defined($score))
4026             {
4027 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4028             q{template},
4029             $tracelevel)
4030             if defined $::RD_TRACE;
4031 0         0 $return = $score_return;
4032             }
4033 65         130 splice @{$thisparser->{errors}}, $err_at;
  65         142  
4034 65 50       220 $return = $item[$#item] unless defined $return;
4035 65 50       193 if (defined $::RD_TRACE)
4036             {
4037 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4038             $return . q{])}, "",
4039             q{template},
4040             $tracelevel);
4041 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4042             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4043             Parse::RecDescent::_tracefirst($text),
4044             , q{template},
4045             $tracelevel)
4046             }
4047 65         165 $_[1] = $text;
4048 65         550 return $return;
4049             }
4050              
4051             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
4052             sub Parse::RecDescent::Template::Mustache::Parser::template_item
4053             {
4054 288     288   4448 my $thisparser = $_[0];
4055 20     20   172 use vars q{$tracelevel};
  20         40  
  20         6397  
4056 288   50     728 local $tracelevel = ($tracelevel||0)+1;
4057 288         432 $ERRORS = 0;
4058 288         546 my $thisrule = $thisparser->{"rules"}{"template_item"};
4059              
4060 288 50       560 Parse::RecDescent::_trace(q{Trying rule: [template_item]},
4061             Parse::RecDescent::_tracefirst($_[1]),
4062             q{template_item},
4063             $tracelevel)
4064             if defined $::RD_TRACE;
4065              
4066            
4067 288         481 my $err_at = @{$thisparser->{errors}};
  288         481  
4068              
4069 288         685 my $score;
4070             my $score_return;
4071 288         0 my $_tok;
4072 288         404 my $return = undef;
4073 288         371 my $_matched=0;
4074 288         377 my $commit=0;
4075 288         429 my @item = ();
4076 288         410 my %item = ();
4077 288         396 my $repeating = $_[2];
4078 288         391 my $_noactions = $_[3];
4079 288 50       557 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  288         369  
  288         524  
4080 288         469 my $_itempos = $_[5];
4081 288 100       858 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4082 288         699 my $text;
4083             my $lastsep;
4084 288         0 my $current_match;
4085 288         801 my $expectation = new Parse::RecDescent::Expectation(q{partial, or section, or delimiter_change, or comment, or unescaped_variable_amp, or unescaped_variable, or variable, or verbatim});
4086 288         1840 $expectation->at($_[1]);
4087            
4088 288         1365 my $thisoffset;
4089 288         913 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
4090            
4091 288         1357 my $thisline;
4092 288         778 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4093              
4094            
4095              
4096 288   33     1923 while (!$_matched && !$commit)
4097             {
4098            
4099 288 50       621 Parse::RecDescent::_trace(q{Trying production: [partial, or section, or delimiter_change, or comment, or unescaped_variable_amp, or unescaped_variable, or variable, or verbatim]},
4100             Parse::RecDescent::_tracefirst($_[1]),
4101             q{template_item},
4102             $tracelevel)
4103             if defined $::RD_TRACE;
4104 288         597 my $thisprod = $thisrule->{"prods"}[0];
4105 288         436 $text = $_[1];
4106 288         436 my $_savetext;
4107 288         552 @item = (q{template_item});
4108 288         794 %item = (__RULE__ => q{template_item});
4109 288         419 my $repcount = 0;
4110              
4111              
4112 288 50       608 Parse::RecDescent::_trace(q{Trying subrule: [_alternation_1_of_production_1_of_rule_template_item]},
4113             Parse::RecDescent::_tracefirst($text),
4114             q{template_item},
4115             $tracelevel)
4116             if defined $::RD_TRACE;
4117 20     20   155 if (1) { no strict qw{refs};
  20         48  
  20         8344  
  288         395  
4118 288         660 $expectation->is(q{})->at($text);
4119 288 50   288   2587 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::_alternation_1_of_production_1_of_rule_template_item($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  288         567  
4120             {
4121            
4122 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match subrule: [_alternation_1_of_production_1_of_rule_template_item]>>},
4123             Parse::RecDescent::_tracefirst($text),
4124             q{template_item},
4125             $tracelevel)
4126             if defined $::RD_TRACE;
4127 0         0 $expectation->failed();
4128 0         0 last;
4129             }
4130 286 50       974 Parse::RecDescent::_trace(q{>>Matched subrule: [_alternation_1_of_production_1_of_rule_template_item]<< (return value: [}
4131             . $_tok . q{]},
4132              
4133             Parse::RecDescent::_tracefirst($text),
4134             q{template_item},
4135             $tracelevel)
4136             if defined $::RD_TRACE;
4137 286         567 $item{q{_alternation_1_of_production_1_of_rule_template_item}} = $_tok;
4138 286         507 push @item, $_tok;
4139            
4140             }
4141              
4142 286 50       559 Parse::RecDescent::_trace(q{Trying action},
4143             Parse::RecDescent::_tracefirst($text),
4144             q{template_item},
4145             $tracelevel)
4146             if defined $::RD_TRACE;
4147            
4148              
4149 286 50       538 $_tok = ($_noactions) ? 0 : do {
4150 286         444 $item[1]
4151             };
4152 286 50       712 unless (defined $_tok)
4153             {
4154 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
4155             if defined $::RD_TRACE;
4156 0         0 last;
4157             }
4158 286 50       558 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4159             . $_tok . q{])},
4160             Parse::RecDescent::_tracefirst($text))
4161             if defined $::RD_TRACE;
4162 286         416 push @item, $_tok;
4163 286         452 $item{__ACTION1__}=$_tok;
4164            
4165              
4166 286 50       560 Parse::RecDescent::_trace(q{>>Matched production: [partial, or section, or delimiter_change, or comment, or unescaped_variable_amp, or unescaped_variable, or variable, or verbatim]<<},
4167             Parse::RecDescent::_tracefirst($text),
4168             q{template_item},
4169             $tracelevel)
4170             if defined $::RD_TRACE;
4171              
4172              
4173              
4174 286         379 $_matched = 1;
4175 286         440 last;
4176             }
4177              
4178              
4179 286 50 33     632 unless ( $_matched || defined($score) )
4180             {
4181            
4182              
4183 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
4184 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
4185             Parse::RecDescent::_tracefirst($_[1]),
4186             q{template_item},
4187             $tracelevel)
4188             if defined $::RD_TRACE;
4189 0         0 return undef;
4190             }
4191 286 50 33     990 if (!defined($return) && defined($score))
4192             {
4193 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4194             q{template_item},
4195             $tracelevel)
4196             if defined $::RD_TRACE;
4197 0         0 $return = $score_return;
4198             }
4199 286         372 splice @{$thisparser->{errors}}, $err_at;
  286         506  
4200 286 50       604 $return = $item[$#item] unless defined $return;
4201 286 50       578 if (defined $::RD_TRACE)
4202             {
4203 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4204             $return . q{])}, "",
4205             q{template_item},
4206             $tracelevel);
4207 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4208             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4209             Parse::RecDescent::_tracefirst($text),
4210             , q{template_item},
4211             $tracelevel)
4212             }
4213 286         477 $_[1] = $text;
4214 286         1671 return $return;
4215             }
4216              
4217             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
4218             sub Parse::RecDescent::Template::Mustache::Parser::unescaped_variable
4219             {
4220 256     256   409 my $thisparser = $_[0];
4221 20     20   137 use vars q{$tracelevel};
  20         41  
  20         9313  
4222 256   50     603 local $tracelevel = ($tracelevel||0)+1;
4223 256         368 $ERRORS = 0;
4224 256         512 my $thisrule = $thisparser->{"rules"}{"unescaped_variable"};
4225              
4226 256 50       525 Parse::RecDescent::_trace(q{Trying rule: [unescaped_variable]},
4227             Parse::RecDescent::_tracefirst($_[1]),
4228             q{unescaped_variable},
4229             $tracelevel)
4230             if defined $::RD_TRACE;
4231              
4232            
4233 256         337 my $err_at = @{$thisparser->{errors}};
  256         474  
4234              
4235 256         574 my $score;
4236             my $score_return;
4237 256         0 my $_tok;
4238 256         336 my $return = undef;
4239 256         339 my $_matched=0;
4240 256         329 my $commit=0;
4241 256         356 my @item = ();
4242 256         348 my %item = ();
4243 256         369 my $repeating = $_[2];
4244 256         355 my $_noactions = $_[3];
4245 256 50       534 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  256         339  
  256         422  
4246 256         448 my $_itempos = $_[5];
4247 256 100       679 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4248 256         583 my $text;
4249             my $lastsep;
4250 256         0 my $current_match;
4251 256         572 my $expectation = new Parse::RecDescent::Expectation(q{/\\s*/});
4252 256         1458 $expectation->at($_[1]);
4253            
4254 256         861 my $thisoffset;
4255 256         737 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
4256            
4257 256         1143 my $thisline;
4258 256         598 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4259              
4260            
4261              
4262 256   33     1603 while (!$_matched && !$commit)
4263             {
4264            
4265 256 50       499 Parse::RecDescent::_trace(q{Trying production: [/\\s*/ opening_tag '\{' /\\s*/ variable_name /\\s*/ '\}' closing_tag]},
4266             Parse::RecDescent::_tracefirst($_[1]),
4267             q{unescaped_variable},
4268             $tracelevel)
4269             if defined $::RD_TRACE;
4270 256         531 my $thisprod = $thisrule->{"prods"}[0];
4271 256         380 $text = $_[1];
4272 256         327 my $_savetext;
4273 256         479 @item = (q{unescaped_variable});
4274 256         462 %item = (__RULE__ => q{unescaped_variable});
4275 256         349 my $repcount = 0;
4276              
4277              
4278 256 50       480 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
4279             q{unescaped_variable},
4280             $tracelevel)
4281             if defined $::RD_TRACE;
4282 256         391 undef $lastsep;
4283 256         555 $expectation->is(q{})->at($text);
4284            
4285              
4286 256 50 33     2511 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  256 50       1855  
4287             {
4288 0 0       0 $text = $lastsep . $text if defined $lastsep;
4289 0         0 $expectation->failed();
4290 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
4291             Parse::RecDescent::_tracefirst($text))
4292             if defined $::RD_TRACE;
4293              
4294 0         0 last;
4295             }
4296 256         1119 $current_match = substr($text, $-[0], $+[0] - $-[0]);
4297 256         708 substr($text,0,length($current_match),q{});
4298 256 50       531 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4299             . $current_match . q{])},
4300             Parse::RecDescent::_tracefirst($text))
4301             if defined $::RD_TRACE;
4302 256         591 push @item, $item{__PATTERN1__}=$current_match;
4303            
4304              
4305 256 50       521 Parse::RecDescent::_trace(q{Trying subrule: [opening_tag]},
4306             Parse::RecDescent::_tracefirst($text),
4307             q{unescaped_variable},
4308             $tracelevel)
4309             if defined $::RD_TRACE;
4310 20     20   153 if (1) { no strict qw{refs};
  20         62  
  20         8613  
  256         344  
4311 256         580 $expectation->is(q{opening_tag})->at($text);
4312 256 100   256   2107 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::opening_tag($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  256         536  
4313             {
4314            
4315 176 50       387 Parse::RecDescent::_trace(q{<<Didn't match subrule: [opening_tag]>>},
4316             Parse::RecDescent::_tracefirst($text),
4317             q{unescaped_variable},
4318             $tracelevel)
4319             if defined $::RD_TRACE;
4320 176         444 $expectation->failed();
4321 176         1189 last;
4322             }
4323 80 50       291 Parse::RecDescent::_trace(q{>>Matched subrule: [opening_tag]<< (return value: [}
4324             . $_tok . q{]},
4325              
4326             Parse::RecDescent::_tracefirst($text),
4327             q{unescaped_variable},
4328             $tracelevel)
4329             if defined $::RD_TRACE;
4330 80         186 $item{q{opening_tag}} = $_tok;
4331 80         154 push @item, $_tok;
4332            
4333             }
4334              
4335 80 50       195 Parse::RecDescent::_trace(q{Trying terminal: ['\{']},
4336             Parse::RecDescent::_tracefirst($text),
4337             q{unescaped_variable},
4338             $tracelevel)
4339             if defined $::RD_TRACE;
4340 80         132 undef $lastsep;
4341 80         209 $expectation->is(q{'\{'})->at($text);
4342            
4343              
4344 80 50 33     821 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\{/)
  80 50       556  
4345             {
4346 80 50       308 $text = $lastsep . $text if defined $lastsep;
4347            
4348 80         271 $expectation->failed();
4349 80 50       595 Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
4350             Parse::RecDescent::_tracefirst($text))
4351             if defined $::RD_TRACE;
4352 80         167 last;
4353             }
4354 0         0 $current_match = substr($text, $-[0], $+[0] - $-[0]);
4355 0         0 substr($text,0,length($current_match),q{});
4356 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4357             . $current_match . q{])},
4358             Parse::RecDescent::_tracefirst($text))
4359             if defined $::RD_TRACE;
4360 0         0 push @item, $item{__STRING1__}=$current_match;
4361            
4362              
4363 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
4364             q{unescaped_variable},
4365             $tracelevel)
4366             if defined $::RD_TRACE;
4367 0         0 undef $lastsep;
4368 0         0 $expectation->is(q{/\\s*/})->at($text);
4369            
4370              
4371 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  0 0       0  
4372             {
4373 0 0       0 $text = $lastsep . $text if defined $lastsep;
4374 0         0 $expectation->failed();
4375 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
4376             Parse::RecDescent::_tracefirst($text))
4377             if defined $::RD_TRACE;
4378              
4379 0         0 last;
4380             }
4381 0         0 $current_match = substr($text, $-[0], $+[0] - $-[0]);
4382 0         0 substr($text,0,length($current_match),q{});
4383 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4384             . $current_match . q{])},
4385             Parse::RecDescent::_tracefirst($text))
4386             if defined $::RD_TRACE;
4387 0         0 push @item, $item{__PATTERN2__}=$current_match;
4388            
4389              
4390 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [variable_name]},
4391             Parse::RecDescent::_tracefirst($text),
4392             q{unescaped_variable},
4393             $tracelevel)
4394             if defined $::RD_TRACE;
4395 20     20   143 if (1) { no strict qw{refs};
  20         47  
  20         8552  
  0         0  
4396 0         0 $expectation->is(q{variable_name})->at($text);
4397 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::variable_name($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  0         0  
4398             {
4399            
4400 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match subrule: [variable_name]>>},
4401             Parse::RecDescent::_tracefirst($text),
4402             q{unescaped_variable},
4403             $tracelevel)
4404             if defined $::RD_TRACE;
4405 0         0 $expectation->failed();
4406 0         0 last;
4407             }
4408 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [variable_name]<< (return value: [}
4409             . $_tok . q{]},
4410              
4411             Parse::RecDescent::_tracefirst($text),
4412             q{unescaped_variable},
4413             $tracelevel)
4414             if defined $::RD_TRACE;
4415 0         0 $item{q{variable_name}} = $_tok;
4416 0         0 push @item, $_tok;
4417            
4418             }
4419              
4420 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
4421             q{unescaped_variable},
4422             $tracelevel)
4423             if defined $::RD_TRACE;
4424 0         0 undef $lastsep;
4425 0         0 $expectation->is(q{/\\s*/})->at($text);
4426            
4427              
4428 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  0 0       0  
4429             {
4430 0 0       0 $text = $lastsep . $text if defined $lastsep;
4431 0         0 $expectation->failed();
4432 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
4433             Parse::RecDescent::_tracefirst($text))
4434             if defined $::RD_TRACE;
4435              
4436 0         0 last;
4437             }
4438 0         0 $current_match = substr($text, $-[0], $+[0] - $-[0]);
4439 0         0 substr($text,0,length($current_match),q{});
4440 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4441             . $current_match . q{])},
4442             Parse::RecDescent::_tracefirst($text))
4443             if defined $::RD_TRACE;
4444 0         0 push @item, $item{__PATTERN3__}=$current_match;
4445            
4446              
4447 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: ['\}']},
4448             Parse::RecDescent::_tracefirst($text),
4449             q{unescaped_variable},
4450             $tracelevel)
4451             if defined $::RD_TRACE;
4452 0         0 undef $lastsep;
4453 0         0 $expectation->is(q{'\}'})->at($text);
4454            
4455              
4456 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\}/)
  0 0       0  
4457             {
4458 0 0       0 $text = $lastsep . $text if defined $lastsep;
4459            
4460 0         0 $expectation->failed();
4461 0 0       0 Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
4462             Parse::RecDescent::_tracefirst($text))
4463             if defined $::RD_TRACE;
4464 0         0 last;
4465             }
4466 0         0 $current_match = substr($text, $-[0], $+[0] - $-[0]);
4467 0         0 substr($text,0,length($current_match),q{});
4468 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4469             . $current_match . q{])},
4470             Parse::RecDescent::_tracefirst($text))
4471             if defined $::RD_TRACE;
4472 0         0 push @item, $item{__STRING2__}=$current_match;
4473            
4474              
4475 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [closing_tag]},
4476             Parse::RecDescent::_tracefirst($text),
4477             q{unescaped_variable},
4478             $tracelevel)
4479             if defined $::RD_TRACE;
4480 20     20   134 if (1) { no strict qw{refs};
  20         52  
  20         10984  
  0         0  
4481 0         0 $expectation->is(q{closing_tag})->at($text);
4482 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::closing_tag($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  0         0  
4483             {
4484            
4485 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match subrule: [closing_tag]>>},
4486             Parse::RecDescent::_tracefirst($text),
4487             q{unescaped_variable},
4488             $tracelevel)
4489             if defined $::RD_TRACE;
4490 0         0 $expectation->failed();
4491 0         0 last;
4492             }
4493 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [closing_tag]<< (return value: [}
4494             . $_tok . q{]},
4495              
4496             Parse::RecDescent::_tracefirst($text),
4497             q{unescaped_variable},
4498             $tracelevel)
4499             if defined $::RD_TRACE;
4500 0         0 $item{q{closing_tag}} = $_tok;
4501 0         0 push @item, $_tok;
4502            
4503             }
4504              
4505 0 0       0 Parse::RecDescent::_trace(q{Trying action},
4506             Parse::RecDescent::_tracefirst($text),
4507             q{unescaped_variable},
4508             $tracelevel)
4509             if defined $::RD_TRACE;
4510            
4511              
4512 0 0       0 $_tok = ($_noactions) ? 0 : do {
4513             Template::Mustache::Token::Template->new(
4514             items => [
4515             Template::Mustache::Token::Verbatim->new( content => $item[1] ),
4516             Template::Mustache::Token::Variable->new(
4517             name => $item{variable_name},
4518 0         0 escape => 0,
4519             ),
4520             ]
4521             );
4522             };
4523 0 0       0 unless (defined $_tok)
4524             {
4525 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
4526             if defined $::RD_TRACE;
4527 0         0 last;
4528             }
4529 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4530             . $_tok . q{])},
4531             Parse::RecDescent::_tracefirst($text))
4532             if defined $::RD_TRACE;
4533 0         0 push @item, $_tok;
4534 0         0 $item{__ACTION1__}=$_tok;
4535            
4536              
4537 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/\\s*/ opening_tag '\{' /\\s*/ variable_name /\\s*/ '\}' closing_tag]<<},
4538             Parse::RecDescent::_tracefirst($text),
4539             q{unescaped_variable},
4540             $tracelevel)
4541             if defined $::RD_TRACE;
4542              
4543              
4544              
4545 0         0 $_matched = 1;
4546 0         0 last;
4547             }
4548              
4549              
4550 256 50 33     1189 unless ( $_matched || defined($score) )
4551             {
4552            
4553              
4554 256         481 $_[1] = $text; # NOT SURE THIS IS NEEDED
4555 256 50       460 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
4556             Parse::RecDescent::_tracefirst($_[1]),
4557             q{unescaped_variable},
4558             $tracelevel)
4559             if defined $::RD_TRACE;
4560 256         1206 return undef;
4561             }
4562 0 0 0     0 if (!defined($return) && defined($score))
4563             {
4564 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4565             q{unescaped_variable},
4566             $tracelevel)
4567             if defined $::RD_TRACE;
4568 0         0 $return = $score_return;
4569             }
4570 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
4571 0 0       0 $return = $item[$#item] unless defined $return;
4572 0 0       0 if (defined $::RD_TRACE)
4573             {
4574 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4575             $return . q{])}, "",
4576             q{unescaped_variable},
4577             $tracelevel);
4578 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4579             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4580             Parse::RecDescent::_tracefirst($text),
4581             , q{unescaped_variable},
4582             $tracelevel)
4583             }
4584 0         0 $_[1] = $text;
4585 0         0 return $return;
4586             }
4587              
4588             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
4589             sub Parse::RecDescent::Template::Mustache::Parser::unescaped_variable_amp
4590             {
4591 256     256   439 my $thisparser = $_[0];
4592 20     20   145 use vars q{$tracelevel};
  20         48  
  20         9254  
4593 256   50     599 local $tracelevel = ($tracelevel||0)+1;
4594 256         373 $ERRORS = 0;
4595 256         521 my $thisrule = $thisparser->{"rules"}{"unescaped_variable_amp"};
4596              
4597 256 50       520 Parse::RecDescent::_trace(q{Trying rule: [unescaped_variable_amp]},
4598             Parse::RecDescent::_tracefirst($_[1]),
4599             q{unescaped_variable_amp},
4600             $tracelevel)
4601             if defined $::RD_TRACE;
4602              
4603            
4604 256         341 my $err_at = @{$thisparser->{errors}};
  256         455  
4605              
4606 256         580 my $score;
4607             my $score_return;
4608 256         0 my $_tok;
4609 256         342 my $return = undef;
4610 256         334 my $_matched=0;
4611 256         336 my $commit=0;
4612 256         362 my @item = ();
4613 256         370 my %item = ();
4614 256         401 my $repeating = $_[2];
4615 256         522 my $_noactions = $_[3];
4616 256 50       584 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  256         456  
  256         419  
4617 256         441 my $_itempos = $_[5];
4618 256 100       749 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4619 256         609 my $text;
4620             my $lastsep;
4621 256         0 my $current_match;
4622 256         614 my $expectation = new Parse::RecDescent::Expectation(q{/\\s*/});
4623 256         1423 $expectation->at($_[1]);
4624            
4625 256         864 my $thisoffset;
4626 256         732 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
4627            
4628 256         1092 my $thisline;
4629 256         562 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4630              
4631            
4632              
4633 256   33     1551 while (!$_matched && !$commit)
4634             {
4635            
4636 256 50       508 Parse::RecDescent::_trace(q{Trying production: [/\\s*/ opening_tag '&' /\\s*/ variable_name /\\s*/ closing_tag]},
4637             Parse::RecDescent::_tracefirst($_[1]),
4638             q{unescaped_variable_amp},
4639             $tracelevel)
4640             if defined $::RD_TRACE;
4641 256         484 my $thisprod = $thisrule->{"prods"}[0];
4642 256         372 $text = $_[1];
4643 256         323 my $_savetext;
4644 256         446 @item = (q{unescaped_variable_amp});
4645 256         464 %item = (__RULE__ => q{unescaped_variable_amp});
4646 256         348 my $repcount = 0;
4647              
4648              
4649 256 50       475 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
4650             q{unescaped_variable_amp},
4651             $tracelevel)
4652             if defined $::RD_TRACE;
4653 256         406 undef $lastsep;
4654 256         555 $expectation->is(q{})->at($text);
4655            
4656              
4657 256 50 33     2638 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  256 50       1880  
4658             {
4659 0 0       0 $text = $lastsep . $text if defined $lastsep;
4660 0         0 $expectation->failed();
4661 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
4662             Parse::RecDescent::_tracefirst($text))
4663             if defined $::RD_TRACE;
4664              
4665 0         0 last;
4666             }
4667 256         1213 $current_match = substr($text, $-[0], $+[0] - $-[0]);
4668 256         700 substr($text,0,length($current_match),q{});
4669 256 50       623 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4670             . $current_match . q{])},
4671             Parse::RecDescent::_tracefirst($text))
4672             if defined $::RD_TRACE;
4673 256         625 push @item, $item{__PATTERN1__}=$current_match;
4674            
4675              
4676 256 50       588 Parse::RecDescent::_trace(q{Trying subrule: [opening_tag]},
4677             Parse::RecDescent::_tracefirst($text),
4678             q{unescaped_variable_amp},
4679             $tracelevel)
4680             if defined $::RD_TRACE;
4681 20     20   176 if (1) { no strict qw{refs};
  20         48  
  20         8269  
  256         414  
4682 256         625 $expectation->is(q{opening_tag})->at($text);
4683 256 100   256   2149 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::opening_tag($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  256         513  
4684             {
4685            
4686 176 50       361 Parse::RecDescent::_trace(q{<<Didn't match subrule: [opening_tag]>>},
4687             Parse::RecDescent::_tracefirst($text),
4688             q{unescaped_variable_amp},
4689             $tracelevel)
4690             if defined $::RD_TRACE;
4691 176         441 $expectation->failed();
4692 176         1232 last;
4693             }
4694 80 50       271 Parse::RecDescent::_trace(q{>>Matched subrule: [opening_tag]<< (return value: [}
4695             . $_tok . q{]},
4696              
4697             Parse::RecDescent::_tracefirst($text),
4698             q{unescaped_variable_amp},
4699             $tracelevel)
4700             if defined $::RD_TRACE;
4701 80         186 $item{q{opening_tag}} = $_tok;
4702 80         141 push @item, $_tok;
4703            
4704             }
4705              
4706 80 50       186 Parse::RecDescent::_trace(q{Trying terminal: ['&']},
4707             Parse::RecDescent::_tracefirst($text),
4708             q{unescaped_variable_amp},
4709             $tracelevel)
4710             if defined $::RD_TRACE;
4711 80         132 undef $lastsep;
4712 80         224 $expectation->is(q{'&'})->at($text);
4713            
4714              
4715 80 50 33     846 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A\&/)
  80 50       603  
4716             {
4717 80 50       245 $text = $lastsep . $text if defined $lastsep;
4718            
4719 80         229 $expectation->failed();
4720 80 50       601 Parse::RecDescent::_trace(qq{<<Didn't match terminal>>},
4721             Parse::RecDescent::_tracefirst($text))
4722             if defined $::RD_TRACE;
4723 80         178 last;
4724             }
4725 0         0 $current_match = substr($text, $-[0], $+[0] - $-[0]);
4726 0         0 substr($text,0,length($current_match),q{});
4727 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4728             . $current_match . q{])},
4729             Parse::RecDescent::_tracefirst($text))
4730             if defined $::RD_TRACE;
4731 0         0 push @item, $item{__STRING1__}=$current_match;
4732            
4733              
4734 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
4735             q{unescaped_variable_amp},
4736             $tracelevel)
4737             if defined $::RD_TRACE;
4738 0         0 undef $lastsep;
4739 0         0 $expectation->is(q{/\\s*/})->at($text);
4740            
4741              
4742 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  0 0       0  
4743             {
4744 0 0       0 $text = $lastsep . $text if defined $lastsep;
4745 0         0 $expectation->failed();
4746 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
4747             Parse::RecDescent::_tracefirst($text))
4748             if defined $::RD_TRACE;
4749              
4750 0         0 last;
4751             }
4752 0         0 $current_match = substr($text, $-[0], $+[0] - $-[0]);
4753 0         0 substr($text,0,length($current_match),q{});
4754 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4755             . $current_match . q{])},
4756             Parse::RecDescent::_tracefirst($text))
4757             if defined $::RD_TRACE;
4758 0         0 push @item, $item{__PATTERN2__}=$current_match;
4759            
4760              
4761 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [variable_name]},
4762             Parse::RecDescent::_tracefirst($text),
4763             q{unescaped_variable_amp},
4764             $tracelevel)
4765             if defined $::RD_TRACE;
4766 20     20   148 if (1) { no strict qw{refs};
  20         50  
  20         5739  
  0         0  
4767 0         0 $expectation->is(q{variable_name})->at($text);
4768 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::variable_name($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  0         0  
4769             {
4770            
4771 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match subrule: [variable_name]>>},
4772             Parse::RecDescent::_tracefirst($text),
4773             q{unescaped_variable_amp},
4774             $tracelevel)
4775             if defined $::RD_TRACE;
4776 0         0 $expectation->failed();
4777 0         0 last;
4778             }
4779 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [variable_name]<< (return value: [}
4780             . $_tok . q{]},
4781              
4782             Parse::RecDescent::_tracefirst($text),
4783             q{unescaped_variable_amp},
4784             $tracelevel)
4785             if defined $::RD_TRACE;
4786 0         0 $item{q{variable_name}} = $_tok;
4787 0         0 push @item, $_tok;
4788            
4789             }
4790              
4791 0 0       0 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
4792             q{unescaped_variable_amp},
4793             $tracelevel)
4794             if defined $::RD_TRACE;
4795 0         0 undef $lastsep;
4796 0         0 $expectation->is(q{/\\s*/})->at($text);
4797            
4798              
4799 0 0 0     0 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  0 0       0  
4800             {
4801 0 0       0 $text = $lastsep . $text if defined $lastsep;
4802 0         0 $expectation->failed();
4803 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
4804             Parse::RecDescent::_tracefirst($text))
4805             if defined $::RD_TRACE;
4806              
4807 0         0 last;
4808             }
4809 0         0 $current_match = substr($text, $-[0], $+[0] - $-[0]);
4810 0         0 substr($text,0,length($current_match),q{});
4811 0 0       0 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
4812             . $current_match . q{])},
4813             Parse::RecDescent::_tracefirst($text))
4814             if defined $::RD_TRACE;
4815 0         0 push @item, $item{__PATTERN3__}=$current_match;
4816            
4817              
4818 0 0       0 Parse::RecDescent::_trace(q{Trying subrule: [closing_tag]},
4819             Parse::RecDescent::_tracefirst($text),
4820             q{unescaped_variable_amp},
4821             $tracelevel)
4822             if defined $::RD_TRACE;
4823 20     20   134 if (1) { no strict qw{refs};
  20         49  
  20         10419  
  0         0  
4824 0         0 $expectation->is(q{closing_tag})->at($text);
4825 0 0   0   0 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::closing_tag($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  0         0  
4826             {
4827            
4828 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match subrule: [closing_tag]>>},
4829             Parse::RecDescent::_tracefirst($text),
4830             q{unescaped_variable_amp},
4831             $tracelevel)
4832             if defined $::RD_TRACE;
4833 0         0 $expectation->failed();
4834 0         0 last;
4835             }
4836 0 0       0 Parse::RecDescent::_trace(q{>>Matched subrule: [closing_tag]<< (return value: [}
4837             . $_tok . q{]},
4838              
4839             Parse::RecDescent::_tracefirst($text),
4840             q{unescaped_variable_amp},
4841             $tracelevel)
4842             if defined $::RD_TRACE;
4843 0         0 $item{q{closing_tag}} = $_tok;
4844 0         0 push @item, $_tok;
4845            
4846             }
4847              
4848 0 0       0 Parse::RecDescent::_trace(q{Trying action},
4849             Parse::RecDescent::_tracefirst($text),
4850             q{unescaped_variable_amp},
4851             $tracelevel)
4852             if defined $::RD_TRACE;
4853            
4854              
4855 0 0       0 $_tok = ($_noactions) ? 0 : do {
4856             Template::Mustache::Token::Template->new(
4857             items => [
4858             Template::Mustache::Token::Verbatim->new( content => $item[1] ),
4859             Template::Mustache::Token::Variable->new(
4860             name => $item{variable_name},
4861 0         0 escape => 0,
4862             ),
4863             ]
4864             );
4865             };
4866 0 0       0 unless (defined $_tok)
4867             {
4868 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
4869             if defined $::RD_TRACE;
4870 0         0 last;
4871             }
4872 0 0       0 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
4873             . $_tok . q{])},
4874             Parse::RecDescent::_tracefirst($text))
4875             if defined $::RD_TRACE;
4876 0         0 push @item, $_tok;
4877 0         0 $item{__ACTION1__}=$_tok;
4878            
4879              
4880 0 0       0 Parse::RecDescent::_trace(q{>>Matched production: [/\\s*/ opening_tag '&' /\\s*/ variable_name /\\s*/ closing_tag]<<},
4881             Parse::RecDescent::_tracefirst($text),
4882             q{unescaped_variable_amp},
4883             $tracelevel)
4884             if defined $::RD_TRACE;
4885              
4886              
4887              
4888 0         0 $_matched = 1;
4889 0         0 last;
4890             }
4891              
4892              
4893 256 50 33     1048 unless ( $_matched || defined($score) )
4894             {
4895            
4896              
4897 256         461 $_[1] = $text; # NOT SURE THIS IS NEEDED
4898 256 50       464 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
4899             Parse::RecDescent::_tracefirst($_[1]),
4900             q{unescaped_variable_amp},
4901             $tracelevel)
4902             if defined $::RD_TRACE;
4903 256         1210 return undef;
4904             }
4905 0 0 0     0 if (!defined($return) && defined($score))
4906             {
4907 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
4908             q{unescaped_variable_amp},
4909             $tracelevel)
4910             if defined $::RD_TRACE;
4911 0         0 $return = $score_return;
4912             }
4913 0         0 splice @{$thisparser->{errors}}, $err_at;
  0         0  
4914 0 0       0 $return = $item[$#item] unless defined $return;
4915 0 0       0 if (defined $::RD_TRACE)
4916             {
4917 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
4918             $return . q{])}, "",
4919             q{unescaped_variable_amp},
4920             $tracelevel);
4921 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
4922             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
4923             Parse::RecDescent::_tracefirst($text),
4924             , q{unescaped_variable_amp},
4925             $tracelevel)
4926             }
4927 0         0 $_[1] = $text;
4928 0         0 return $return;
4929             }
4930              
4931             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
4932             sub Parse::RecDescent::Template::Mustache::Parser::variable
4933             {
4934 256     256   417 my $thisparser = $_[0];
4935 20     20   141 use vars q{$tracelevel};
  20         49  
  20         9874  
4936 256   50     641 local $tracelevel = ($tracelevel||0)+1;
4937 256         365 $ERRORS = 0;
4938 256         517 my $thisrule = $thisparser->{"rules"}{"variable"};
4939              
4940 256 50       501 Parse::RecDescent::_trace(q{Trying rule: [variable]},
4941             Parse::RecDescent::_tracefirst($_[1]),
4942             q{variable},
4943             $tracelevel)
4944             if defined $::RD_TRACE;
4945              
4946            
4947 256         330 my $err_at = @{$thisparser->{errors}};
  256         443  
4948              
4949 256         567 my $score;
4950             my $score_return;
4951 256         0 my $_tok;
4952 256         341 my $return = undef;
4953 256         336 my $_matched=0;
4954 256         308 my $commit=0;
4955 256         433 my @item = ();
4956 256         375 my %item = ();
4957 256         356 my $repeating = $_[2];
4958 256         347 my $_noactions = $_[3];
4959 256 50       527 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  256         320  
  256         450  
4960 256         396 my $_itempos = $_[5];
4961 256 100       736 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
4962 256         613 my $text;
4963             my $lastsep;
4964 256         0 my $current_match;
4965 256         583 my $expectation = new Parse::RecDescent::Expectation(q{/\\s*/});
4966 256         1431 $expectation->at($_[1]);
4967            
4968 256         886 my $thisoffset;
4969 256         737 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
4970            
4971 256         1117 my $thisline;
4972 256         584 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
4973              
4974            
4975              
4976 256   33     1587 while (!$_matched && !$commit)
4977             {
4978            
4979 256 50       531 Parse::RecDescent::_trace(q{Trying production: [/\\s*/ opening_tag /\\s*/ variable_name /\\s*/ closing_tag]},
4980             Parse::RecDescent::_tracefirst($_[1]),
4981             q{variable},
4982             $tracelevel)
4983             if defined $::RD_TRACE;
4984 256         475 my $thisprod = $thisrule->{"prods"}[0];
4985 256         387 $text = $_[1];
4986 256         338 my $_savetext;
4987 256         421 @item = (q{variable});
4988 256         461 %item = (__RULE__ => q{variable});
4989 256         344 my $repcount = 0;
4990              
4991              
4992 256 50       494 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
4993             q{variable},
4994             $tracelevel)
4995             if defined $::RD_TRACE;
4996 256         410 undef $lastsep;
4997 256         580 $expectation->is(q{})->at($text);
4998            
4999              
5000 256 50 33     2464 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  256 50       1767  
5001             {
5002 0 0       0 $text = $lastsep . $text if defined $lastsep;
5003 0         0 $expectation->failed();
5004 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
5005             Parse::RecDescent::_tracefirst($text))
5006             if defined $::RD_TRACE;
5007              
5008 0         0 last;
5009             }
5010 256         1029 $current_match = substr($text, $-[0], $+[0] - $-[0]);
5011 256         641 substr($text,0,length($current_match),q{});
5012 256 50       565 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5013             . $current_match . q{])},
5014             Parse::RecDescent::_tracefirst($text))
5015             if defined $::RD_TRACE;
5016 256         589 push @item, $item{__PATTERN1__}=$current_match;
5017            
5018              
5019 256 50       555 Parse::RecDescent::_trace(q{Trying subrule: [opening_tag]},
5020             Parse::RecDescent::_tracefirst($text),
5021             q{variable},
5022             $tracelevel)
5023             if defined $::RD_TRACE;
5024 20     20   139 if (1) { no strict qw{refs};
  20         49  
  20         5810  
  256         429  
5025 256         693 $expectation->is(q{opening_tag})->at($text);
5026 256 100   256   2138 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::opening_tag($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  256         551  
5027             {
5028            
5029 176 50       371 Parse::RecDescent::_trace(q{<<Didn't match subrule: [opening_tag]>>},
5030             Parse::RecDescent::_tracefirst($text),
5031             q{variable},
5032             $tracelevel)
5033             if defined $::RD_TRACE;
5034 176         734 $expectation->failed();
5035 176         1209 last;
5036             }
5037 80 50       291 Parse::RecDescent::_trace(q{>>Matched subrule: [opening_tag]<< (return value: [}
5038             . $_tok . q{]},
5039              
5040             Parse::RecDescent::_tracefirst($text),
5041             q{variable},
5042             $tracelevel)
5043             if defined $::RD_TRACE;
5044 80         196 $item{q{opening_tag}} = $_tok;
5045 80         185 push @item, $_tok;
5046            
5047             }
5048              
5049 80 50       180 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
5050             q{variable},
5051             $tracelevel)
5052             if defined $::RD_TRACE;
5053 80         120 undef $lastsep;
5054 80         211 $expectation->is(q{/\\s*/})->at($text);
5055            
5056              
5057 80 50 33     984 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  80 50       665  
5058             {
5059 0 0       0 $text = $lastsep . $text if defined $lastsep;
5060 0         0 $expectation->failed();
5061 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
5062             Parse::RecDescent::_tracefirst($text))
5063             if defined $::RD_TRACE;
5064              
5065 0         0 last;
5066             }
5067 80         360 $current_match = substr($text, $-[0], $+[0] - $-[0]);
5068 80         223 substr($text,0,length($current_match),q{});
5069 80 50       201 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5070             . $current_match . q{])},
5071             Parse::RecDescent::_tracefirst($text))
5072             if defined $::RD_TRACE;
5073 80         209 push @item, $item{__PATTERN2__}=$current_match;
5074            
5075              
5076 80 50       203 Parse::RecDescent::_trace(q{Trying subrule: [variable_name]},
5077             Parse::RecDescent::_tracefirst($text),
5078             q{variable},
5079             $tracelevel)
5080             if defined $::RD_TRACE;
5081 20     20   152 if (1) { no strict qw{refs};
  20         47  
  20         5621  
  80         110  
5082 80         196 $expectation->is(q{variable_name})->at($text);
5083 80 100   80   856 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::variable_name($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  80         193  
5084             {
5085            
5086 17 50       36 Parse::RecDescent::_trace(q{<<Didn't match subrule: [variable_name]>>},
5087             Parse::RecDescent::_tracefirst($text),
5088             q{variable},
5089             $tracelevel)
5090             if defined $::RD_TRACE;
5091 17         41 $expectation->failed();
5092 17         115 last;
5093             }
5094 63 50       240 Parse::RecDescent::_trace(q{>>Matched subrule: [variable_name]<< (return value: [}
5095             . $_tok . q{]},
5096              
5097             Parse::RecDescent::_tracefirst($text),
5098             q{variable},
5099             $tracelevel)
5100             if defined $::RD_TRACE;
5101 63         132 $item{q{variable_name}} = $_tok;
5102 63         133 push @item, $_tok;
5103            
5104             }
5105              
5106 63 50       183 Parse::RecDescent::_trace(q{Trying terminal: [/\\s*/]}, Parse::RecDescent::_tracefirst($text),
5107             q{variable},
5108             $tracelevel)
5109             if defined $::RD_TRACE;
5110 63         103 undef $lastsep;
5111 63         193 $expectation->is(q{/\\s*/})->at($text);
5112            
5113              
5114 63 50 33     653 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:\s*)/)
  63 50       524  
5115             {
5116 0 0       0 $text = $lastsep . $text if defined $lastsep;
5117 0         0 $expectation->failed();
5118 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
5119             Parse::RecDescent::_tracefirst($text))
5120             if defined $::RD_TRACE;
5121              
5122 0         0 last;
5123             }
5124 63         302 $current_match = substr($text, $-[0], $+[0] - $-[0]);
5125 63         182 substr($text,0,length($current_match),q{});
5126 63 50       151 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5127             . $current_match . q{])},
5128             Parse::RecDescent::_tracefirst($text))
5129             if defined $::RD_TRACE;
5130 63         259 push @item, $item{__PATTERN3__}=$current_match;
5131            
5132              
5133 63 50       156 Parse::RecDescent::_trace(q{Trying subrule: [closing_tag]},
5134             Parse::RecDescent::_tracefirst($text),
5135             q{variable},
5136             $tracelevel)
5137             if defined $::RD_TRACE;
5138 20     20   137 if (1) { no strict qw{refs};
  20         61  
  20         10500  
  63         91  
5139 63         168 $expectation->is(q{closing_tag})->at($text);
5140 63 50   63   602 unless (defined ($_tok = Parse::RecDescent::Template::Mustache::Parser::closing_tag($thisparser,$text,$repeating,$_noactions,sub { \@arg },undef)))
  63         153  
5141             {
5142            
5143 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match subrule: [closing_tag]>>},
5144             Parse::RecDescent::_tracefirst($text),
5145             q{variable},
5146             $tracelevel)
5147             if defined $::RD_TRACE;
5148 0         0 $expectation->failed();
5149 0         0 last;
5150             }
5151 63 50       224 Parse::RecDescent::_trace(q{>>Matched subrule: [closing_tag]<< (return value: [}
5152             . $_tok . q{]},
5153              
5154             Parse::RecDescent::_tracefirst($text),
5155             q{variable},
5156             $tracelevel)
5157             if defined $::RD_TRACE;
5158 63         142 $item{q{closing_tag}} = $_tok;
5159 63         130 push @item, $_tok;
5160            
5161             }
5162              
5163 63 50       155 Parse::RecDescent::_trace(q{Trying action},
5164             Parse::RecDescent::_tracefirst($text),
5165             q{variable},
5166             $tracelevel)
5167             if defined $::RD_TRACE;
5168            
5169              
5170 63 50       137 $_tok = ($_noactions) ? 0 : do {
5171 63         123 $thisparser->{prev_is_standalone} = 0;
5172             Template::Mustache::Token::Template->new(
5173             items => [
5174             Template::Mustache::Token::Verbatim->new( content => $item[1] ),
5175 63         1656 Template::Mustache::Token::Variable->new( name => $item{variable_name} ),
5176             ]
5177             );
5178             };
5179 63 50       36691 unless (defined $_tok)
5180             {
5181 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
5182             if defined $::RD_TRACE;
5183 0         0 last;
5184             }
5185 63 50       197 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5186             . $_tok . q{])},
5187             Parse::RecDescent::_tracefirst($text))
5188             if defined $::RD_TRACE;
5189 63         134 push @item, $_tok;
5190 63         146 $item{__ACTION1__}=$_tok;
5191            
5192              
5193 63 50       157 Parse::RecDescent::_trace(q{>>Matched production: [/\\s*/ opening_tag /\\s*/ variable_name /\\s*/ closing_tag]<<},
5194             Parse::RecDescent::_tracefirst($text),
5195             q{variable},
5196             $tracelevel)
5197             if defined $::RD_TRACE;
5198              
5199              
5200              
5201 63         91 $_matched = 1;
5202 63         140 last;
5203             }
5204              
5205              
5206 256 100 66     1016 unless ( $_matched || defined($score) )
5207             {
5208            
5209              
5210 193         381 $_[1] = $text; # NOT SURE THIS IS NEEDED
5211 193 50       366 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
5212             Parse::RecDescent::_tracefirst($_[1]),
5213             q{variable},
5214             $tracelevel)
5215             if defined $::RD_TRACE;
5216 193         912 return undef;
5217             }
5218 63 50 33     305 if (!defined($return) && defined($score))
5219             {
5220 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5221             q{variable},
5222             $tracelevel)
5223             if defined $::RD_TRACE;
5224 0         0 $return = $score_return;
5225             }
5226 63         109 splice @{$thisparser->{errors}}, $err_at;
  63         144  
5227 63 50       175 $return = $item[$#item] unless defined $return;
5228 63 50       156 if (defined $::RD_TRACE)
5229             {
5230 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5231             $return . q{])}, "",
5232             q{variable},
5233             $tracelevel);
5234 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5235             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5236             Parse::RecDescent::_tracefirst($text),
5237             , q{variable},
5238             $tracelevel)
5239             }
5240 63         116 $_[1] = $text;
5241 63         506 return $return;
5242             }
5243              
5244             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
5245             sub Parse::RecDescent::Template::Mustache::Parser::variable_name
5246             {
5247 80     80   163 my $thisparser = $_[0];
5248 20     20   138 use vars q{$tracelevel};
  20         49  
  20         14111  
5249 80   50     261 local $tracelevel = ($tracelevel||0)+1;
5250 80         123 $ERRORS = 0;
5251 80         180 my $thisrule = $thisparser->{"rules"}{"variable_name"};
5252              
5253 80 50       178 Parse::RecDescent::_trace(q{Trying rule: [variable_name]},
5254             Parse::RecDescent::_tracefirst($_[1]),
5255             q{variable_name},
5256             $tracelevel)
5257             if defined $::RD_TRACE;
5258              
5259            
5260 80         112 my $err_at = @{$thisparser->{errors}};
  80         144  
5261              
5262 80         220 my $score;
5263             my $score_return;
5264 80         0 my $_tok;
5265 80         128 my $return = undef;
5266 80         111 my $_matched=0;
5267 80         122 my $commit=0;
5268 80         143 my @item = ();
5269 80         143 my %item = ();
5270 80         105 my $repeating = $_[2];
5271 80         132 my $_noactions = $_[3];
5272 80 50       199 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  80         110  
  80         149  
5273 80         139 my $_itempos = $_[5];
5274 80 100       259 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5275 80         198 my $text;
5276             my $lastsep;
5277 80         0 my $current_match;
5278 80         216 my $expectation = new Parse::RecDescent::Expectation(q{/[-\\w.]+/});
5279 80         508 $expectation->at($_[1]);
5280            
5281 80         276 my $thisoffset;
5282 80         245 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
5283            
5284 80         370 my $thisline;
5285 80         220 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5286              
5287            
5288              
5289 80   33     560 while (!$_matched && !$commit)
5290             {
5291            
5292 80 50       199 Parse::RecDescent::_trace(q{Trying production: [/[-\\w.]+/]},
5293             Parse::RecDescent::_tracefirst($_[1]),
5294             q{variable_name},
5295             $tracelevel)
5296             if defined $::RD_TRACE;
5297 80         181 my $thisprod = $thisrule->{"prods"}[0];
5298 80         133 $text = $_[1];
5299 80         106 my $_savetext;
5300 80         142 @item = (q{variable_name});
5301 80         183 %item = (__RULE__ => q{variable_name});
5302 80         114 my $repcount = 0;
5303              
5304              
5305 80 50       216 Parse::RecDescent::_trace(q{Trying terminal: [/[-\\w.]+/]}, Parse::RecDescent::_tracefirst($text),
5306             q{variable_name},
5307             $tracelevel)
5308             if defined $::RD_TRACE;
5309 80         124 undef $lastsep;
5310 80         193 $expectation->is(q{})->at($text);
5311            
5312              
5313 80 50 66     868 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:[-\w.]+)/)
  80 100       715  
5314             {
5315 17 50       50 $text = $lastsep . $text if defined $lastsep;
5316 17         50 $expectation->failed();
5317 17 50       61 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
5318             Parse::RecDescent::_tracefirst($text))
5319             if defined $::RD_TRACE;
5320              
5321 17         37 last;
5322             }
5323 63         310 $current_match = substr($text, $-[0], $+[0] - $-[0]);
5324 63         178 substr($text,0,length($current_match),q{});
5325 63 50       152 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5326             . $current_match . q{])},
5327             Parse::RecDescent::_tracefirst($text))
5328             if defined $::RD_TRACE;
5329 63         152 push @item, $item{__PATTERN1__}=$current_match;
5330            
5331              
5332 63 50       160 Parse::RecDescent::_trace(q{>>Matched production: [/[-\\w.]+/]<<},
5333             Parse::RecDescent::_tracefirst($text),
5334             q{variable_name},
5335             $tracelevel)
5336             if defined $::RD_TRACE;
5337              
5338              
5339              
5340 63         102 $_matched = 1;
5341 63         122 last;
5342             }
5343              
5344              
5345 80 100 66     251 unless ( $_matched || defined($score) )
5346             {
5347            
5348              
5349 17         29 $_[1] = $text; # NOT SURE THIS IS NEEDED
5350 17 50       35 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
5351             Parse::RecDescent::_tracefirst($_[1]),
5352             q{variable_name},
5353             $tracelevel)
5354             if defined $::RD_TRACE;
5355 17         76 return undef;
5356             }
5357 63 50 33     273 if (!defined($return) && defined($score))
5358             {
5359 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5360             q{variable_name},
5361             $tracelevel)
5362             if defined $::RD_TRACE;
5363 0         0 $return = $score_return;
5364             }
5365 63         94 splice @{$thisparser->{errors}}, $err_at;
  63         127  
5366 63 50       178 $return = $item[$#item] unless defined $return;
5367 63 50       159 if (defined $::RD_TRACE)
5368             {
5369 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5370             $return . q{])}, "",
5371             q{variable_name},
5372             $tracelevel);
5373 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5374             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5375             Parse::RecDescent::_tracefirst($text),
5376             , q{variable_name},
5377             $tracelevel)
5378             }
5379 63         126 $_[1] = $text;
5380 63         353 return $return;
5381             }
5382              
5383             # ARGS ARE: ($parser, $text; $repeating, $_noactions, \@args, $_itempos)
5384             sub Parse::RecDescent::Template::Mustache::Parser::verbatim
5385             {
5386 193     193   341 my $thisparser = $_[0];
5387 20     20   159 use vars q{$tracelevel};
  20         42  
  20         76499  
5388 193   50     514 local $tracelevel = ($tracelevel||0)+1;
5389 193         278 $ERRORS = 0;
5390 193         440 my $thisrule = $thisparser->{"rules"}{"verbatim"};
5391              
5392 193 50       418 Parse::RecDescent::_trace(q{Trying rule: [verbatim]},
5393             Parse::RecDescent::_tracefirst($_[1]),
5394             q{verbatim},
5395             $tracelevel)
5396             if defined $::RD_TRACE;
5397              
5398            
5399 193         251 my $err_at = @{$thisparser->{errors}};
  193         335  
5400              
5401 193         454 my $score;
5402             my $score_return;
5403 193         0 my $_tok;
5404 193         252 my $return = undef;
5405 193         266 my $_matched=0;
5406 193         244 my $commit=0;
5407 193         304 my @item = ();
5408 193         283 my %item = ();
5409 193         310 my $repeating = $_[2];
5410 193         285 my $_noactions = $_[3];
5411 193 50       431 my @arg = defined $_[4] ? @{ &{$_[4]} } : ();
  193         234  
  193         362  
5412 193         316 my $_itempos = $_[5];
5413 193 100       547 my %arg = ($#arg & 01) ? @arg : (@arg, undef);
5414 193         459 my $text;
5415             my $lastsep;
5416 193         0 my $current_match;
5417 193         460 my $expectation = new Parse::RecDescent::Expectation(q{});
5418 193         1110 $expectation->at($_[1]);
5419            
5420 193         655 my $thisoffset;
5421 193         592 tie $thisoffset, q{Parse::RecDescent::OffsetCounter}, \$text, $thisparser;
5422            
5423 193         824 my $thisline;
5424 193         430 tie $thisline, q{Parse::RecDescent::LineCounter}, \$text, $thisparser;
5425              
5426            
5427              
5428 193   33     1211 while (!$_matched && !$commit)
5429             {
5430            
5431 193 50       398 Parse::RecDescent::_trace(q{Trying production: [/^\\s*\\S*?(?=\\Q$item[1]\\E|\\s|$)/]},
5432             Parse::RecDescent::_tracefirst($_[1]),
5433             q{verbatim},
5434             $tracelevel)
5435             if defined $::RD_TRACE;
5436 193         365 my $thisprod = $thisrule->{"prods"}[0];
5437 193         299 $text = $_[1];
5438 193         288 my $_savetext;
5439 193         341 @item = (q{verbatim});
5440 193         355 %item = (__RULE__ => q{verbatim});
5441 193         263 my $repcount = 0;
5442              
5443              
5444 193 50       384 Parse::RecDescent::_trace(q{Trying action},
5445             Parse::RecDescent::_tracefirst($text),
5446             q{verbatim},
5447             $tracelevel)
5448             if defined $::RD_TRACE;
5449            
5450              
5451 193 50       394 $_tok = ($_noactions) ? 0 : do { $thisparser->{opening_tag} };
  193         348  
5452 193 50       409 unless (defined $_tok)
5453             {
5454 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
5455             if defined $::RD_TRACE;
5456 0         0 last;
5457             }
5458 193 50       421 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5459             . $_tok . q{])},
5460             Parse::RecDescent::_tracefirst($text))
5461             if defined $::RD_TRACE;
5462 193         322 push @item, $_tok;
5463 193         349 $item{__ACTION1__}=$_tok;
5464            
5465              
5466 193 50       351 Parse::RecDescent::_trace(q{Trying terminal: [/^\\s*\\S*?(?=\\Q$item[1]\\E|\\s|$)/]}, Parse::RecDescent::_tracefirst($text),
5467             q{verbatim},
5468             $tracelevel)
5469             if defined $::RD_TRACE;
5470 193         292 undef $lastsep;
5471 193         423 $expectation->is(q{/^\\s*\\S*?(?=\\Q$item[1]\\E|\\s|$)/})->at($text);
5472            
5473              
5474 193 50 33     1990 unless ($text =~ s/\A($skip)/$lastsep=$1 and ""/e and $text =~ m/\A(?:^\s*\S*?(?=\Q$item[1]\E|\s|$))/)
  193 50       2507  
5475             {
5476 0 0       0 $text = $lastsep . $text if defined $lastsep;
5477 0         0 $expectation->failed();
5478 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match terminal>>},
5479             Parse::RecDescent::_tracefirst($text))
5480             if defined $::RD_TRACE;
5481              
5482 0         0 last;
5483             }
5484 193         887 $current_match = substr($text, $-[0], $+[0] - $-[0]);
5485 193         526 substr($text,0,length($current_match),q{});
5486 193 50       411 Parse::RecDescent::_trace(q{>>Matched terminal<< (return value: [}
5487             . $current_match . q{])},
5488             Parse::RecDescent::_tracefirst($text))
5489             if defined $::RD_TRACE;
5490 193         458 push @item, $item{__PATTERN1__}=$current_match;
5491            
5492              
5493 193 50       395 Parse::RecDescent::_trace(q{Trying action},
5494             Parse::RecDescent::_tracefirst($text),
5495             q{verbatim},
5496             $tracelevel)
5497             if defined $::RD_TRACE;
5498            
5499              
5500 193 50       406 $_tok = ($_noactions) ? 0 : do {
5501 193         352 $thisparser->{prev_is_standalone} = 0;
5502 193         4478 Template::Mustache::Token::Verbatim->new( content => $item[2] );
5503             };
5504 193 50       13851 unless (defined $_tok)
5505             {
5506 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match action>> (return value: [undef])})
5507             if defined $::RD_TRACE;
5508 0         0 last;
5509             }
5510 193 50       409 Parse::RecDescent::_trace(q{>>Matched action<< (return value: [}
5511             . $_tok . q{])},
5512             Parse::RecDescent::_tracefirst($text))
5513             if defined $::RD_TRACE;
5514 193         334 push @item, $_tok;
5515 193         360 $item{__ACTION2__}=$_tok;
5516            
5517              
5518 193 50       379 Parse::RecDescent::_trace(q{>>Matched production: [/^\\s*\\S*?(?=\\Q$item[1]\\E|\\s|$)/]<<},
5519             Parse::RecDescent::_tracefirst($text),
5520             q{verbatim},
5521             $tracelevel)
5522             if defined $::RD_TRACE;
5523              
5524              
5525              
5526 193         270 $_matched = 1;
5527 193         346 last;
5528             }
5529              
5530              
5531 193 50 33     497 unless ( $_matched || defined($score) )
5532             {
5533            
5534              
5535 0         0 $_[1] = $text; # NOT SURE THIS IS NEEDED
5536 0 0       0 Parse::RecDescent::_trace(q{<<Didn't match rule>>},
5537             Parse::RecDescent::_tracefirst($_[1]),
5538             q{verbatim},
5539             $tracelevel)
5540             if defined $::RD_TRACE;
5541 0         0 return undef;
5542             }
5543 193 50 33     754 if (!defined($return) && defined($score))
5544             {
5545 0 0       0 Parse::RecDescent::_trace(q{>>Accepted scored production<<}, "",
5546             q{verbatim},
5547             $tracelevel)
5548             if defined $::RD_TRACE;
5549 0         0 $return = $score_return;
5550             }
5551 193         258 splice @{$thisparser->{errors}}, $err_at;
  193         420  
5552 193 50       533 $return = $item[$#item] unless defined $return;
5553 193 50       393 if (defined $::RD_TRACE)
5554             {
5555 0         0 Parse::RecDescent::_trace(q{>>Matched rule<< (return value: [} .
5556             $return . q{])}, "",
5557             q{verbatim},
5558             $tracelevel);
5559 0         0 Parse::RecDescent::_trace(q{(consumed: [} .
5560             Parse::RecDescent::_tracemax(substr($_[1],0,-length($text))) . q{])},
5561             Parse::RecDescent::_tracefirst($text),
5562             , q{verbatim},
5563             $tracelevel)
5564             }
5565 193         325 $_[1] = $text;
5566 193         1135 return $return;
5567             }
5568             }
5569             package Template::Mustache::Parser;
5570              
5571 72     72 0 34455 sub new { my $self = bless( {
5572             '_AUTOACTION' => undef,
5573             '_AUTOTREE' => undef,
5574             '_check' => {
5575             'itempos' => '',
5576             'prevcolumn' => '',
5577             'prevline' => '',
5578             'prevoffset' => '',
5579             'thiscolumn' => '',
5580             'thisoffset' => 1
5581             },
5582             'localvars' => '',
5583             'namespace' => 'Parse::RecDescent::Template::Mustache::Parser',
5584             'rules' => {
5585             '_alternation_1_of_production_1_of_rule_template_item' => bless( {
5586             'calls' => [
5587             'partial',
5588             'section',
5589             'delimiter_change',
5590             'comment',
5591             'unescaped_variable_amp',
5592             'unescaped_variable',
5593             'variable',
5594             'verbatim'
5595             ],
5596             'changed' => 0,
5597             'impcount' => 0,
5598             'line' => 184,
5599             'name' => '_alternation_1_of_production_1_of_rule_template_item',
5600             'opcount' => 0,
5601             'prods' => [
5602             bless( {
5603             'actcount' => 0,
5604             'dircount' => 0,
5605             'error' => undef,
5606             'items' => [
5607             bless( {
5608             'argcode' => undef,
5609             'implicit' => undef,
5610             'line' => 184,
5611             'lookahead' => 0,
5612             'matchrule' => 0,
5613             'subrule' => 'partial'
5614             }, 'Parse::RecDescent::Subrule' )
5615             ],
5616             'line' => undef,
5617             'number' => 0,
5618             'patcount' => 0,
5619             'strcount' => 0,
5620             'uncommit' => undef
5621             }, 'Parse::RecDescent::Production' ),
5622             bless( {
5623             'actcount' => 0,
5624             'dircount' => 0,
5625             'error' => undef,
5626             'items' => [
5627             bless( {
5628             'argcode' => undef,
5629             'implicit' => undef,
5630             'line' => 184,
5631             'lookahead' => 0,
5632             'matchrule' => 0,
5633             'subrule' => 'section'
5634             }, 'Parse::RecDescent::Subrule' )
5635             ],
5636             'line' => 184,
5637             'number' => 1,
5638             'patcount' => 0,
5639             'strcount' => 0,
5640             'uncommit' => undef
5641             }, 'Parse::RecDescent::Production' ),
5642             bless( {
5643             'actcount' => 0,
5644             'dircount' => 0,
5645             'error' => undef,
5646             'items' => [
5647             bless( {
5648             'argcode' => undef,
5649             'implicit' => undef,
5650             'line' => 184,
5651             'lookahead' => 0,
5652             'matchrule' => 0,
5653             'subrule' => 'delimiter_change'
5654             }, 'Parse::RecDescent::Subrule' )
5655             ],
5656             'line' => 184,
5657             'number' => 2,
5658             'patcount' => 0,
5659             'strcount' => 0,
5660             'uncommit' => undef
5661             }, 'Parse::RecDescent::Production' ),
5662             bless( {
5663             'actcount' => 0,
5664             'dircount' => 0,
5665             'error' => undef,
5666             'items' => [
5667             bless( {
5668             'argcode' => undef,
5669             'implicit' => undef,
5670             'line' => 184,
5671             'lookahead' => 0,
5672             'matchrule' => 0,
5673             'subrule' => 'comment'
5674             }, 'Parse::RecDescent::Subrule' )
5675             ],
5676             'line' => 184,
5677             'number' => 3,
5678             'patcount' => 0,
5679             'strcount' => 0,
5680             'uncommit' => undef
5681             }, 'Parse::RecDescent::Production' ),
5682             bless( {
5683             'actcount' => 0,
5684             'dircount' => 0,
5685             'error' => undef,
5686             'items' => [
5687             bless( {
5688             'argcode' => undef,
5689             'implicit' => undef,
5690             'line' => 184,
5691             'lookahead' => 0,
5692             'matchrule' => 0,
5693             'subrule' => 'unescaped_variable_amp'
5694             }, 'Parse::RecDescent::Subrule' )
5695             ],
5696             'line' => 184,
5697             'number' => 4,
5698             'patcount' => 0,
5699             'strcount' => 0,
5700             'uncommit' => undef
5701             }, 'Parse::RecDescent::Production' ),
5702             bless( {
5703             'actcount' => 0,
5704             'dircount' => 0,
5705             'error' => undef,
5706             'items' => [
5707             bless( {
5708             'argcode' => undef,
5709             'implicit' => undef,
5710             'line' => 184,
5711             'lookahead' => 0,
5712             'matchrule' => 0,
5713             'subrule' => 'unescaped_variable'
5714             }, 'Parse::RecDescent::Subrule' )
5715             ],
5716             'line' => 184,
5717             'number' => 5,
5718             'patcount' => 0,
5719             'strcount' => 0,
5720             'uncommit' => undef
5721             }, 'Parse::RecDescent::Production' ),
5722             bless( {
5723             'actcount' => 0,
5724             'dircount' => 0,
5725             'error' => undef,
5726             'items' => [
5727             bless( {
5728             'argcode' => undef,
5729             'implicit' => undef,
5730             'line' => 184,
5731             'lookahead' => 0,
5732             'matchrule' => 0,
5733             'subrule' => 'variable'
5734             }, 'Parse::RecDescent::Subrule' )
5735             ],
5736             'line' => 184,
5737             'number' => 6,
5738             'patcount' => 0,
5739             'strcount' => 0,
5740             'uncommit' => undef
5741             }, 'Parse::RecDescent::Production' ),
5742             bless( {
5743             'actcount' => 0,
5744             'dircount' => 0,
5745             'error' => undef,
5746             'items' => [
5747             bless( {
5748             'argcode' => undef,
5749             'implicit' => undef,
5750             'line' => 184,
5751             'lookahead' => 0,
5752             'matchrule' => 0,
5753             'subrule' => 'verbatim'
5754             }, 'Parse::RecDescent::Subrule' )
5755             ],
5756             'line' => 184,
5757             'number' => 7,
5758             'patcount' => 0,
5759             'strcount' => 0,
5760             'uncommit' => undef
5761             }, 'Parse::RecDescent::Production' ),
5762             bless( {
5763             'actcount' => 0,
5764             'dircount' => 1,
5765             'error' => 1,
5766             'items' => [
5767             bless( {
5768             'commitonly' => '',
5769             'hashname' => '__DIRECTIVE1__',
5770             'line' => 184,
5771             'lookahead' => 0,
5772             'msg' => ''
5773             }, 'Parse::RecDescent::Error' )
5774             ],
5775             'line' => 184,
5776             'number' => 8,
5777             'patcount' => 0,
5778             'strcount' => 0,
5779             'uncommit' => 0
5780             }, 'Parse::RecDescent::Production' )
5781             ],
5782             'vars' => ''
5783             }, 'Parse::RecDescent::Rule' ),
5784             'close_section' => bless( {
5785             'calls' => [
5786             'opening_tag',
5787             'closing_tag'
5788             ],
5789             'changed' => 0,
5790             'impcount' => 0,
5791             'line' => 80,
5792             'name' => 'close_section',
5793             'opcount' => 0,
5794             'prods' => [
5795             bless( {
5796             'actcount' => 1,
5797             'dircount' => 0,
5798             'error' => undef,
5799             'items' => [
5800             bless( {
5801             'description' => '/\\\\s*/',
5802             'hashname' => '__PATTERN1__',
5803             'ldelim' => '/',
5804             'line' => 80,
5805             'lookahead' => 0,
5806             'mod' => '',
5807             'pattern' => '\\s*',
5808             'rdelim' => '/'
5809             }, 'Parse::RecDescent::Token' ),
5810             bless( {
5811             'argcode' => undef,
5812             'implicit' => undef,
5813             'line' => 80,
5814             'lookahead' => 0,
5815             'matchrule' => 0,
5816             'subrule' => 'opening_tag'
5817             }, 'Parse::RecDescent::Subrule' ),
5818             bless( {
5819             'description' => '\'/\'',
5820             'hashname' => '__STRING1__',
5821             'line' => 80,
5822             'lookahead' => 0,
5823             'pattern' => '/'
5824             }, 'Parse::RecDescent::Literal' ),
5825             bless( {
5826             'description' => '/\\\\s*/',
5827             'hashname' => '__PATTERN2__',
5828             'ldelim' => '/',
5829             'line' => 80,
5830             'lookahead' => 0,
5831             'mod' => '',
5832             'pattern' => '\\s*',
5833             'rdelim' => '/'
5834             }, 'Parse::RecDescent::Token' ),
5835             bless( {
5836             'description' => '\'$arg[0]\'',
5837             'hashname' => '__STRING2__',
5838             'line' => 80,
5839             'lookahead' => 0,
5840             'pattern' => '$arg[0]'
5841             }, 'Parse::RecDescent::InterpLit' ),
5842             bless( {
5843             'description' => '/\\\\s*/',
5844             'hashname' => '__PATTERN3__',
5845             'ldelim' => '/',
5846             'line' => 80,
5847             'lookahead' => 0,
5848             'mod' => '',
5849             'pattern' => '\\s*',
5850             'rdelim' => '/'
5851             }, 'Parse::RecDescent::Token' ),
5852             bless( {
5853             'argcode' => undef,
5854             'implicit' => undef,
5855             'line' => 80,
5856             'lookahead' => 0,
5857             'matchrule' => 0,
5858             'subrule' => 'closing_tag'
5859             }, 'Parse::RecDescent::Subrule' ),
5860             bless( {
5861             'description' => '/\\\\s*/',
5862             'hashname' => '__PATTERN4__',
5863             'ldelim' => '/',
5864             'line' => 80,
5865             'lookahead' => 0,
5866             'mod' => '',
5867             'pattern' => '\\s*',
5868             'rdelim' => '/'
5869             }, 'Parse::RecDescent::Token' ),
5870             bless( {
5871             'code' => '{
5872             my $prev = $thisparser->{prev_is_standalone};
5873             $thisparser->{prev_is_standalone} = 0;
5874             if ( $item[1] =~ /\\n/ or $prev) {
5875             if ( $item[8] =~ /\\n/ or length $text == 0 ) {
5876             $item[1] =~ s/(^|\\n)[ \\t]*?$/$1/;
5877             $item[8] =~ s/^.*?\\n//;
5878             $thisparser->{prev_is_standalone} = 1;
5879             }
5880             }
5881             [
5882             Template::Mustache::Token::Verbatim->new( content => $item[1] ),
5883             Template::Mustache::Token::Verbatim->new( content => $item[8] ),
5884             ]
5885             }',
5886             'hashname' => '__ACTION1__',
5887             'line' => 80,
5888             'lookahead' => 0
5889             }, 'Parse::RecDescent::Action' )
5890             ],
5891             'line' => undef,
5892             'number' => 0,
5893             'patcount' => 4,
5894             'strcount' => 2,
5895             'uncommit' => undef
5896             }, 'Parse::RecDescent::Production' )
5897             ],
5898             'vars' => ''
5899             }, 'Parse::RecDescent::Rule' ),
5900             'closing_tag' => bless( {
5901             'calls' => [],
5902             'changed' => 0,
5903             'impcount' => 0,
5904             'line' => 19,
5905             'name' => 'closing_tag',
5906             'opcount' => 0,
5907             'prods' => [
5908             bless( {
5909             'actcount' => 0,
5910             'dircount' => 0,
5911             'error' => undef,
5912             'items' => [
5913             bless( {
5914             'description' => '\'$thisparser->\\{closing_tag\\}\'',
5915             'hashname' => '__STRING1__',
5916             'line' => 19,
5917             'lookahead' => 0,
5918             'pattern' => '$thisparser->{closing_tag}'
5919             }, 'Parse::RecDescent::InterpLit' )
5920             ],
5921             'line' => undef,
5922             'number' => 0,
5923             'patcount' => 0,
5924             'strcount' => 1,
5925             'uncommit' => undef
5926             }, 'Parse::RecDescent::Production' )
5927             ],
5928             'vars' => ''
5929             }, 'Parse::RecDescent::Rule' ),
5930             'comment' => bless( {
5931             'calls' => [
5932             'standalone_surround'
5933             ],
5934             'changed' => 0,
5935             'impcount' => 0,
5936             'line' => 111,
5937             'name' => 'comment',
5938             'opcount' => 0,
5939             'prods' => [
5940             bless( {
5941             'actcount' => 1,
5942             'dircount' => 0,
5943             'error' => undef,
5944             'items' => [
5945             bless( {
5946             'argcode' => '[$item[0]]',
5947             'implicit' => undef,
5948             'line' => 111,
5949             'lookahead' => 0,
5950             'matchrule' => 0,
5951             'subrule' => 'standalone_surround'
5952             }, 'Parse::RecDescent::Subrule' ),
5953             bless( {
5954             'code' => '{
5955             Template::Mustache::Token::Verbatim->new(
5956             content => $item[1][0] . $item[1][1]
5957             ),
5958             }',
5959             'hashname' => '__ACTION1__',
5960             'line' => 111,
5961             'lookahead' => 0
5962             }, 'Parse::RecDescent::Action' )
5963             ],
5964             'line' => undef,
5965             'number' => 0,
5966             'patcount' => 0,
5967             'strcount' => 0,
5968             'uncommit' => undef
5969             }, 'Parse::RecDescent::Production' )
5970             ],
5971             'vars' => ''
5972             }, 'Parse::RecDescent::Rule' ),
5973             'comment_inner' => bless( {
5974             'calls' => [],
5975             'changed' => 0,
5976             'impcount' => 0,
5977             'line' => 117,
5978             'name' => 'comment_inner',
5979             'opcount' => 0,
5980             'prods' => [
5981             bless( {
5982             'actcount' => 1,
5983             'dircount' => 0,
5984             'error' => undef,
5985             'items' => [
5986             bless( {
5987             'description' => '\'!\'',
5988             'hashname' => '__STRING1__',
5989             'line' => 117,
5990             'lookahead' => 0,
5991             'pattern' => '!'
5992             }, 'Parse::RecDescent::Literal' ),
5993             bless( {
5994             'code' => '{ $thisparser->{closing_tag} }',
5995             'hashname' => '__ACTION1__',
5996             'line' => 117,
5997             'lookahead' => 0
5998             }, 'Parse::RecDescent::Action' ),
5999             bless( {
6000             'description' => '/.*?(?=\\\\Q$item[2]\\\\E)/s',
6001             'hashname' => '__PATTERN1__',
6002             'ldelim' => '/',
6003             'line' => 117,
6004             'lookahead' => 0,
6005             'mod' => 's',
6006             'pattern' => '.*?(?=\\Q$item[2]\\E)',
6007             'rdelim' => '/'
6008             }, 'Parse::RecDescent::Token' )
6009             ],
6010             'line' => undef,
6011             'number' => 0,
6012             'patcount' => 1,
6013             'strcount' => 1,
6014             'uncommit' => undef
6015             }, 'Parse::RecDescent::Production' )
6016             ],
6017             'vars' => ''
6018             }, 'Parse::RecDescent::Rule' ),
6019             'delimiter_change' => bless( {
6020             'calls' => [
6021             'standalone_surround'
6022             ],
6023             'changed' => 0,
6024             'impcount' => 0,
6025             'line' => 25,
6026             'name' => 'delimiter_change',
6027             'opcount' => 0,
6028             'prods' => [
6029             bless( {
6030             'actcount' => 1,
6031             'dircount' => 0,
6032             'error' => undef,
6033             'items' => [
6034             bless( {
6035             'argcode' => '[$item[0]]',
6036             'implicit' => undef,
6037             'line' => 25,
6038             'lookahead' => 0,
6039             'matchrule' => 0,
6040             'subrule' => 'standalone_surround'
6041             }, 'Parse::RecDescent::Subrule' ),
6042             bless( {
6043             'code' => '{
6044             die "needs two delimiters\\n" unless @{ $item[1][2] } == 2;
6045             ( $thisparser->{opening_tag},
6046             $thisparser->{closing_tag} ) = @{ $item[1][2] };
6047              
6048             Template::Mustache::Token::Verbatim->new( content =>
6049             $item[1][0] . $item[1][1]
6050             );
6051             }',
6052             'hashname' => '__ACTION1__',
6053             'line' => 25,
6054             'lookahead' => 0
6055             }, 'Parse::RecDescent::Action' )
6056             ],
6057             'line' => undef,
6058             'number' => 0,
6059             'patcount' => 0,
6060             'strcount' => 0,
6061             'uncommit' => undef
6062             }, 'Parse::RecDescent::Production' )
6063             ],
6064             'vars' => ''
6065             }, 'Parse::RecDescent::Rule' ),
6066             'delimiter_change_inner' => bless( {
6067             'calls' => [],
6068             'changed' => 0,
6069             'impcount' => 0,
6070             'line' => 35,
6071             'name' => 'delimiter_change_inner',
6072             'opcount' => 0,
6073             'prods' => [
6074             bless( {
6075             'actcount' => 2,
6076             'dircount' => 0,
6077             'error' => undef,
6078             'items' => [
6079             bless( {
6080             'description' => '\'=\'',
6081             'hashname' => '__STRING1__',
6082             'line' => 35,
6083             'lookahead' => 0,
6084             'pattern' => '='
6085             }, 'Parse::RecDescent::Literal' ),
6086             bless( {
6087             'code' => '{
6088             $thisparser->{closing_tag}
6089             }',
6090             'hashname' => '__ACTION1__',
6091             'line' => 35,
6092             'lookahead' => 0
6093             }, 'Parse::RecDescent::Action' ),
6094             bless( {
6095             'description' => '/\\\\s*/',
6096             'hashname' => '__PATTERN1__',
6097             'ldelim' => '/',
6098             'line' => 37,
6099             'lookahead' => 0,
6100             'mod' => '',
6101             'pattern' => '\\s*',
6102             'rdelim' => '/'
6103             }, 'Parse::RecDescent::Token' ),
6104             bless( {
6105             'description' => '/.*?(?=\\\\=\\\\Q$item[2]\\\\E)/s',
6106             'hashname' => '__PATTERN2__',
6107             'ldelim' => '/',
6108             'line' => 37,
6109             'lookahead' => 0,
6110             'mod' => 's',
6111             'pattern' => '.*?(?=\\=\\Q$item[2]\\E)',
6112             'rdelim' => '/'
6113             }, 'Parse::RecDescent::Token' ),
6114             bless( {
6115             'description' => '\'=\'',
6116             'hashname' => '__STRING2__',
6117             'line' => 37,
6118             'lookahead' => 0,
6119             'pattern' => '='
6120             }, 'Parse::RecDescent::Literal' ),
6121             bless( {
6122             'code' => '{
6123             [ split \' \', $item[4] ]
6124             }',
6125             'hashname' => '__ACTION2__',
6126             'line' => 37,
6127             'lookahead' => 0
6128             }, 'Parse::RecDescent::Action' )
6129             ],
6130             'line' => undef,
6131             'number' => 0,
6132             'patcount' => 2,
6133             'strcount' => 2,
6134             'uncommit' => undef
6135             }, 'Parse::RecDescent::Production' )
6136             ],
6137             'vars' => ''
6138             }, 'Parse::RecDescent::Rule' ),
6139             'eofile' => bless( {
6140             'calls' => [],
6141             'changed' => 0,
6142             'impcount' => 0,
6143             'line' => 4,
6144             'name' => 'eofile',
6145             'opcount' => 0,
6146             'prods' => [
6147             bless( {
6148             'actcount' => 0,
6149             'dircount' => 0,
6150             'error' => undef,
6151             'items' => [
6152             bless( {
6153             'description' => '/^\\\\Z/',
6154             'hashname' => '__PATTERN1__',
6155             'ldelim' => '/',
6156             'line' => 4,
6157             'lookahead' => 0,
6158             'mod' => '',
6159             'pattern' => '^\\Z',
6160             'rdelim' => '/'
6161             }, 'Parse::RecDescent::Token' )
6162             ],
6163             'line' => undef,
6164             'number' => 0,
6165             'patcount' => 1,
6166             'strcount' => 0,
6167             'uncommit' => undef
6168             }, 'Parse::RecDescent::Production' )
6169             ],
6170             'vars' => ''
6171             }, 'Parse::RecDescent::Rule' ),
6172             'inner_section' => bless( {
6173             'calls' => [
6174             'close_section',
6175             'template_item'
6176             ],
6177             'changed' => 0,
6178             'impcount' => 0,
6179             'line' => 119,
6180             'name' => 'inner_section',
6181             'opcount' => 0,
6182             'prods' => [
6183             bless( {
6184             'actcount' => 0,
6185             'dircount' => 0,
6186             'error' => undef,
6187             'items' => [
6188             bless( {
6189             'argcode' => '[ $arg[0] ]',
6190             'implicit' => undef,
6191             'line' => 119,
6192             'lookahead' => -1,
6193             'matchrule' => 0,
6194             'subrule' => 'close_section'
6195             }, 'Parse::RecDescent::Subrule' ),
6196             bless( {
6197             'argcode' => undef,
6198             'implicit' => undef,
6199             'line' => 119,
6200             'lookahead' => 0,
6201             'matchrule' => 0,
6202             'subrule' => 'template_item'
6203             }, 'Parse::RecDescent::Subrule' )
6204             ],
6205             'line' => undef,
6206             'number' => 0,
6207             'patcount' => 0,
6208             'strcount' => 0,
6209             'uncommit' => undef
6210             }, 'Parse::RecDescent::Production' )
6211             ],
6212             'vars' => ''
6213             }, 'Parse::RecDescent::Rule' ),
6214             'open_section' => bless( {
6215             'calls' => [
6216             'opening_tag',
6217             'closing_tag'
6218             ],
6219             'changed' => 0,
6220             'impcount' => 0,
6221             'line' => 63,
6222             'name' => 'open_section',
6223             'opcount' => 0,
6224             'prods' => [
6225             bless( {
6226             'actcount' => 1,
6227             'dircount' => 0,
6228             'error' => undef,
6229             'items' => [
6230             bless( {
6231             'description' => '/\\\\s*/',
6232             'hashname' => '__PATTERN1__',
6233             'ldelim' => '/',
6234             'line' => 63,
6235             'lookahead' => 0,
6236             'mod' => '',
6237             'pattern' => '\\s*',
6238             'rdelim' => '/'
6239             }, 'Parse::RecDescent::Token' ),
6240             bless( {
6241             'argcode' => undef,
6242             'implicit' => undef,
6243             'line' => 63,
6244             'lookahead' => 0,
6245             'matchrule' => 0,
6246             'subrule' => 'opening_tag'
6247             }, 'Parse::RecDescent::Subrule' ),
6248             bless( {
6249             'description' => '/[#^]/',
6250             'hashname' => '__PATTERN2__',
6251             'ldelim' => '/',
6252             'line' => 63,
6253             'lookahead' => 0,
6254             'mod' => '',
6255             'pattern' => '[#^]',
6256             'rdelim' => '/'
6257             }, 'Parse::RecDescent::Token' ),
6258             bless( {
6259             'description' => '/\\\\s*/',
6260             'hashname' => '__PATTERN3__',
6261             'ldelim' => '/',
6262             'line' => 63,
6263             'lookahead' => 0,
6264             'mod' => '',
6265             'pattern' => '\\s*',
6266             'rdelim' => '/'
6267             }, 'Parse::RecDescent::Token' ),
6268             bless( {
6269             'description' => '/[-\\\\w.]+/',
6270             'hashname' => '__PATTERN4__',
6271             'ldelim' => '/',
6272             'line' => 63,
6273             'lookahead' => 0,
6274             'mod' => '',
6275             'pattern' => '[-\\w.]+',
6276             'rdelim' => '/'
6277             }, 'Parse::RecDescent::Token' ),
6278             bless( {
6279             'description' => '/\\\\s*/',
6280             'hashname' => '__PATTERN5__',
6281             'ldelim' => '/',
6282             'line' => 63,
6283             'lookahead' => 0,
6284             'mod' => '',
6285             'pattern' => '\\s*',
6286             'rdelim' => '/'
6287             }, 'Parse::RecDescent::Token' ),
6288             bless( {
6289             'argcode' => undef,
6290             'implicit' => undef,
6291             'line' => 63,
6292             'lookahead' => 0,
6293             'matchrule' => 0,
6294             'subrule' => 'closing_tag'
6295             }, 'Parse::RecDescent::Subrule' ),
6296             bless( {
6297             'description' => '/\\\\s*/',
6298             'hashname' => '__PATTERN6__',
6299             'ldelim' => '/',
6300             'line' => 63,
6301             'lookahead' => 0,
6302             'mod' => '',
6303             'pattern' => '\\s*',
6304             'rdelim' => '/'
6305             }, 'Parse::RecDescent::Token' ),
6306             bless( {
6307             'code' => '{
6308             my $prev = $thisparser->{prev_is_standalone};
6309             $thisparser->{prev_is_standalone} = 0;
6310             if ( $item[1] =~ /\\n/ or $prev ) {
6311             if ( $item[8] =~ /\\n/ ) {
6312             $item[1] =~ s/(^|\\n)[ \\t]*?$/$1/;
6313             $item[8] =~ s/^.*?\\n//;
6314             $thisparser->{prev_is_standalone} = 1;
6315             }
6316             }
6317              
6318             [ $item[5], $item[3] eq \'^\',
6319             Template::Mustache::Token::Verbatim->new( content => $item[1] ),
6320             Template::Mustache::Token::Verbatim->new( content => $item[8] )
6321             ];
6322             }',
6323             'hashname' => '__ACTION1__',
6324             'line' => 63,
6325             'lookahead' => 0
6326             }, 'Parse::RecDescent::Action' )
6327             ],
6328             'line' => undef,
6329             'number' => 0,
6330             'patcount' => 6,
6331             'strcount' => 0,
6332             'uncommit' => undef
6333             }, 'Parse::RecDescent::Production' )
6334             ],
6335             'vars' => ''
6336             }, 'Parse::RecDescent::Rule' ),
6337             'opening_tag' => bless( {
6338             'calls' => [],
6339             'changed' => 0,
6340             'impcount' => 0,
6341             'line' => 17,
6342             'name' => 'opening_tag',
6343             'opcount' => 0,
6344             'prods' => [
6345             bless( {
6346             'actcount' => 0,
6347             'dircount' => 0,
6348             'error' => undef,
6349             'items' => [
6350             bless( {
6351             'description' => '\'$thisparser->\\{opening_tag\\}\'',
6352             'hashname' => '__STRING1__',
6353             'line' => 17,
6354             'lookahead' => 0,
6355             'pattern' => '$thisparser->{opening_tag}'
6356             }, 'Parse::RecDescent::InterpLit' )
6357             ],
6358             'line' => undef,
6359             'number' => 0,
6360             'patcount' => 0,
6361             'strcount' => 1,
6362             'uncommit' => undef
6363             }, 'Parse::RecDescent::Production' )
6364             ],
6365             'vars' => ''
6366             }, 'Parse::RecDescent::Rule' ),
6367             'partial' => bless( {
6368             'calls' => [
6369             'opening_tag',
6370             'closing_tag'
6371             ],
6372             'changed' => 0,
6373             'impcount' => 0,
6374             'line' => 41,
6375             'name' => 'partial',
6376             'opcount' => 0,
6377             'prods' => [
6378             bless( {
6379             'actcount' => 1,
6380             'dircount' => 0,
6381             'error' => undef,
6382             'items' => [
6383             bless( {
6384             'description' => '/\\\\s*/',
6385             'hashname' => '__PATTERN1__',
6386             'ldelim' => '/',
6387             'line' => 41,
6388             'lookahead' => 0,
6389             'mod' => '',
6390             'pattern' => '\\s*',
6391             'rdelim' => '/'
6392             }, 'Parse::RecDescent::Token' ),
6393             bless( {
6394             'argcode' => undef,
6395             'implicit' => undef,
6396             'line' => 41,
6397             'lookahead' => 0,
6398             'matchrule' => 0,
6399             'subrule' => 'opening_tag'
6400             }, 'Parse::RecDescent::Subrule' ),
6401             bless( {
6402             'description' => '\'>\'',
6403             'hashname' => '__STRING1__',
6404             'line' => 41,
6405             'lookahead' => 0,
6406             'pattern' => '>'
6407             }, 'Parse::RecDescent::Literal' ),
6408             bless( {
6409             'description' => '/\\\\s*/',
6410             'hashname' => '__PATTERN2__',
6411             'ldelim' => '/',
6412             'line' => 41,
6413             'lookahead' => 0,
6414             'mod' => '',
6415             'pattern' => '\\s*',
6416             'rdelim' => '/'
6417             }, 'Parse::RecDescent::Token' ),
6418             bless( {
6419             'description' => '/[\\\\/-\\\\w.]+/',
6420             'hashname' => '__PATTERN3__',
6421             'ldelim' => '/',
6422             'line' => 41,
6423             'lookahead' => 0,
6424             'mod' => '',
6425             'pattern' => '[\\/-\\w.]+',
6426             'rdelim' => '/'
6427             }, 'Parse::RecDescent::Token' ),
6428             bless( {
6429             'description' => '/\\\\s*/',
6430             'hashname' => '__PATTERN4__',
6431             'ldelim' => '/',
6432             'line' => 41,
6433             'lookahead' => 0,
6434             'mod' => '',
6435             'pattern' => '\\s*',
6436             'rdelim' => '/'
6437             }, 'Parse::RecDescent::Token' ),
6438             bless( {
6439             'argcode' => undef,
6440             'implicit' => undef,
6441             'line' => 41,
6442             'lookahead' => 0,
6443             'matchrule' => 0,
6444             'subrule' => 'closing_tag'
6445             }, 'Parse::RecDescent::Subrule' ),
6446             bless( {
6447             'description' => '/\\\\s*/',
6448             'hashname' => '__PATTERN5__',
6449             'ldelim' => '/',
6450             'line' => 41,
6451             'lookahead' => 0,
6452             'mod' => '',
6453             'pattern' => '\\s*',
6454             'rdelim' => '/'
6455             }, 'Parse::RecDescent::Token' ),
6456             bless( {
6457             'code' => '{
6458             my $prev = $thisparser->{prev_is_standalone};
6459             $thisparser->{prev_is_standalone} = 0;
6460             my $indent = \'\';
6461             if ( $item[1] =~ /\\n/ or $prev ) {
6462             if ( $item[8] =~ /\\n/ or length $text == 0) {
6463             $item[1] =~ /(^|\\n)([ \\t]*?)$/;
6464             $indent = $2;
6465             $item[8] =~ s/^.*?\\n//;
6466             $thisparser->{prev_is_standalone} = 1;
6467             }
6468             }
6469             Template::Mustache::Token::Template->new(
6470             items => [
6471             Template::Mustache::Token::Verbatim->new( content => $item[1] ),
6472             Template::Mustache::Token::Partial->new( name => $item[5],
6473             indent => $indent ),
6474             Template::Mustache::Token::Verbatim->new( content => $item[8] ),
6475             ],
6476             )
6477             }',
6478             'hashname' => '__ACTION1__',
6479             'line' => 41,
6480             'lookahead' => 0
6481             }, 'Parse::RecDescent::Action' )
6482             ],
6483             'line' => undef,
6484             'number' => 0,
6485             'patcount' => 5,
6486             'strcount' => 1,
6487             'uncommit' => undef
6488             }, 'Parse::RecDescent::Production' )
6489             ],
6490             'vars' => ''
6491             }, 'Parse::RecDescent::Rule' ),
6492             'section' => bless( {
6493             'calls' => [
6494             'open_section',
6495             'inner_section',
6496             'close_section'
6497             ],
6498             'changed' => 0,
6499             'impcount' => 0,
6500             'line' => 121,
6501             'name' => 'section',
6502             'opcount' => 0,
6503             'prods' => [
6504             bless( {
6505             'actcount' => 3,
6506             'dircount' => 0,
6507             'error' => undef,
6508             'items' => [
6509             bless( {
6510             'argcode' => undef,
6511             'implicit' => undef,
6512             'line' => 121,
6513             'lookahead' => 0,
6514             'matchrule' => 0,
6515             'subrule' => 'open_section'
6516             }, 'Parse::RecDescent::Subrule' ),
6517             bless( {
6518             'code' => '{$thisoffset}',
6519             'hashname' => '__ACTION1__',
6520             'line' => 121,
6521             'lookahead' => 0
6522             }, 'Parse::RecDescent::Action' ),
6523             bless( {
6524             'argcode' => '[ $item[1][0] ]',
6525             'expected' => undef,
6526             'line' => 121,
6527             'lookahead' => 0,
6528             'matchrule' => 0,
6529             'max' => 100000000,
6530             'min' => 0,
6531             'repspec' => 's?',
6532             'subrule' => 'inner_section'
6533             }, 'Parse::RecDescent::Repetition' ),
6534             bless( {
6535             'code' => '{$thisoffset
6536             - $item[2]
6537             }',
6538             'hashname' => '__ACTION2__',
6539             'line' => 121,
6540             'lookahead' => 0
6541             }, 'Parse::RecDescent::Action' ),
6542             bless( {
6543             'argcode' => '[ $item[1][0] ]',
6544             'implicit' => undef,
6545             'line' => 123,
6546             'lookahead' => 0,
6547             'matchrule' => 0,
6548             'subrule' => 'close_section'
6549             }, 'Parse::RecDescent::Subrule' ),
6550             bless( {
6551             'code' => '{
6552             my $raw = substr( $thisparser->{fulltext}, $item[2], $item[4] );
6553             Template::Mustache::Token::Template->new( items => [
6554             $item[1]->[2],
6555             Template::Mustache::Token::Section->new(
6556             delimiters => [ map { $thisparser->{$_} } qw/ opening_tag closing_tag / ],
6557             variable => $item[1][0],
6558             inverse => $item[1][1],
6559             raw => $raw,
6560             template => Template::Mustache::Token::Template->new(
6561             items => [
6562             $item[1][3], @{$item[3]}, $item[5][0] ],
6563             )
6564             ),
6565             $item[5][1]
6566             ]
6567             );
6568             }',
6569             'hashname' => '__ACTION3__',
6570             'line' => 123,
6571             'lookahead' => 0
6572             }, 'Parse::RecDescent::Action' )
6573             ],
6574             'line' => undef,
6575             'number' => 0,
6576             'patcount' => 0,
6577             'strcount' => 0,
6578             'uncommit' => undef
6579             }, 'Parse::RecDescent::Production' )
6580             ],
6581             'vars' => ''
6582             }, 'Parse::RecDescent::Rule' ),
6583             'standalone_surround' => bless( {
6584             'calls' => [
6585             'opening_tag',
6586             'closing_tag'
6587             ],
6588             'changed' => 0,
6589             'impcount' => 0,
6590             'line' => 96,
6591             'name' => 'standalone_surround',
6592             'opcount' => 0,
6593             'prods' => [
6594             bless( {
6595             'actcount' => 1,
6596             'dircount' => 0,
6597             'error' => undef,
6598             'items' => [
6599             bless( {
6600             'description' => '/\\\\s*/',
6601             'hashname' => '__PATTERN1__',
6602             'ldelim' => '/',
6603             'line' => 96,
6604             'lookahead' => 0,
6605             'mod' => '',
6606             'pattern' => '\\s*',
6607             'rdelim' => '/'
6608             }, 'Parse::RecDescent::Token' ),
6609             bless( {
6610             'argcode' => undef,
6611             'implicit' => undef,
6612             'line' => 96,
6613             'lookahead' => 0,
6614             'matchrule' => 0,
6615             'subrule' => 'opening_tag'
6616             }, 'Parse::RecDescent::Subrule' ),
6617             bless( {
6618             'description' => '/\\\\s*/',
6619             'hashname' => '__PATTERN2__',
6620             'ldelim' => '/',
6621             'line' => 96,
6622             'lookahead' => 0,
6623             'mod' => '',
6624             'pattern' => '\\s*',
6625             'rdelim' => '/'
6626             }, 'Parse::RecDescent::Token' ),
6627             bless( {
6628             'argcode' => undef,
6629             'implicit' => undef,
6630             'line' => 96,
6631             'lookahead' => 0,
6632             'matchrule' => 1,
6633             'subrule' => '$arg[0]_inner'
6634             }, 'Parse::RecDescent::Subrule' ),
6635             bless( {
6636             'argcode' => undef,
6637             'implicit' => undef,
6638             'line' => 96,
6639             'lookahead' => 0,
6640             'matchrule' => 0,
6641             'subrule' => 'closing_tag'
6642             }, 'Parse::RecDescent::Subrule' ),
6643             bless( {
6644             'description' => '/\\\\s*/',
6645             'hashname' => '__PATTERN3__',
6646             'ldelim' => '/',
6647             'line' => 96,
6648             'lookahead' => 0,
6649             'mod' => '',
6650             'pattern' => '\\s*',
6651             'rdelim' => '/'
6652             }, 'Parse::RecDescent::Token' ),
6653             bless( {
6654             'code' => '{
6655             my $prev = $thisparser->{prev_is_standalone};
6656             $thisparser->{prev_is_standalone} = 0;
6657              
6658             if ( $item[1] =~ /\\n/ or $prev) {
6659             if ( $item[6] =~ /\\n/ or length $text == 0) {
6660             $item[1] =~ s/(\\r?\\n?)\\s*?$/$1/;
6661             $item[6] =~ s/^.*?\\n//;
6662             $thisparser->{prev_is_standalone} = 1;
6663             }
6664             }
6665              
6666             [ @item[1,6,4] ],
6667             }',
6668             'hashname' => '__ACTION1__',
6669             'line' => 96,
6670             'lookahead' => 0
6671             }, 'Parse::RecDescent::Action' )
6672             ],
6673             'line' => undef,
6674             'number' => 0,
6675             'patcount' => 3,
6676             'strcount' => 0,
6677             'uncommit' => undef
6678             }, 'Parse::RecDescent::Production' )
6679             ],
6680             'vars' => ''
6681             }, 'Parse::RecDescent::Rule' ),
6682             'template' => bless( {
6683             'calls' => [
6684             'template_item',
6685             'eofile'
6686             ],
6687             'changed' => 0,
6688             'impcount' => 0,
6689             'line' => 6,
6690             'name' => 'template',
6691             'opcount' => 0,
6692             'prods' => [
6693             bless( {
6694             'actcount' => 2,
6695             'dircount' => 0,
6696             'error' => undef,
6697             'items' => [
6698             bless( {
6699             'code' => '{ my ($otag,$ctag) = @arg ? @arg : ( qw/ {{ }} / );
6700             $thisparser->{opening_tag} = $otag;
6701             $thisparser->{closing_tag} = $ctag;
6702             $thisparser->{prev_is_standalone} = 1;
6703             1;
6704             }',
6705             'hashname' => '__ACTION1__',
6706             'line' => 6,
6707             'lookahead' => 0
6708             }, 'Parse::RecDescent::Action' ),
6709             bless( {
6710             'argcode' => undef,
6711             'expected' => undef,
6712             'line' => 11,
6713             'lookahead' => 0,
6714             'matchrule' => 0,
6715             'max' => 100000000,
6716             'min' => 0,
6717             'repspec' => 's?',
6718             'subrule' => 'template_item'
6719             }, 'Parse::RecDescent::Repetition' ),
6720             bless( {
6721             'argcode' => undef,
6722             'implicit' => undef,
6723             'line' => 11,
6724             'lookahead' => 0,
6725             'matchrule' => 0,
6726             'subrule' => 'eofile'
6727             }, 'Parse::RecDescent::Subrule' ),
6728             bless( {
6729             'code' => '{
6730             Template::Mustache::Token::Template->new(
6731             items => $item[2]
6732             );
6733             }',
6734             'hashname' => '__ACTION2__',
6735             'line' => 11,
6736             'lookahead' => 0
6737             }, 'Parse::RecDescent::Action' )
6738             ],
6739             'line' => undef,
6740             'number' => 0,
6741             'patcount' => 0,
6742             'strcount' => 0,
6743             'uncommit' => undef
6744             }, 'Parse::RecDescent::Production' ),
6745             bless( {
6746             'actcount' => 0,
6747             'dircount' => 1,
6748             'error' => 1,
6749             'items' => [
6750             bless( {
6751             'commitonly' => '',
6752             'hashname' => '__DIRECTIVE1__',
6753             'line' => 15,
6754             'lookahead' => 0,
6755             'msg' => ''
6756             }, 'Parse::RecDescent::Error' )
6757             ],
6758             'line' => 15,
6759             'number' => 1,
6760             'patcount' => 0,
6761             'strcount' => 0,
6762             'uncommit' => 0
6763             }, 'Parse::RecDescent::Production' )
6764             ],
6765             'vars' => ''
6766             }, 'Parse::RecDescent::Rule' ),
6767             'template_item' => bless( {
6768             'calls' => [
6769             '_alternation_1_of_production_1_of_rule_template_item'
6770             ],
6771             'changed' => 0,
6772             'impcount' => 1,
6773             'line' => 21,
6774             'name' => 'template_item',
6775             'opcount' => 0,
6776             'prods' => [
6777             bless( {
6778             'actcount' => 1,
6779             'dircount' => 0,
6780             'error' => undef,
6781             'items' => [
6782             bless( {
6783             'argcode' => undef,
6784             'implicit' => 'partial, or section, or delimiter_change, or comment, or unescaped_variable_amp, or unescaped_variable, or variable, or verbatim',
6785             'line' => 21,
6786             'lookahead' => 0,
6787             'matchrule' => 0,
6788             'subrule' => '_alternation_1_of_production_1_of_rule_template_item'
6789             }, 'Parse::RecDescent::Subrule' ),
6790             bless( {
6791             'code' => '{
6792             $item[1]
6793             }',
6794             'hashname' => '__ACTION1__',
6795             'line' => 21,
6796             'lookahead' => 0
6797             }, 'Parse::RecDescent::Action' )
6798             ],
6799             'line' => undef,
6800             'number' => 0,
6801             'patcount' => 0,
6802             'strcount' => 0,
6803             'uncommit' => undef
6804             }, 'Parse::RecDescent::Production' )
6805             ],
6806             'vars' => ''
6807             }, 'Parse::RecDescent::Rule' ),
6808             'unescaped_variable' => bless( {
6809             'calls' => [
6810             'opening_tag',
6811             'variable_name',
6812             'closing_tag'
6813             ],
6814             'changed' => 0,
6815             'impcount' => 0,
6816             'line' => 142,
6817             'name' => 'unescaped_variable',
6818             'opcount' => 0,
6819             'prods' => [
6820             bless( {
6821             'actcount' => 1,
6822             'dircount' => 0,
6823             'error' => undef,
6824             'items' => [
6825             bless( {
6826             'description' => '/\\\\s*/',
6827             'hashname' => '__PATTERN1__',
6828             'ldelim' => '/',
6829             'line' => 142,
6830             'lookahead' => 0,
6831             'mod' => '',
6832             'pattern' => '\\s*',
6833             'rdelim' => '/'
6834             }, 'Parse::RecDescent::Token' ),
6835             bless( {
6836             'argcode' => undef,
6837             'implicit' => undef,
6838             'line' => 142,
6839             'lookahead' => 0,
6840             'matchrule' => 0,
6841             'subrule' => 'opening_tag'
6842             }, 'Parse::RecDescent::Subrule' ),
6843             bless( {
6844             'description' => '\'\\{\'',
6845             'hashname' => '__STRING1__',
6846             'line' => 142,
6847             'lookahead' => 0,
6848             'pattern' => '{'
6849             }, 'Parse::RecDescent::Literal' ),
6850             bless( {
6851             'description' => '/\\\\s*/',
6852             'hashname' => '__PATTERN2__',
6853             'ldelim' => '/',
6854             'line' => 142,
6855             'lookahead' => 0,
6856             'mod' => '',
6857             'pattern' => '\\s*',
6858             'rdelim' => '/'
6859             }, 'Parse::RecDescent::Token' ),
6860             bless( {
6861             'argcode' => undef,
6862             'implicit' => undef,
6863             'line' => 142,
6864             'lookahead' => 0,
6865             'matchrule' => 0,
6866             'subrule' => 'variable_name'
6867             }, 'Parse::RecDescent::Subrule' ),
6868             bless( {
6869             'description' => '/\\\\s*/',
6870             'hashname' => '__PATTERN3__',
6871             'ldelim' => '/',
6872             'line' => 142,
6873             'lookahead' => 0,
6874             'mod' => '',
6875             'pattern' => '\\s*',
6876             'rdelim' => '/'
6877             }, 'Parse::RecDescent::Token' ),
6878             bless( {
6879             'description' => '\'\\}\'',
6880             'hashname' => '__STRING2__',
6881             'line' => 142,
6882             'lookahead' => 0,
6883             'pattern' => '}'
6884             }, 'Parse::RecDescent::Literal' ),
6885             bless( {
6886             'argcode' => undef,
6887             'implicit' => undef,
6888             'line' => 142,
6889             'lookahead' => 0,
6890             'matchrule' => 0,
6891             'subrule' => 'closing_tag'
6892             }, 'Parse::RecDescent::Subrule' ),
6893             bless( {
6894             'code' => '{
6895             Template::Mustache::Token::Template->new(
6896             items => [
6897             Template::Mustache::Token::Verbatim->new( content => $item[1] ),
6898             Template::Mustache::Token::Variable->new(
6899             name => $item{variable_name},
6900             escape => 0,
6901             ),
6902             ]
6903             );
6904             }',
6905             'hashname' => '__ACTION1__',
6906             'line' => 142,
6907             'lookahead' => 0
6908             }, 'Parse::RecDescent::Action' )
6909             ],
6910             'line' => undef,
6911             'number' => 0,
6912             'patcount' => 3,
6913             'strcount' => 2,
6914             'uncommit' => undef
6915             }, 'Parse::RecDescent::Production' )
6916             ],
6917             'vars' => ''
6918             }, 'Parse::RecDescent::Rule' ),
6919             'unescaped_variable_amp' => bless( {
6920             'calls' => [
6921             'opening_tag',
6922             'variable_name',
6923             'closing_tag'
6924             ],
6925             'changed' => 0,
6926             'impcount' => 0,
6927             'line' => 154,
6928             'name' => 'unescaped_variable_amp',
6929             'opcount' => 0,
6930             'prods' => [
6931             bless( {
6932             'actcount' => 1,
6933             'dircount' => 0,
6934             'error' => undef,
6935             'items' => [
6936             bless( {
6937             'description' => '/\\\\s*/',
6938             'hashname' => '__PATTERN1__',
6939             'ldelim' => '/',
6940             'line' => 154,
6941             'lookahead' => 0,
6942             'mod' => '',
6943             'pattern' => '\\s*',
6944             'rdelim' => '/'
6945             }, 'Parse::RecDescent::Token' ),
6946             bless( {
6947             'argcode' => undef,
6948             'implicit' => undef,
6949             'line' => 154,
6950             'lookahead' => 0,
6951             'matchrule' => 0,
6952             'subrule' => 'opening_tag'
6953             }, 'Parse::RecDescent::Subrule' ),
6954             bless( {
6955             'description' => '\'&\'',
6956             'hashname' => '__STRING1__',
6957             'line' => 154,
6958             'lookahead' => 0,
6959             'pattern' => '&'
6960             }, 'Parse::RecDescent::Literal' ),
6961             bless( {
6962             'description' => '/\\\\s*/',
6963             'hashname' => '__PATTERN2__',
6964             'ldelim' => '/',
6965             'line' => 154,
6966             'lookahead' => 0,
6967             'mod' => '',
6968             'pattern' => '\\s*',
6969             'rdelim' => '/'
6970             }, 'Parse::RecDescent::Token' ),
6971             bless( {
6972             'argcode' => undef,
6973             'implicit' => undef,
6974             'line' => 154,
6975             'lookahead' => 0,
6976             'matchrule' => 0,
6977             'subrule' => 'variable_name'
6978             }, 'Parse::RecDescent::Subrule' ),
6979             bless( {
6980             'description' => '/\\\\s*/',
6981             'hashname' => '__PATTERN3__',
6982             'ldelim' => '/',
6983             'line' => 154,
6984             'lookahead' => 0,
6985             'mod' => '',
6986             'pattern' => '\\s*',
6987             'rdelim' => '/'
6988             }, 'Parse::RecDescent::Token' ),
6989             bless( {
6990             'argcode' => undef,
6991             'implicit' => undef,
6992             'line' => 154,
6993             'lookahead' => 0,
6994             'matchrule' => 0,
6995             'subrule' => 'closing_tag'
6996             }, 'Parse::RecDescent::Subrule' ),
6997             bless( {
6998             'code' => '{
6999             Template::Mustache::Token::Template->new(
7000             items => [
7001             Template::Mustache::Token::Verbatim->new( content => $item[1] ),
7002             Template::Mustache::Token::Variable->new(
7003             name => $item{variable_name},
7004             escape => 0,
7005             ),
7006             ]
7007             );
7008             }',
7009             'hashname' => '__ACTION1__',
7010             'line' => 154,
7011             'lookahead' => 0
7012             }, 'Parse::RecDescent::Action' )
7013             ],
7014             'line' => undef,
7015             'number' => 0,
7016             'patcount' => 3,
7017             'strcount' => 1,
7018             'uncommit' => undef
7019             }, 'Parse::RecDescent::Production' )
7020             ],
7021             'vars' => ''
7022             }, 'Parse::RecDescent::Rule' ),
7023             'variable' => bless( {
7024             'calls' => [
7025             'opening_tag',
7026             'variable_name',
7027             'closing_tag'
7028             ],
7029             'changed' => 0,
7030             'impcount' => 0,
7031             'line' => 167,
7032             'name' => 'variable',
7033             'opcount' => 0,
7034             'prods' => [
7035             bless( {
7036             'actcount' => 1,
7037             'dircount' => 0,
7038             'error' => undef,
7039             'items' => [
7040             bless( {
7041             'description' => '/\\\\s*/',
7042             'hashname' => '__PATTERN1__',
7043             'ldelim' => '/',
7044             'line' => 167,
7045             'lookahead' => 0,
7046             'mod' => '',
7047             'pattern' => '\\s*',
7048             'rdelim' => '/'
7049             }, 'Parse::RecDescent::Token' ),
7050             bless( {
7051             'argcode' => undef,
7052             'implicit' => undef,
7053             'line' => 167,
7054             'lookahead' => 0,
7055             'matchrule' => 0,
7056             'subrule' => 'opening_tag'
7057             }, 'Parse::RecDescent::Subrule' ),
7058             bless( {
7059             'description' => '/\\\\s*/',
7060             'hashname' => '__PATTERN2__',
7061             'ldelim' => '/',
7062             'line' => 167,
7063             'lookahead' => 0,
7064             'mod' => '',
7065             'pattern' => '\\s*',
7066             'rdelim' => '/'
7067             }, 'Parse::RecDescent::Token' ),
7068             bless( {
7069             'argcode' => undef,
7070             'implicit' => undef,
7071             'line' => 167,
7072             'lookahead' => 0,
7073             'matchrule' => 0,
7074             'subrule' => 'variable_name'
7075             }, 'Parse::RecDescent::Subrule' ),
7076             bless( {
7077             'description' => '/\\\\s*/',
7078             'hashname' => '__PATTERN3__',
7079             'ldelim' => '/',
7080             'line' => 167,
7081             'lookahead' => 0,
7082             'mod' => '',
7083             'pattern' => '\\s*',
7084             'rdelim' => '/'
7085             }, 'Parse::RecDescent::Token' ),
7086             bless( {
7087             'argcode' => undef,
7088             'implicit' => undef,
7089             'line' => 167,
7090             'lookahead' => 0,
7091             'matchrule' => 0,
7092             'subrule' => 'closing_tag'
7093             }, 'Parse::RecDescent::Subrule' ),
7094             bless( {
7095             'code' => '{
7096             $thisparser->{prev_is_standalone} = 0;
7097             Template::Mustache::Token::Template->new(
7098             items => [
7099             Template::Mustache::Token::Verbatim->new( content => $item[1] ),
7100             Template::Mustache::Token::Variable->new( name => $item{variable_name} ),
7101             ]
7102             );
7103             }',
7104             'hashname' => '__ACTION1__',
7105             'line' => 167,
7106             'lookahead' => 0
7107             }, 'Parse::RecDescent::Action' )
7108             ],
7109             'line' => undef,
7110             'number' => 0,
7111             'patcount' => 3,
7112             'strcount' => 0,
7113             'uncommit' => undef
7114             }, 'Parse::RecDescent::Production' )
7115             ],
7116             'vars' => ''
7117             }, 'Parse::RecDescent::Rule' ),
7118             'variable_name' => bless( {
7119             'calls' => [],
7120             'changed' => 0,
7121             'impcount' => 0,
7122             'line' => 177,
7123             'name' => 'variable_name',
7124             'opcount' => 0,
7125             'prods' => [
7126             bless( {
7127             'actcount' => 0,
7128             'dircount' => 0,
7129             'error' => undef,
7130             'items' => [
7131             bless( {
7132             'description' => '/[-\\\\w.]+/',
7133             'hashname' => '__PATTERN1__',
7134             'ldelim' => '/',
7135             'line' => 177,
7136             'lookahead' => 0,
7137             'mod' => '',
7138             'pattern' => '[-\\w.]+',
7139             'rdelim' => '/'
7140             }, 'Parse::RecDescent::Token' )
7141             ],
7142             'line' => undef,
7143             'number' => 0,
7144             'patcount' => 1,
7145             'strcount' => 0,
7146             'uncommit' => undef
7147             }, 'Parse::RecDescent::Production' )
7148             ],
7149             'vars' => ''
7150             }, 'Parse::RecDescent::Rule' ),
7151             'verbatim' => bless( {
7152             'calls' => [],
7153             'changed' => 0,
7154             'impcount' => 0,
7155             'line' => 179,
7156             'name' => 'verbatim',
7157             'opcount' => 0,
7158             'prods' => [
7159             bless( {
7160             'actcount' => 2,
7161             'dircount' => 0,
7162             'error' => undef,
7163             'items' => [
7164             bless( {
7165             'code' => '{ $thisparser->{opening_tag} }',
7166             'hashname' => '__ACTION1__',
7167             'line' => 179,
7168             'lookahead' => 0
7169             }, 'Parse::RecDescent::Action' ),
7170             bless( {
7171             'description' => '/^\\\\s*\\\\S*?(?=\\\\Q$item[1]\\\\E|\\\\s|$)/',
7172             'hashname' => '__PATTERN1__',
7173             'ldelim' => '/',
7174             'line' => 179,
7175             'lookahead' => 0,
7176             'mod' => '',
7177             'pattern' => '^\\s*\\S*?(?=\\Q$item[1]\\E|\\s|$)',
7178             'rdelim' => '/'
7179             }, 'Parse::RecDescent::Token' ),
7180             bless( {
7181             'code' => '{
7182             $thisparser->{prev_is_standalone} = 0;
7183             Template::Mustache::Token::Verbatim->new( content => $item[2] );
7184             }',
7185             'hashname' => '__ACTION2__',
7186             'line' => 179,
7187             'lookahead' => 0
7188             }, 'Parse::RecDescent::Action' )
7189             ],
7190             'line' => undef,
7191             'number' => 0,
7192             'patcount' => 1,
7193             'strcount' => 0,
7194             'uncommit' => undef
7195             }, 'Parse::RecDescent::Production' )
7196             ],
7197             'vars' => ''
7198             }, 'Parse::RecDescent::Rule' )
7199             },
7200             'skip' => 'qr//',
7201             'startcode' => ''
7202             }, 'Parse::RecDescent' );
7203             }
7204              
7205             __END__
7206              
7207             =pod
7208              
7209             =encoding UTF-8
7210              
7211             =head1 NAME
7212              
7213             Template::Mustache::Parser
7214              
7215             =head1 VERSION
7216              
7217             version 1.3.4
7218              
7219             =head1 AUTHORS
7220              
7221             =over 4
7222              
7223             =item *
7224              
7225             Pieter van de Bruggen <pvande@cpan.org>
7226              
7227             =item *
7228              
7229             Yanick Champoux <yanick@cpan.org>
7230              
7231             =item *
7232              
7233             Ricardo Signes <rjbs@cpan.org>
7234              
7235             =back
7236              
7237             =head1 COPYRIGHT AND LICENSE
7238              
7239             This software is copyright (c) 2021, 2019, 2018, 2017, 2016, 2015, 2011 by Pieter van de Bruggen.
7240              
7241             This is free software; you can redistribute it and/or modify it under
7242             the same terms as the Perl 5 programming language system itself.
7243              
7244             =cut