| 161 |
my $el; |
my $el; |
| 162 |
my $cssom; |
my $cssom; |
| 163 |
my $manifest; |
my $manifest; |
| 164 |
|
my $idl; |
| 165 |
my @subdoc; |
my @subdoc; |
| 166 |
|
|
| 167 |
if ($input->{media_type} eq 'text/html') { |
if ($input->{media_type} eq 'text/html') { |
| 196 |
$manifest = print_syntax_error_manifest_section ($input, $result); |
$manifest = print_syntax_error_manifest_section ($input, $result); |
| 197 |
print_source_string_section ($input, \($input->{s}), |
print_source_string_section ($input, \($input->{s}), |
| 198 |
'utf-8'); |
'utf-8'); |
| 199 |
|
} elsif ($input->{media_type} eq 'text/x-webidl') { ## TODO: type |
| 200 |
|
$idl = print_syntax_error_webidl_section ($input, $result); |
| 201 |
|
print_source_string_section ($input, \($input->{s}), |
| 202 |
|
'utf-8'); ## TODO: charset |
| 203 |
} else { |
} else { |
| 204 |
## TODO: Change HTTP status code?? |
## TODO: Change HTTP status code?? |
| 205 |
print_result_unknown_type_section ($input, $result); |
print_result_unknown_type_section ($input, $result); |
| 232 |
} elsif (defined $manifest) { |
} elsif (defined $manifest) { |
| 233 |
print_structure_dump_manifest_section ($input, $manifest); |
print_structure_dump_manifest_section ($input, $manifest); |
| 234 |
print_structure_error_manifest_section ($input, $manifest, $result); |
print_structure_error_manifest_section ($input, $manifest, $result); |
| 235 |
|
} elsif (defined $idl) { |
| 236 |
|
print_structure_dump_webidl_section ($input, $idl); |
| 237 |
|
print_structure_error_webidl_section ($input, $idl, $result); |
| 238 |
} |
} |
| 239 |
|
|
| 240 |
my $id_prefix = 0; |
my $id_prefix = 0; |
| 681 |
return $manifest; |
return $manifest; |
| 682 |
} # print_syntax_error_manifest_section |
} # print_syntax_error_manifest_section |
| 683 |
|
|
| 684 |
|
sub print_syntax_error_webidl_section ($$) { |
| 685 |
|
my ($input, $result) = @_; |
| 686 |
|
|
| 687 |
|
require Whatpm::WebIDL; |
| 688 |
|
|
| 689 |
|
print STDOUT qq[ |
| 690 |
|
<div id="$input->{id_prefix}parse-errors" class="section"> |
| 691 |
|
<h2>Parse Errors</h2> |
| 692 |
|
|
| 693 |
|
<dl id="$input->{id_prefix}parse-errors-list">]; |
| 694 |
|
push @nav, ['#parse-errors' => 'Parse Error'] unless $input->{nested}; |
| 695 |
|
|
| 696 |
|
my $onerror = sub { |
| 697 |
|
my (%opt) = @_; |
| 698 |
|
my ($type, $cls, $msg) = get_text ($opt{type}, $opt{level}); |
| 699 |
|
print STDOUT qq[<dt class="$cls">], get_error_label ($input, \%opt), |
| 700 |
|
qq[</dt>]; |
| 701 |
|
$type =~ tr/ /-/; |
| 702 |
|
$type =~ s/\|/%7C/g; |
| 703 |
|
$msg .= qq[ [<a href="../error-description#@{[htescape ($type)]}">Description</a>]]; |
| 704 |
|
print STDOUT qq[<dd class="$cls">], get_error_level_label (\%opt); |
| 705 |
|
print STDOUT qq[$msg</dd>\n]; |
| 706 |
|
|
| 707 |
|
add_error ('syntax', \%opt => $result); |
| 708 |
|
}; |
| 709 |
|
|
| 710 |
|
require Encode; |
| 711 |
|
my $s = $input->{is_char_string} ? $input->{s} : Encode::decode ($input->{charset} || 'utf-8', $input->{s}); ## TODO: charset |
| 712 |
|
my $parser = Whatpm::WebIDL::Parser->new; |
| 713 |
|
my $idl = $parser->parse_char_string ($input->{s}, $onerror); |
| 714 |
|
|
| 715 |
|
print STDOUT qq[</dl></div>]; |
| 716 |
|
|
| 717 |
|
return $idl; |
| 718 |
|
} # print_syntax_error_webidl_section |
| 719 |
|
|
| 720 |
sub print_source_string_section ($$$) { |
sub print_source_string_section ($$$) { |
| 721 |
my $input = shift; |
my $input = shift; |
| 722 |
my $s; |
my $s; |
| 931 |
print STDOUT qq[</dl></div>]; |
print STDOUT qq[</dl></div>]; |
| 932 |
} # print_structure_dump_manifest_section |
} # print_structure_dump_manifest_section |
| 933 |
|
|
| 934 |
|
sub print_structure_dump_webidl_section ($$) { |
| 935 |
|
my ($input, $idl) = @_; |
| 936 |
|
|
| 937 |
|
print STDOUT qq[ |
| 938 |
|
<div id="$input->{id_prefix}dump-webidl" class="section"> |
| 939 |
|
<h2>WebIDL</h2> |
| 940 |
|
]; |
| 941 |
|
push @nav, [qq[#$input->{id_prefix}dump-webidl] => 'WebIDL'] |
| 942 |
|
unless $input->{nested}; |
| 943 |
|
|
| 944 |
|
print STDOUT "<pre>"; |
| 945 |
|
print STDOUT htescape ($idl->idl_text); |
| 946 |
|
print STDOUT "</pre>"; |
| 947 |
|
|
| 948 |
|
print STDOUT qq[</div>]; |
| 949 |
|
} # print_structure_dump_webidl_section |
| 950 |
|
|
| 951 |
sub print_structure_error_dom_section ($$$$$) { |
sub print_structure_error_dom_section ($$$$$) { |
| 952 |
my ($input, $doc, $el, $result, $onsubdoc) = @_; |
my ($input, $doc, $el, $result, $onsubdoc) = @_; |
| 953 |
|
|
| 1015 |
print STDOUT qq[</div>]; |
print STDOUT qq[</div>]; |
| 1016 |
} # print_structure_error_manifest_section |
} # print_structure_error_manifest_section |
| 1017 |
|
|
| 1018 |
|
sub print_structure_error_webidl_section ($$$) { |
| 1019 |
|
my ($input, $idl, $result) = @_; |
| 1020 |
|
|
| 1021 |
|
print STDOUT qq[<div id="$input->{id_prefix}document-errors" class="section"> |
| 1022 |
|
<h2>Document Errors</h2> |
| 1023 |
|
|
| 1024 |
|
<dl>]; |
| 1025 |
|
push @nav, [qq[#$input->{id_prefix}document-errors] => 'Document Error'] |
| 1026 |
|
unless $input->{nested}; |
| 1027 |
|
|
| 1028 |
|
## TODO: |
| 1029 |
|
|
| 1030 |
|
print STDOUT qq[</div>]; |
| 1031 |
|
} # print_structure_error_webidl_section |
| 1032 |
|
|
| 1033 |
sub print_table_section ($$) { |
sub print_table_section ($$) { |
| 1034 |
my ($input, $tables) = @_; |
my ($input, $tables) = @_; |
| 1035 |
|
|