--- test/html-webhacc/cc.cgi 2008/05/18 03:47:56 1.51 +++ test/html-webhacc/cc.cgi 2008/07/18 14:44:16 1.52 @@ -161,6 +161,7 @@ my $el; my $cssom; my $manifest; + my $idl; my @subdoc; if ($input->{media_type} eq 'text/html') { @@ -195,6 +196,10 @@ $manifest = print_syntax_error_manifest_section ($input, $result); print_source_string_section ($input, \($input->{s}), 'utf-8'); + } elsif ($input->{media_type} eq 'text/x-webidl') { ## TODO: type + $idl = print_syntax_error_webidl_section ($input, $result); + print_source_string_section ($input, \($input->{s}), + 'utf-8'); ## TODO: charset } else { ## TODO: Change HTTP status code?? print_result_unknown_type_section ($input, $result); @@ -227,6 +232,9 @@ } elsif (defined $manifest) { print_structure_dump_manifest_section ($input, $manifest); print_structure_error_manifest_section ($input, $manifest, $result); + } elsif (defined $idl) { + print_structure_dump_webidl_section ($input, $idl); + print_structure_error_webidl_section ($input, $idl, $result); } my $id_prefix = 0; @@ -673,6 +681,42 @@ return $manifest; } # print_syntax_error_manifest_section +sub print_syntax_error_webidl_section ($$) { + my ($input, $result) = @_; + + require Whatpm::WebIDL; + + print STDOUT qq[ +
+

Parse Errors

+ +
]; + push @nav, ['#parse-errors' => 'Parse Error'] unless $input->{nested}; + + my $onerror = sub { + my (%opt) = @_; + my ($type, $cls, $msg) = get_text ($opt{type}, $opt{level}); + print STDOUT qq[
], get_error_label ($input, \%opt), + qq[
]; + $type =~ tr/ /-/; + $type =~ s/\|/%7C/g; + $msg .= qq[ [Description]]; + print STDOUT qq[
], get_error_level_label (\%opt); + print STDOUT qq[$msg
\n]; + + add_error ('syntax', \%opt => $result); + }; + + require Encode; + my $s = $input->{is_char_string} ? $input->{s} : Encode::decode ($input->{charset} || 'utf-8', $input->{s}); ## TODO: charset + my $parser = Whatpm::WebIDL::Parser->new; + my $idl = $parser->parse_char_string ($input->{s}, $onerror); + + print STDOUT qq[
]; + + return $idl; +} # print_syntax_error_webidl_section + sub print_source_string_section ($$$) { my $input = shift; my $s; @@ -887,6 +931,23 @@ print STDOUT qq[]; } # print_structure_dump_manifest_section +sub print_structure_dump_webidl_section ($$) { + my ($input, $idl) = @_; + + print STDOUT qq[ +
+

WebIDL

+]; + push @nav, [qq[#$input->{id_prefix}dump-webidl] => 'WebIDL'] + unless $input->{nested}; + + print STDOUT "
";
+  print STDOUT htescape ($idl->idl_text);
+  print STDOUT "
"; + + print STDOUT qq[
]; +} # print_structure_dump_webidl_section + sub print_structure_error_dom_section ($$$$$) { my ($input, $doc, $el, $result, $onsubdoc) = @_; @@ -954,6 +1015,21 @@ print STDOUT qq[]; } # print_structure_error_manifest_section +sub print_structure_error_webidl_section ($$$) { + my ($input, $idl, $result) = @_; + + print STDOUT qq[
+

Document Errors

+ +
]; + push @nav, [qq[#$input->{id_prefix}document-errors] => 'Document Error'] + unless $input->{nested}; + +## TODO: + + print STDOUT qq[
]; +} # print_structure_error_webidl_section + sub print_table_section ($$) { my ($input, $tables) = @_; @@ -1641,4 +1717,4 @@ =cut -## $Date: 2008/05/18 03:47:56 $ +## $Date: 2008/07/18 14:44:16 $