use
5.008001;
our
$VERSION
=
'0.992'
;
sub
new
{
my
(
$class
,
%args
) =
@_
;
bless
\
%args
,
$class
;
}
sub
level
{
my
$self
=
shift
;
return
{
m
=>
'MUST'
,
s
=>
'SHOULD'
,
w
=>
'WARN'
,
i
=>
'INFO'
,
u
=>
undef
,
}->{
$self
->{level}} ||
undef
;
}
sub
layer
{
my
$self
=
shift
;
return
$self
->{layer} ||
undef
;
}
sub
type
{
my
$self
=
shift
;
return
$self
->{type}||
undef
;
}
sub
tag_name
{
my
$self
=
shift
;
return
undef
unless
$self
->{token} &&
exists
$self
->{token}{tag_name};
return
$self
->{token}{tag_name};
}
sub
source_line
{
my
$self
=
shift
;
if
(
wantarray
)
{
return
(
$self
->{line},
$self
->{column});
}
else
{
return
$self
->{line};
}
}
sub
to_string
{
my
$self
=
shift
;
my
$msg
=
$self
->type;
my
$level
=
$self
->level;
my
$tag
=
$self
->tag_name;
my
(
$l
,
$c
) =
$self
->source_line;
my
@details
;
push
@details
,
sprintf
(
'complicance: %s'
,
$level
)
if
defined
$level
;
push
@details
,
sprintf
(
'line: %d'
,
$l
)
if
defined
$l
;
push
@details
,
sprintf
(
'column: %d'
,
$c
)
if
defined
$c
;
push
@details
,
sprintf
(
'tag: %s'
,
$tag
)
if
defined
$tag
;
if
(
@details
)
{
$msg
.=
" ["
;
$msg
.=
join
'; '
,
@details
;
$msg
.=
"]"
;
}
return
$msg
;
}
1;
=head1 NAME
HTML::HTML5::Parser::Error - an error that occurred during parsing
=head1 DESCRIPTION
The C<error_handler> and C<errors> methods of C<HTML::HTML5::Parser> generate
C<HTML::HTML5::Parser::Error> objects.
C<HTML::HTML5::Parser::Error> overloads stringification, so can be printed,
matched against regular expressions, etc.
Note that L<HTML::HTML5::Parser> is not a validation tool, and there are many
classes of error that it does not care about, so will not raise.
=head2 Constructor
=over
=item C<< new(
level
=>
$level
,
type
=>
$type
,
token
=>
$token
, ...) >>
Constructs a new C<HTML::HTML5::Parser::Error> object.
=back
=head2 Methods
=over
=item C<level>
Returns the level of error. (
'MUST'
,
'SHOULD'
,
'WARN'
,
'INFO'
or
undef
.)
=item C<layer>
Returns the parsing layer involved, often
undef
. e.g.
'encode'
.
=item C<type>
Returns the type of error as a string.
=item C<tag_name>
Returns the tag name (
if
any).
=item C<source_line>
(
$line
,
$col
) =
$error
->source_line();
$line
=
$error
->source_line;
In
scalar
context, C<source_line> returns the line number of the
source code that triggered the error.
In list context, returns a line/column pair. (Tab characters count as
one column, not eight.)
=item C<to_string>
Returns a friendly error string.
=back
=head1 SEE ALSO
L<HTML::HTML5::Parser>.
=head1 AUTHOR
Toby Inkster, E<lt>tobyink
@cpan
.orgE<gt>
=head1 COPYRIGHT AND LICENSE
Copyright (C) 2011-2012 by Toby Inkster
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=head1 DISCLAIMER OF WARRANTIES
THIS PACKAGE IS PROVIDED
"AS IS"
AND WITHOUT ANY EXPRESS OR IMPLIED
WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.