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