File Coverage

blib/lib/XML/Liberal/Remedy/XHTMLEmptyTag.pm
Criterion Covered Total %
statement 6 12 50.0
branch 0 4 0.0
condition n/a
subroutine 2 3 66.6
pod 0 1 0.0
total 8 20 40.0


line stmt bran cond sub pod time code
1             package XML::Liberal::Remedy::XHTMLEmptyTag;
2 2     2   2153 use strict;
  2         6  
  2         115  
3              
4 2     2   11 use HTML::Tagset ();
  2         3  
  2         390  
5              
6             my @ELEMENTS = sort keys %HTML::Tagset::emptyElement;
7             my $ERROR_RX = do {
8             my $pat = join '|', @ELEMENTS;
9             qr/^parser error : Opening and ending tag mismatch: (?i:$pat)/;
10             };
11             my $TAG_RX = do {
12             my $pat = join '|', @ELEMENTS;
13             qr{(<((?i:$pat)) (?: \s[^>]*)? ) (? (?! \s*))}x;
14             };
15              
16             # optimized to fix all errors in one apply() call
17             sub apply {
18 0     0 0   my $class = shift;
19 0           my($driver, $error, $xml_ref) = @_;
20              
21 0 0         return if $error->message !~ $ERROR_RX;
22              
23 0 0         return 1 if $$xml_ref =~ s{$TAG_RX}{$1 /}g;
24              
25 0           Carp::carp("Can't find XHTML empty-element tags, error was: ",
26             $error->summary);
27 0           return 0;
28             }
29              
30             1;