| 22 |
$p->init; |
$p->init; |
| 23 |
$p->{onerror} = sub { |
$p->{onerror} = sub { |
| 24 |
my (%opt) = @_; |
my (%opt) = @_; |
| 25 |
my ($type, $cls, $msg) = get_text ($opt{type}, $opt{level}); |
if (not defined $opt{value} and defined $opt{token}) { |
| 26 |
if ($opt{token}) { |
$opt{value} = Whatpm::CSS::Tokenizer->serialize_token ($opt{token}); |
|
$out->start_tag ('dt', class => $cls); |
|
|
$out->xref (qq[Line $opt{token}->{line}], |
|
|
target => 'line-' . $opt{token}->{line}); |
|
|
$out->text (qq[column $opt{token}->{column}]); |
|
|
} else { |
|
|
$out->start_tag ('dt', class => $cls); |
|
|
$out->text (q[Unknown location]); |
|
|
} |
|
|
if (defined $opt{value}) { |
|
|
$out->html (q[ (<code>]); |
|
|
$out->text ($opt{token}); |
|
|
$out->html (q[</code>)]); |
|
|
} elsif (defined $opt{token}) { |
|
|
$out->html (q[ (<code>]); |
|
|
$out->text (Whatpm::CSS::Tokenizer->serialize_token ($opt{token})); |
|
|
$out->html (q[</code>)]); |
|
| 27 |
} |
} |
| 28 |
$type =~ tr/ /-/; |
$result->add_error (%opt, layer => 'syntax'); |
|
$type =~ s/\|/%7C/g; |
|
|
$out->html (qq[<dd class="$cls">] . get_error_level_label (\%opt)); |
|
|
$out->html ($msg); |
|
|
$out->text (' ['); |
|
|
$out->link ('Description', url => q<../error-description#> . $type); |
|
|
$out->text (']'); |
|
|
|
|
|
add_error ('syntax', \%opt => $result); |
|
| 29 |
}; |
}; |
| 30 |
$p->{href} = $input->{uri}; |
$p->{href} = $input->{uri}; |
| 31 |
$p->{base_uri} = $input->{base_uri}; |
$p->{base_uri} = $input->{base_uri}; |
| 76 |
} # generate_structure_dump_section |
} # generate_structure_dump_section |
| 77 |
|
|
| 78 |
sub generate_structure_error_section ($) { |
sub generate_structure_error_section ($) { |
| 79 |
## TODO: CSSOM validation |
my $self = shift; |
| 80 |
my $result = shift->result; |
|
| 81 |
add_error ('structure', {level => 'u'} => $result); |
my $out = $self->output; |
| 82 |
|
|
| 83 |
|
$out->start_section (id => 'document-errors', title => 'Document Errors'); |
| 84 |
|
$out->start_tag ('dl', class => 'document-errors-list'); |
| 85 |
|
|
| 86 |
|
$self->result->add_error (level => 'u', |
| 87 |
|
layer => 'structure', |
| 88 |
|
type => 'CSSOM validation not supported'); |
| 89 |
|
|
| 90 |
|
$out->end_tag ('dl'); |
| 91 |
|
$out->end_section; |
| 92 |
} # generate_structure_error_section |
} # generate_structure_error_section |
| 93 |
|
|
| 94 |
sub get_css_parser () { |
sub get_css_parser () { |