Branch Coverage

blib/lib/HTML/Blitz/RuleSet.pm
Criterion Covered Total %
branch 252 372 67.7


line true false branch
38 0 251 if @_ < 1
0 251 if @_ > 1
47 0 1 if @_ < 2
0 1 if @_ > 2
51 0 4 if @_ < 2
0 4 if @_ > 2
55 0 5 if @_ < 2
0 5 if @_ > 2
59 0 13 if @_ < 2
0 13 if @_ > 2
60 11 2 if ($p1->{'type'} eq ":AT-P-IMMEDIATE")
61 2 9 if ($p2->{'type'} eq ":AT-P-IMMEDIATE")
62 2 0 length $p1->{'value'} <= length $p2->{'value'} ? :
66 1 1 if ($p2->{'type'} eq ":AT-P-IMMEDIATE")
69 0 1 unless $p1->{'type'} eq ":AT-P-VARIABLE" and $p2->{'type'} eq ":AT-P-VARIABLE"
74 0 4 if @_ < 2
0 4 if @_ > 2
75 0 4 unless $t1->{'type'} eq ":AT-P-TRANSFORM" and $t2->{'type'} eq ":AT-P-TRANSFORM"
81 0 8 if @_ < 1
0 8 if @_ > 1
87 0 18 if @_ < 2
0 18 if @_ > 2
88 2 16 if ($p1->{'type'} eq ":AT-P-FRAGMENT")
89 0 2 if ($p2->{'type'} eq ":AT-P-FRAGMENT" or $p2->{'type'} eq ":AT-P-TRANSFORM")
92 0 0 unless $p2->{'type'} eq ":AT-P-IMMEDIATE" or $p2->{'type'} eq ":AT-P-VARIABLE" or $p2->{'type'} eq ":AT-P-VARHTML"
97 3 13 if ($p2->{'type'} eq ":AT-P-FRAGMENT")
98 3 0 if ($p1->{'type'} eq ":AT-P-TRANSFORM")
101 0 0 unless $p1->{'type'} eq ":AT-P-IMMEDIATE" or $p1->{'type'} eq ":AT-P-VARIABLE" or $p1->{'type'} eq ":AT-P-VARHTML"
106 0 13 if ($p1->{'type'} eq ":AT-P-VARHTML")
107 0 0 if ($p2->{'type'} eq ":AT-P-VARHTML" or $p2->{'type'} eq ":AT-P-TRANSFORM")
110 0 0 unless $p2->{'type'} eq ":AT-P-IMMEDIATE" or $p2->{'type'} eq ":AT-P-VARIABLE"
114 0 13 if ($p2->{'type'} eq ":AT-P-VARHTML")
115 0 0 if ($p1->{'type'} eq ":AT-P-TRANSFORM")
118 0 0 unless $p1->{'type'} eq ":AT-P-IMMEDIATE" or $p1->{'type'} eq ":AT-P-VARIABLE"
123 5 8 if ($p1->{'type'} eq ":AT-P-TRANSFORM")
124 4 1 if ($p2->{'type'} eq ":AT-P-TRANSFORM")
127 0 1 unless $p2->{'type'} eq ":AT-P-IMMEDIATE" or $p2->{'type'} eq ":AT-P-VARIABLE"
132 0 8 if ($p2->{'type'} eq ":AT-P-TRANSFORM")
133 0 0 unless $p1->{'type'} eq ":AT-P-IMMEDIATE" or $p1->{'type'} eq ":AT-P-VARIABLE"
141 0 79 if @_ < 2
0 79 if @_ > 2
142 58 21 unless defined $p2
143 3 18 unless defined $p1
147 0 35 if @_ < 2
0 35 if @_ > 2
148 20 15 if $aa1->{'type'} eq ":AT-A-REMOVE-ATTR"
149 0 15 if $aa2->{'type'} eq ":AT-A-REMOVE-ATTR"
150 15 0 if ($aa1->{'type'} eq ":AT-A-SET-ATTR")
151 5 10 if ($aa2->{'type'} eq ":AT-A-SET-ATTR")
154 0 10 unless $aa2->{'type'} eq ":AT-A-MODIFY-ATTR"
158 0 0 if ($aa2->{'type'} eq ":AT-A-SET-ATTR")
159 0 0 unless $aa1->{'type'} eq ":AT-A-MODIFY-ATTR"
163 0 0 unless $aa1->{'type'} eq ":AT-A-MODIFY-ATTR" and $aa2->{'type'} eq ":AT-A-MODIFY-ATTR"
168 0 79 if @_ < 2
0 79 if @_ > 2
169 15 64 if ($asa1->{'type'} eq ":AT-AS-REPLACE-ATTRS")
170 15 0 if ($asa2->{'type'} eq ":AT-AS-REPLACE-ATTRS")
174 2 0 keys %{$$asa1{'content'};} <= keys %{$$asa2{'content'};} ? :
3 2 &all(sub { $_->{'type'} eq ':AT-P-IMMEDIATE'; } , values %{$$asa2{'content'};}) ? :
10 5 &all(sub { $_->{'type'} eq ':AT-P-IMMEDIATE'; } , values %{$$asa1{'content'};}) ? :
177 0 0 unless $asa2->{'type'} eq ":AT-AS-MODIFY-ATTRS"
181 0 64 if ($asa2->{'type'} eq ":AT-AS-REPLACE-ATTRS")
182 0 0 unless $asa1->{'type'} eq ":AT-AS-MODIFY-ATTRS"
186 0 64 unless $asa1->{'type'} eq ":AT-AS-MODIFY-ATTRS" and $asa2->{'type'} eq ":AT-AS-MODIFY-ATTRS"
191 35 8 exists $content{$k} ? :
196 0 0 if @_ < 2
0 0 if @_ > 2
197 0 0 if (defined $act1 and defined $act2) { }
202 0 79 if @_ < 2
0 79 if @_ > 2
203 0 79 if ($act1->{'type'} eq ":AT-REMOVE-IF")
204 0 0 if ($act2->{'type'} eq ":AT-REMOVE-IF")
209 0 79 if ($act2->{'type'} eq ":AT-REMOVE-IF")
212 0 79 if ($act1->{'type'} eq ":AT-REPLACE-OUTER")
213 0 0 if ($act2->{'type'} eq ":AT-REPLACE-OUTER")
218 0 79 if ($act2->{'type'} eq ":AT-REPLACE-OUTER")
221 0 79 if ($act1->{'type'} eq ":AT-REPEAT-OUTER")
224 0 79 if ($act2->{'type'} eq ":AT-REPEAT-OUTER")
227 0 79 unless $act1->{'type'} eq ":AT-REPLACE-INNER" and $act2->{'type'} eq ":AT-REPLACE-INNER"
241 0 267 if @_ < 2
0 267 if @_ > 2
242 5 262 if ($action->{'type'} eq ':AT-REMOVE-IF') { }
7 255 elsif ($action->{'type'} eq ':AT-REPLACE-OUTER') { }
1 254 elsif ($action->{'type'} eq ':AT-REPEAT-OUTER') { }
250 2 5 if ($param->{'type'} eq ':AT-P-VARIABLE' or $param->{'type'} eq ':AT-P-VARHTML') { }
2 3 elsif ($param->{'type'} eq ':AT-P-TRANSFORM') { }
252 2 0 unless (defined $value->[0])
256 1 1 if (@{$param->{'dynamic'};})
261 1 0 unless (defined $action->{'var'}[0])
265 0 254 unless $action->{'type'} eq ":AT-REPLACE-INNER"
269 0 31 if @_ < 1
0 31 if @_ > 1
270 0 31 if (defined $var->[0]) { }
278 6 248 if ($asa->{'type'} eq ':AT-AS-REPLACE-ATTRS') { }
284 3 9 if ($value->{'type'} eq ':AT-P-VARIABLE' and not defined $value->{'value'}[0]) { }
292 0 248 unless $asa->{'type'} eq ":AT-AS-MODIFY-ATTRS"
299 7 37 if ($value->{'type'} eq ':AT-A-SET-ATTR' and $value->{'param'}{'type'} eq ':AT-P-VARIABLE' and not defined $value->{'param'}{'value'}[0]) { }
5 32 elsif ($value->{'type'} eq ':AT-A-MODIFY-ATTR' and @{+(my $param = $value->{'param'})->{'dynamic'}}) { }
303 0 5 unless $param->{'type'} eq ":AT-P-TRANSFORM"
321 205 49 if (defined(my $param = $action->{'content'}))
322 36 169 if ($param->{'type'} eq ':AT-P-VARIABLE' || $param->{'type'} eq ':AT-P-VARHTML' and not defined $param->{'value'}[0]) { }
23 146 elsif ($param->{'type'} eq ':AT-P-TRANSFORM' and @{$param->{'dynamic'};}) { }
338 3 251 if (@{$replacement{"repeat"};} = @{$action->{'repeat'};})
340 3 0 unless (defined $$rfirst->{'var'}[0])
346 76 178 if $did_replace
351 0 249 if @_ < 3
358 0 243 if @_ < 2
0 243 if @_ > 2 and (@_ - 2) % 2
0 243 if keys %{__rest}
363 259 273 if ($token->{'type'} eq ':TT-TAG-CLOSE') { }
32 241 elsif ($token->{'type'} eq ':TT-TAG-OPEN') { }
49 384 elsif ($collect_content and $token->{'type'} eq ':TT-TEXT') { }
364 243 16 if $depth == 0
367 16 16 unless $token->{'is_self_closing'}
372 49 194 $collect_content ? :
375 0 266 if @_ < 2
0 266 if @_ > 2
379 0 276 if @_ < 3
0 276 if @_ > 3
388 10 4856 if ($token->{'type'} eq ':TT-DOCTYPE') { }
42 4814 elsif ($token->{'type'} eq ':TT-COMMENT') { }
2175 2639 elsif ($token->{'type'} eq ':TT-TEXT') { }
1093 1546 elsif ($token->{'type'} eq ':TT-TAG-CLOSE') { }
1546 0 elsif ($token->{'type'} eq ':TT-TAG-OPEN') { }
389 9 1 if ($self->{'keep_doctype'})
393 34 8 if ($token->{'content'} =~ /$self->{'keep_comments_re'}/u)
397 3 2172 if ($token->{'content'} =~ /$self->{'dummy_marker_re'}/u)
401 28 2144 if ($cur_tag eq 'script') { }
66 2078 elsif ($cur_tag eq 'style') { }
414 5 1541 if (defined $action and $action->{'type'} eq ":AT-REMOVE-IF")
420 0 5 if @_ > 1
1 4 if @_ < 1
426 1188 358 unless (defined $action)
429 1 1187 if (@bad_attrs)
433 135 1052 if $token->{'is_self_closing'}
437 7 351 if ($action->{'type'} eq ":AT-REPLACE-OUTER")
440 2 5 if ($param->{'type'} eq ':AT-P-IMMEDIATE') { }
1 4 elsif ($param->{'type'} eq ':AT-P-VARIABLE') { }
1 3 elsif ($param->{'type'} eq ':AT-P-FRAGMENT') { }
1 2 elsif ($param->{'type'} eq ':AT-P-VARHTML') { }
449 0 2 unless $param->{'type'} eq ":AT-P-TRANSFORM"
451 2 0 unless ($token->{'is_void'})
452 0 2 $token->{'is_self_closing'} ? :
455 1 1 if (@{$param->{'dynamic'};}) { }
463 5 0 unless $skipped or $token->{'is_self_closing'}
480 1 0 defined $inplace ? :
484 0 1 if @_ > 1
0 1 if @_ < 1
490 0 351 unless $action->{'type'} eq ":AT-REPLACE-INNER"
496 16 335 if ($attrset->{'type'} eq ':AT-AS-REPLACE-ATTRS') { }
500 33 4 if ($param->{'type'} eq ':AT-P-IMMEDIATE') { }
503 0 4 unless $param->{'type'} eq ":AT-P-VARIABLE"
509 0 335 unless $attrset->{'type'} eq ":AT-AS-MODIFY-ATTRS"
524 14 85 if ($attr_action->{'type'} eq ':AT-A-REMOVE-ATTR') { }
39 46 elsif ($attr_action->{'type'} eq ':AT-A-SET-ATTR') { }
529 0 46 unless $attr_action->{'type'} eq ":AT-A-MODIFY-ATTR"
532 0 46 unless $param->{'type'} eq ":AT-P-TRANSFORM"
535 5 41 if (@{$param->{'dynamic'};}) { }
6 35 elsif (not defined $value) { }
548 333 15 if ($param->{'type'} eq ':AT-P-IMMEDIATE') { }
10 5 elsif ($param->{'type'} eq ':AT-P-VARIABLE') { }
549 1 332 if ($param->{'pristine'} and $param->{'value'} =~ /$self->{'dummy_marker_re'}/u)
556 0 5 unless $param->{'type'} eq ":AT-P-TRANSFORM"
562 1 334 if @bad_attrs
580 247 103 if (defined(my $param = $action->{'content'})) { }
42 61 elsif ($token->{'is_self_closing'}) { }
582 0 247 if $token->{'is_void'}
585 157 90 if ($param->{'type'} eq ':AT-P-IMMEDIATE') { }
31 59 elsif ($param->{'type'} eq ':AT-P-VARIABLE') { }
8 51 elsif ($param->{'type'} eq ':AT-P-FRAGMENT') { }
4 47 elsif ($param->{'type'} eq ':AT-P-VARHTML') { }
586 21 136 if ($token->{'name'} eq 'script') { }
1 135 elsif ($token->{'name'} eq 'style') { }
594 18 13 if ($token->{'name'} eq 'script') { }
1 12 elsif ($token->{'name'} eq 'style') { }
602 2 5 if $token->{'name'} eq "script" or $token->{'name'} eq "style" or $token->{'name'} eq "title"
606 2 1 if $token->{'name'} eq "script" or $token->{'name'} eq "style" or $token->{'name'} eq "title"
610 0 47 unless $param->{'type'} eq ":AT-P-TRANSFORM"
612 0 47 $token->{'is_self_closing'} ? :
615 25 22 if (@{$param->{'dynamic'};}) { }
616 18 7 if ($token->{'name'} eq 'script') { }
1 6 elsif ($token->{'name'} eq 'style') { }
624 18 4 if ($token->{'name'} eq 'script') { }
1 3 elsif ($token->{'name'} eq 'style') { }
634 189 0 unless $skipped or $token->{'is_self_closing'}
639 0 42 unless $token->{'is_void'}