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

Diff of /test/html-webhacc/WebHACC/Language/DOM.pm

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.3 by wakaba, Mon Jul 21 08:39:12 2008 UTC revision 1.6 by wakaba, Mon Jul 21 12:56:34 2008 UTC
# Line 82  sub generate_structure_dump_section ($) Line 82  sub generate_structure_dump_section ($)
82        $out->end_tag ('code');        $out->end_tag ('code');
83      } elsif ($nt == $child->DOCUMENT_NODE) {      } elsif ($nt == $child->DOCUMENT_NODE) {
84        $out->start_tag ('li', id => $node_id, class => 'tree-document');        $out->start_tag ('li', id => $node_id, class => 'tree-document');
85        $out->text ('Document');        $out->nl_text ('Document');
86    
87        $out->start_tag ('ul', class => 'attributes');        $out->start_tag ('ul', class => 'attributes');
88          
89        my $cp = $child->manakai_charset;        my $cp = $child->manakai_charset;
90        if (defined $cp) {        if (defined $cp) {
91          $out->html (qq[<li><code>charset</code> parameter = <code>]);          $out->start_tag ('li');
92          $out->text ($cp);          $out->nl_text ('manakaiCharset');
93          $out->html ('</code>');          $out->text (' = ');
94            $out->code ($cp);
95        }        }
96        $out->html (qq[<li><code>inputEncoding</code> = ]);        
97          $out->start_tag ('li');
98          $out->nl_text ('inputEncoding');
99          $out->text (' = ');
100        my $ie = $child->input_encoding;        my $ie = $child->input_encoding;
101        if (defined $ie) {        if (defined $ie) {
102          $out->code ($ie);          $out->code ($ie);
103          if ($child->manakai_has_bom) {          if ($child->manakai_has_bom) {
104            $out->html (qq[ (with <code class=charname><abbr>BOM</abbr></code>)]);            $out->nl_text ('... with BOM');
105          }          }
106        } else {        } else {
107          $out->html (qq[(<code>null</code>)]);          $out->html (qq[(<code>null</code>)]);
108        }        }
109        $out->html (qq[<li>@{[scalar main::get_text ('manakaiIsHTML:'.($child->manakai_is_html?1:0))]}</li>]);  
110        $out->html (qq[<li>@{[scalar main::get_text ('manakaiCompatMode:'.$child->manakai_compat_mode)]}</li>]);        $out->start_tag ('li');
111          $out->nl_text ('manakaiIsHTML:'.($child->manakai_is_html?1:0));
112    
113          $out->start_tag ('li');
114          $out->nl_text ('manakaiCompatMode:'.$child->manakai_compat_mode);
115    
116        unless ($child->manakai_is_html) {        unless ($child->manakai_is_html) {
117          $out->html (qq[<li>XML version = ]);          $out->start_tag ('li');
118            $out->nl_text ('xmlVersion');
119            $out->text (' = ');
120          $out->code ($child->xml_version);          $out->code ($child->xml_version);
121            
122            $out->start_tag ('li');
123            $out->nl_text ('xmlEncoding');
124            $out->text (' = ');
125          if (defined $child->xml_encoding) {          if (defined $child->xml_encoding) {
           $out->html (qq[<li>XML encoding = ]);  
126            $out->code ($child->xml_encoding);            $out->code ($child->xml_encoding);
127          } else {          } else {
128            $out->html (qq[<li>XML encoding = (null)</li>]);            $out->html ('(<code>null</code>)');
129          }          }
130          $out->html (qq[<li>XML standalone = @{[$child->xml_standalone ? 'true' : 'false']}</li>]);  
131            $out->start_tag ('li');
132            $out->nl_text ('xmlStandalone');
133            $out->text (' = ');
134            $out->code ($child->xml_standalone ? 'true' : 'false');
135        }        }
136    
137        $out->end_tag ('ul');        $out->end_tag ('ul');
138          
139        if ($child->has_child_nodes) {        if ($child->has_child_nodes) {
140          $out->start_tag ('ol', class => 'children');          $out->start_tag ('ol', class => 'children');
141          unshift @node, @{$child->child_nodes}, '</ol></li>';          unshift @node, @{$child->child_nodes}, '</ol></li>';
# Line 184  sub generate_structure_error_section ($) Line 206  sub generate_structure_error_section ($)
206  sub generate_additional_sections ($) {  sub generate_additional_sections ($) {
207    my $self = shift;    my $self = shift;
208    $self->SUPER::generate_additional_sections;    $self->SUPER::generate_additional_sections;
209    
210    $self->generate_table_section;    $self->generate_table_section;
211    
212      $self->generate_listing_section (
213          key => 'id', id => 'identifiers',
214          short_title => 'IDs', title => 'Identifiers',
215      );
216      $self->generate_listing_section (
217          key => 'term', id => 'terms',
218          short_title => 'Terms', title => 'Terms',
219      );
220      $self->generate_listing_section (
221          key => 'class', id => 'classes',
222          short_title => 'Classes', title => 'Classes',
223      );
224    
225      $self->generate_rdf_section;
226  } # generate_additional_sections  } # generate_additional_sections
227    
228  sub generate_table_section ($) {  sub generate_table_section ($) {
# Line 194  sub generate_table_section ($) { Line 232  sub generate_table_section ($) {
232    return unless @$tables;    return unless @$tables;
233    
234    my $out = $self->output;    my $out = $self->output;
235    $out->start_section (id => 'tables', title => 'Tables');    $out->start_section (id => 'tables', short_title => 'Tables',
236                           title => 'Tables Section');
237    
238    $out->html (q[<!--[if IE]><script type="text/javascript" src="../excanvas.js"></script><![endif]-->    $out->html (q[<!--[if IE]><script type="text/javascript" src="../excanvas.js"></script><![endif]-->
239  <script src="../table-script.js" type="text/javascript"></script>  <script src="../table-script.js" type="text/javascript"></script>
# Line 207  sub generate_table_section ($) { Line 246  sub generate_table_section ($) {
246    my $i = 0;    my $i = 0;
247    for my $table (@$tables) {    for my $table (@$tables) {
248      $i++;      $i++;
249        my $index = $out->input->full_subdocument_index;
250        $index = $index ? $index . '.' . $i : $i;
251      $out->start_section (id => 'table-' . $i,      $out->start_section (id => 'table-' . $i,
252                           title => 'Table #' . $i);                           title => 'Table #',
253                             text => $index);
254    
255      $out->start_tag ('dl');      $out->start_tag ('dl');
256      $out->dt ('Table Element');      $out->dt ('Table Element');
# Line 252  sub generate_table_section ($) { Line 294  sub generate_table_section ($) {
294    }    }
295    
296    $out->end_section;    $out->end_section;
297  } # print_table_section  } # generate_table_section
298    
299  sub print_listing_section ($$$) {  sub generate_listing_section ($%) {
300    my ($opt, $input, $ids) = @_;    my $self = shift;
301        my %opt = @_;
 #  push @nav, ['#' . $input->{id_prefix} . $opt->{id} => $opt->{label}]  
 #      unless $input->{nested};  
   print STDOUT qq[  
 <div id="$input->{id_prefix}$opt->{id}" class="section">  
 <h2>$opt->{heading}</h2>  
   
 <dl>  
 ];  
   for my $id (sort {$a cmp $b} keys %$ids) {  
     print STDOUT qq[<dt><code>@{[htescape $id]}</code></dt>];  
     for (@{$ids->{$id}}) {  
       print STDOUT qq[<dd>].get_node_link ($input, $_).qq[</dd>];  
     }  
   }  
   print STDOUT qq[</dl></div>];  
 } # print_listing_section  
302    
303      my $list = $self->{add_info}->{$opt{key}} || {};
304      return unless keys %$list;
305    
306  sub print_rdf_section ($$$) {    my $out = $self->output;
   my ($input, $rdfs) = @_;  
     
 #  push @nav, ['#' . $input->{id_prefix} . 'rdf' => 'RDF']  
 #      unless $input->{nested};  
   print STDOUT qq[  
 <div id="$input->{id_prefix}rdf" class="section">  
 <h2>RDF Triples</h2>  
307    
308  <dl>];    $out->start_section (id => $opt{id},
309    my $i = 0;                         title => $opt{title},
310    for my $rdf (@$rdfs) {                         short_title => $opt{short_title});
311      print STDOUT qq[<dt id="$input->{id_prefix}rdf-@{[$i++]}">];    $out->start_tag ('dl');
312      print STDOUT get_node_link ($input, $rdf->[0]);  
313      print STDOUT qq[<dd><dl>];    for my $id (sort {$a cmp $b} keys %$list) {
314      for my $triple (@{$rdf->[1]}) {      $out->start_tag ('dt');
315        print STDOUT '<dt>' . get_node_link ($input, $triple->[0]) . '<dd>';      $out->code ($id);
316        print STDOUT get_rdf_resource_html ($triple->[1]);      for (@{$list->{$id}}) {
317        print STDOUT ' ';        $out->start_tag ('dd');
318        print STDOUT get_rdf_resource_html ($triple->[2]);        $out->node_link ($_);
       print STDOUT ' ';  
       print STDOUT get_rdf_resource_html ($triple->[3]);  
319      }      }
     print STDOUT qq[</dl>];  
320    }    }
   print STDOUT qq[</dl></div>];  
 } # print_rdf_section  
321    
322  sub get_rdf_resource_html ($) {    $out->end_tag ('dl');
323    my $resource = shift;    $out->end_section;
324    } # generate_listing_section
325    
326    my $generate_rdf_resource_html = sub ($$) {
327      my ($resource, $out) = @_;
328    
329    if (defined $resource->{uri}) {    if (defined $resource->{uri}) {
330      my $euri = htescape ($resource->{uri});      $out->url ($resource->{uri});
     return '<code class=uri>&lt;<a href="' . $euri . '">' . $euri .  
         '</a>></code>';  
331    } elsif (defined $resource->{bnodeid}) {    } elsif (defined $resource->{bnodeid}) {
332      return htescape ('_:' . $resource->{bnodeid});      $out->text ('_:' . $resource->{bnodeid});
333    } elsif ($resource->{nodes}) {    } elsif ($resource->{nodes}) {
334      return '(rdf:XMLLiteral)';      $out->text ('(rdf:XMLLiteral)');
335    } elsif (defined $resource->{value}) {    } elsif (defined $resource->{value}) {
336      my $elang = htescape (defined $resource->{language}      $out->start_tag ('q',
337                                ? $resource->{language} : '');                       lang => defined $resource->{language}
338      my $r = qq[<q lang="$elang">] . htescape ($resource->{value}) . '</q>';                           ? $resource->{language} : '');
339        $out->text ($resource->{value});
340        $out->end_tag ('q');
341    
342      if (defined $resource->{datatype}) {      if (defined $resource->{datatype}) {
343        my $euri = htescape ($resource->{datatype});        $out->text ('^^');
344        $r .= '^^<code class=uri>&lt;<a href="' . $euri . '">' . $euri .        $out->url ($resource->{datatype});
           '</a>></code>';  
345      } elsif (length $resource->{language}) {      } elsif (length $resource->{language}) {
346        $r .= '@' . htescape ($resource->{language});        $out->text ('@' . $resource->{language});
347      }      }
     return $r;  
348    } else {    } else {
349      return '??';      $out->text ('??'); ## NOTE: An error of the implementation.
350    }    }
351  } # get_rdf_resource_html  }; # $generate_rdf_resource_html
352    
353    ## TODO: Should we move this method to another module,
354    ## such as Base or RDF?
355    sub generate_rdf_section ($) {
356      my $self = shift;
357    
358      my $list = $self->{add_info}->{rdf} || [];
359      return unless @$list;
360    
361      my $out = $self->output;
362      $out->start_section (id => 'rdf', short_title => 'RDF',
363                           title => 'RDF Triples');
364      $out->start_tag ('dl');
365    
366      my $i = 0;
367      for my $rdf (@$list) {
368        $out->start_tag ('dt', id => 'rdf-' . $i++);
369        $out->node_link ($rdf->[0]);
370        $out->start_tag ('dd');
371        $out->start_tag ('dl');
372        for my $triple (@{$rdf->[1]}) {
373          $out->start_tag ('dt');
374          $out->node_link ($triple->[0]);
375          $out->start_tag ('dd');
376          $out->text ('Subject: ');
377          $generate_rdf_resource_html->($triple->[1] => $out);
378          $out->start_tag ('dd');
379          $out->text ('Predicate: ');
380          $generate_rdf_resource_html->($triple->[2] => $out);
381          $out->start_tag ('dd');
382          $out->text ('Object: ');
383          $generate_rdf_resource_html->($triple->[3] => $out);
384        }
385        $out->end_tag ('dl');
386      }
387      $out->end_tag ('dl');
388      $out->end_section;
389    } # generate_rdf_section
390    
391  1;  1;

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.6

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24