/[suikacvs]/test/html-webhacc/WebHACC/Language/XML.pm
Suika

Contents of /test/html-webhacc/WebHACC/Language/XML.pm

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.1 - (show annotations) (download)
Sun Jul 20 14:58:24 2008 UTC (16 years, 11 months ago) by wakaba
Branch: MAIN
++ ChangeLog	20 Jul 2008 14:58:20 -0000
2008-07-20  Wakaba  <wakaba@suika.fam.cx>

	* cc.cgi: Modularized.

	* WebHACC/: New directory.

1 package WebHACC::Language::XML;
2 use strict;
3 require WebHACC::Language::DOM;
4 push our @ISA, 'WebHACC::Language::DOM';
5
6 sub new ($) {
7 return bless {}, shift;
8 } # new
9
10 sub generate_syntax_error_section ($) {
11 my $self = shift;
12
13 require Message::DOM::XMLParserTemp;
14
15 my $out = $self->output;
16 $out->start_section (id => 'parse-errors', title => 'Parse Errors');
17 $out->start_tag ('dl', class => 'parse-errors-list');
18
19 my $input = $self->input;
20 my $result = $self->result;
21
22 my $onerror = sub {
23 my $err = shift;
24 my $line = $err->location->line_number;
25 $out->start_tag ('dt');
26 $out->xref (qq[Line $line], target => 'line-' . $line);
27 $out->html (' column ' . $err->location->column_number . '<dd>');
28 $out->text ($err->text);
29
30 add_error ('syntax', {type => $err->text,
31 level => [
32 $err->SEVERITY_FATAL_ERROR => 'm',
33 $err->SEVERITY_ERROR => 'm',
34 $err->SEVERITY_WARNING => 's',
35 ]->[$err->severity]} => $result);
36
37 return 1;
38 };
39
40 my $t = \($input->{s});
41 if ($input->{is_char_string}) {
42 require Encode;
43 $t = \(Encode::encode ('utf8', $$t));
44 $input->{charset} = 'utf-8';
45 }
46
47 open my $fh, '<', $t;
48 my $doc = Message::DOM::XMLParserTemp->parse_byte_stream
49 ($fh => $dom, $onerror, charset => $input->{charset});
50 $doc->manakai_charset ($input->{official_charset})
51 if defined $input->{official_charset};
52
53 $doc->document_uri ($input->{uri});
54 $doc->manakai_entity_base_uri ($input->{base_uri});
55
56 $out->end_tag ('dl');
57 $out->end_section;
58 } # generate_syntax_error_section
59
60 sub source_charset ($) {
61 my $self = shift;
62 return $self->input->{charset} || ($self->{structure}->owner_document || $self->{structure})->input_encoding;
63 ## TODO: Can we always use input_encoding?
64 } # source_charset
65
66 1;

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24