/[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 - (hide 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 wakaba 1.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