package HTML::HTML5::Parser::Error; use 5.008001; use strict; use warnings; our $VERSION = '0.992'; use overload '""' => \&to_string; 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 and C methods of C generate C objects. C overloads stringification, so can be printed, matched against regular expressions, etc. Note that L 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 object. =back =head2 Methods =over =item C Returns the level of error. ('MUST', 'SHOULD', 'WARN', 'INFO' or undef.) =item C Returns the parsing layer involved, often undef. e.g. 'encode'. =item C Returns the type of error as a string. =item C Returns the tag name (if any). =item C ($line, $col) = $error->source_line(); $line = $error->source_line; In scalar context, C 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 Returns a friendly error string. =back =head1 SEE ALSO L. =head1 AUTHOR Toby Inkster, Etobyink@cpan.orgE =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.