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 |
|
|