File Coverage

blib/lib/HTML/HTML5/Parser/Charset/UniversalCharDet.pm
Criterion Covered Total %
statement 16 23 69.5
branch 3 12 25.0
condition 1 3 33.3
subroutine 5 5 100.0
pod 0 1 0.0
total 25 44 56.8


line stmt bran cond sub pod time code
1             package HTML::HTML5::Parser::Charset::UniversalCharDet;
2              
3             ## skip Test::Tabs
4 9     9   72 use strict;
  9         33  
  9         336  
5 9     9   60 use warnings;
  9         20  
  9         265  
6 9     9   3890 use IO::HTML ();
  9         15379  
  9         2190  
7              
8             our $VERSION='0.991';
9             our $DEBUG;
10              
11             # this really shouldn't work, but for some reason it does...
12             sub _detect {
13 708 50   708   3265 return +{ encoding => 'UTF-8' } if !utf8::is_utf8($_[0]); # huh?
14 0         0 open my $fh, '<:raw', \$_[0];
15 0         0 my $e = IO::HTML::sniff_encoding($fh => 'string');
16 0 0       0 return +{ encoding => $e } if defined $e;
17 0         0 return +{};
18             }
19              
20             sub detect_byte_string ($$) {
21 708     708 0 1406 my $de;
22             eval {
23 708         1744 $de = _detect $_[1];
24 708         1955 1;
25 708 50       1348 } or do {
26 0 0       0 warn $@ unless $DEBUG;
27 0 0       0 die $@ if $DEBUG;
28             };
29 708 50 33     10610 if (defined $de and defined $de->{encoding}) {
30 708         2958 return lc $de->{encoding};
31             } else {
32 0           return undef;
33             }
34             } # detect_byte_string
35              
36             #Copyright 2007-2011 Wakaba
37             #Copyright 2009-2012 Toby Inkster
38             #
39             #This library is free software; you can redistribute it
40             #and/or modify it under the same terms as Perl itself.
41              
42             1;