/[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.10 by wakaba, Thu Dec 11 05:11:11 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 159  sub generate_structure_error_section ($) Line 181  sub generate_structure_error_section ($)
181    my $out = $self->output;    my $out = $self->output;
182    $out->start_section (role => 'structure-errors');    $out->start_section (role => 'structure-errors');
183    $out->start_error_list (role => 'structure-errors');    $out->start_error_list (role => 'structure-errors');
184      $self->result->layer_applicable ('structure');
185    
186    my $input = $self->input;    my $input = $self->input;
187    my $result = $self->result;    my $result = $self->result;
188    
189    require Whatpm::ContentChecker;    require Whatpm::ContentChecker;
190    my $onerror = sub {    my $onerror = sub {
191      $result->add_error (@_, layer => 'structure');      $result->add_error (layer => 'structure', @_);
192    };    };
193    
194    my $onsubdoc = $self->onsubdoc;    my $onsubdoc = $self->onsubdoc;
# Line 179  sub generate_structure_error_section ($) Line 202  sub generate_structure_error_section ($)
202    
203    $out->end_error_list (role => 'structure-errors');    $out->end_error_list (role => 'structure-errors');
204    $out->end_section;    $out->end_section;
205    
206      $self->result->layer_uncertain ('semantics');
207  } # generate_structure_error_section  } # generate_structure_error_section
208    
209  sub generate_additional_sections ($) {  sub generate_additional_sections ($) {
210    my $self = shift;    my $self = shift;
211    $self->SUPER::generate_additional_sections;    $self->SUPER::generate_additional_sections;
212    
213    $self->generate_table_section;    $self->generate_table_section;
214    
215      $self->generate_listing_section (
216          key => 'id', id => 'identifiers',
217          short_title => 'IDs', title => 'Identifiers',
218      );
219      $self->generate_listing_section (
220          key => 'term', id => 'terms',
221          short_title => 'Terms', title => 'Terms',
222      );
223      $self->generate_listing_section (
224          key => 'class', id => 'classes',
225          short_title => 'Classes', title => 'Classes',
226      );
227    
228      $self->generate_rdf_section;
229  } # generate_additional_sections  } # generate_additional_sections
230    
231  sub generate_table_section ($) {  sub generate_table_section ($) {
# Line 194  sub generate_table_section ($) { Line 235  sub generate_table_section ($) {
235    return unless @$tables;    return unless @$tables;
236    
237    my $out = $self->output;    my $out = $self->output;
238    $out->start_section (id => 'tables', title => 'Tables');    $out->start_section (id => 'tables', short_title => 'Tables',
239                           title => 'Tables Section');
240    
241    $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]-->
242  <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 249  sub generate_table_section ($) {
249    my $i = 0;    my $i = 0;
250    for my $table (@$tables) {    for my $table (@$tables) {
251      $i++;      $i++;
252        my $index = $out->input->full_subdocument_index;
253        $index = $index ? $index . '.' . $i : $i;
254      $out->start_section (id => 'table-' . $i,      $out->start_section (id => 'table-' . $i,
255                           title => 'Table #' . $i);                           title => 'Table #',
256                             text => $index,
257                             notab => 1);
258    
259      $out->start_tag ('dl');      $out->start_tag ('dl');
260      $out->dt ('Table Element');      $out->dt ('Table Element');
# Line 252  sub generate_table_section ($) { Line 298  sub generate_table_section ($) {
298    }    }
299    
300    $out->end_section;    $out->end_section;
301  } # print_table_section  } # generate_table_section
302    
303  sub print_listing_section ($$$) {  sub generate_listing_section ($%) {
304    my ($opt, $input, $ids) = @_;    my $self = shift;
305        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  
306    
307      my $list = $self->{add_info}->{$opt{key}} || {};
308      return unless keys %$list;
309    
310  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>  
311    
312  <dl>];    $out->start_section (id => $opt{id},
313    my $i = 0;                         title => $opt{title},
314    for my $rdf (@$rdfs) {                         short_title => $opt{short_title});
315      print STDOUT qq[<dt id="$input->{id_prefix}rdf-@{[$i++]}">];    $out->start_tag ('dl');
316      print STDOUT get_node_link ($input, $rdf->[0]);  
317      print STDOUT qq[<dd><dl>];    for my $id (sort {$a cmp $b} keys %$list) {
318      for my $triple (@{$rdf->[1]}) {      $out->start_tag ('dt');
319        print STDOUT '<dt>' . get_node_link ($input, $triple->[0]) . '<dd>';      $out->code ($id);
320        print STDOUT get_rdf_resource_html ($triple->[1]);      for (@{$list->{$id}}) {
321        print STDOUT ' ';        $out->start_tag ('dd');
322        print STDOUT get_rdf_resource_html ($triple->[2]);        $out->node_link ($_);
       print STDOUT ' ';  
       print STDOUT get_rdf_resource_html ($triple->[3]);  
323      }      }
     print STDOUT qq[</dl>];  
324    }    }
   print STDOUT qq[</dl></div>];  
 } # print_rdf_section  
325    
326  sub get_rdf_resource_html ($) {    $out->end_tag ('dl');
327    my $resource = shift;    $out->end_section;
328    } # generate_listing_section
329    
330    my $generate_rdf_resource_html = sub ($$) {
331      my ($resource, $out) = @_;
332    
333    if (defined $resource->{uri}) {    if (defined $resource->{uri}) {
334      my $euri = htescape ($resource->{uri});      $out->url ($resource->{uri});
     return '<code class=uri>&lt;<a href="' . $euri . '">' . $euri .  
         '</a>></code>';  
335    } elsif (defined $resource->{bnodeid}) {    } elsif (defined $resource->{bnodeid}) {
336      return htescape ('_:' . $resource->{bnodeid});      $out->text ('_:' . $resource->{bnodeid});
337    } elsif ($resource->{nodes}) {    } elsif ($resource->{nodes}) {
338      return '(rdf:XMLLiteral)';      $out->text ('(rdf:XMLLiteral)');
339    } elsif (defined $resource->{value}) {    } elsif (defined $resource->{value}) {
340      my $elang = htescape (defined $resource->{language}      $out->start_tag ('q',
341                                ? $resource->{language} : '');                       lang => defined $resource->{language}
342      my $r = qq[<q lang="$elang">] . htescape ($resource->{value}) . '</q>';                           ? $resource->{language} : '');
343        $out->text ($resource->{value});
344        $out->end_tag ('q');
345    
346      if (defined $resource->{datatype}) {      if (defined $resource->{datatype}) {
347        my $euri = htescape ($resource->{datatype});        $out->text ('^^');
348        $r .= '^^<code class=uri>&lt;<a href="' . $euri . '">' . $euri .        $out->url ($resource->{datatype});
           '</a>></code>';  
349      } elsif (length $resource->{language}) {      } elsif (length $resource->{language}) {
350        $r .= '@' . htescape ($resource->{language});        $out->text ('@' . $resource->{language});
351      }      }
     return $r;  
352    } else {    } else {
353      return '??';      $out->text ('??'); ## NOTE: An error of the implementation.
354      }
355    }; # $generate_rdf_resource_html
356    
357    ## TODO: Should we move this method to another module,
358    ## such as Base or RDF?
359    sub generate_rdf_section ($) {
360      my $self = shift;
361    
362      my $list = $self->{add_info}->{rdf} || [];
363      return unless @$list;
364    
365      my $out = $self->output;
366      $out->start_section (id => 'rdf', short_title => 'RDF',
367                           title => 'RDF Triples');
368      $out->start_tag ('dl');
369    
370      my $i = 0;
371      for my $rdf (@$list) {
372        $out->start_tag ('dt', id => 'rdf-' . $i++);
373        $out->node_link ($rdf->[0]);
374        $out->start_tag ('dd');
375        $out->start_tag ('dl');
376        for my $triple (@{$rdf->[1]}) {
377          $out->start_tag ('dt');
378          $out->node_link ($triple->[0]);
379          $out->start_tag ('dd');
380          $out->nl_text ('Subject');
381          $out->text (': ');
382          $generate_rdf_resource_html->($triple->[1] => $out);
383          $out->start_tag ('dd');
384          $out->nl_text ('Predicate');
385          $out->text (': ');
386          $generate_rdf_resource_html->($triple->[2] => $out);
387          $out->start_tag ('dd');
388          $out->nl_text ('Object');
389          $out->text (': ');
390          $generate_rdf_resource_html->($triple->[3] => $out);
391        }
392        $out->end_tag ('dl');
393    }    }
394  } # get_rdf_resource_html    $out->end_tag ('dl');
395      $out->end_section;
396    } # generate_rdf_section
397    
398  1;  1;

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24