/[suikacvs]/test/html-webhacc/cc.cgi
Suika

Diff of /test/html-webhacc/cc.cgi

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

revision 1.4 by wakaba, Wed Jun 27 14:36:45 2007 UTC revision 1.6 by wakaba, Sat Jun 30 14:51:10 2007 UTC
# Line 189  my $http = SuikaWiki::Input::HTTP->new; Line 189  my $http = SuikaWiki::Input::HTTP->new;
189      require Whatpm::ContentChecker;      require Whatpm::ContentChecker;
190      my $onerror = sub {      my $onerror = sub {
191        my %opt = @_;        my %opt = @_;
192        print STDOUT qq[<dt><a href="#node-@{[refaddr $opt{node}]}">],        print STDOUT qq[<dt>] . get_node_link ($opt{node}) .
193            htescape get_node_path ($opt{node}),            "</dt>\n<dd>", htescape $opt{type}, "</dd>\n";
           "</a></dt>\n<dd>", htescape $opt{type}, "</dd>\n";  
194      };      };
195    
196        my $elements;
197      if ($el) {      if ($el) {
198        Whatpm::ContentChecker->check_element ($el, $onerror);        $elements = Whatpm::ContentChecker->check_element ($el, $onerror);
199      } else {      } else {
200        Whatpm::ContentChecker->check_document ($doc, $onerror);        $elements = Whatpm::ContentChecker->check_document ($doc, $onerror);
201      }      }
202    
203      print STDOUT qq[      print STDOUT qq[
204  </dl>  </dl>
205  </div>  </div>
206  ];  ];
207    
208        if (@{$elements->{table}}) {
209          require JSON;
210    
211          print STDOUT qq[
212    <div id="tables" class="section">
213    <h2>Tables</h2>
214    
215    <!--[if IE]><script type="text/javascript" src="../excanvas.js"></script><![endif]-->
216    <script src="../table-script.js" type="text/javascript"></script>
217    <noscript>
218    <p><em>Structure of tables are visualized here if scripting is enabled.</em></p>
219    </noscript>
220    ];
221    
222          my $i = 0;
223          for my $table_el (@{$elements->{table}}) {
224            $i++;
225            print STDOUT qq[<div class="section" id="table-$i"><h3>] .
226                get_node_link ($table_el) . q[</h3>];
227            
228            my $table = Whatpm::HTMLTable->form_table ($table_el);
229            
230            for (@{$table->{column_group}}, @{$table->{column}}, $table->{caption}) {
231              next unless $_;
232              delete $_->{element};
233            }
234            
235            for (@{$table->{row_group}}) {
236              next unless $_;
237              next unless $_->{element};
238              $_->{type} = $_->{element}->manakai_local_name;
239              delete $_->{element};
240            }
241            
242            for (@{$table->{cell}}) {
243              next unless $_;
244              for (@{$_}) {
245                next unless $_;
246                for (@$_) {
247                  $_->{id} = refaddr $_->{element} if defined $_->{element};
248                  delete $_->{element};
249                }
250              }
251            }
252            
253            print STDOUT '</div><script type="text/javascript">tableToCanvas (';
254            print STDOUT JSON::objToJson ($table);
255            print STDOUT qq[, document.getElementById ('table-$i'));</script>];
256          }
257        
258          print STDOUT qq[</div>];
259        }
260    
261        if (keys %{$elements->{term}}) {
262          print STDOUT qq[
263    <div id="terms" class="section">
264    <h2>Terms</h2>
265    
266    <dl>
267    ];
268          for my $term (sort {$a cmp $b} keys %{$elements->{term}}) {
269            print STDOUT qq[<dt>@{[htescape $term]}</dt>];
270            for (@{$elements->{term}->{$term}}) {
271              print STDOUT qq[<dd>].get_node_link ($_).qq[</dd>];
272            }
273          }
274          print STDOUT qq[</dl></div>];
275        }
276    }    }
277    
278    ## TODO: Show result    ## TODO: Show result
# Line 267  sub print_document_tree ($) { Line 336  sub print_document_tree ($) {
336    
337        if ($node->has_child_nodes) {        if ($node->has_child_nodes) {
338          $r .= '<ol class="children">';          $r .= '<ol class="children">';
339          unshift @node, @{$child->child_nodes}, '</ol>';          unshift @node, @{$child->child_nodes}, '</ol></li>';
340          } else {
341            $r .= '</li>';
342        }        }
343      } elsif ($nt == $child->TEXT_NODE) {      } elsif ($nt == $child->TEXT_NODE) {
344        $r .= qq'<li id="$node_id" class="tree-text"><q lang="">' . htescape ($child->data) . '</q></li>';        $r .= qq'<li id="$node_id" class="tree-text"><q lang="">' . htescape ($child->data) . '</q></li>';
# Line 276  sub print_document_tree ($) { Line 347  sub print_document_tree ($) {
347      } elsif ($nt == $child->COMMENT_NODE) {      } elsif ($nt == $child->COMMENT_NODE) {
348        $r .= qq'<li id="$node_id" class="tree-comment"><code>&lt;!--</code><q lang="">' . htescape ($child->data) . '</q><code>--&gt;</code></li>';        $r .= qq'<li id="$node_id" class="tree-comment"><code>&lt;!--</code><q lang="">' . htescape ($child->data) . '</q><code>--&gt;</code></li>';
349      } elsif ($nt == $child->DOCUMENT_NODE) {      } elsif ($nt == $child->DOCUMENT_NODE) {
350        $r .= qq'<li id="$node_id" class="tree-document">Document</li>';        $r .= qq'<li id="$node_id" class="tree-document">Document';
351        if ($child->has_child_nodes) {        if ($child->has_child_nodes) {
352          $r .= '<ol>';          $r .= '<ol>';
353          unshift @node, @{$child->child_nodes}, '</ol>';          unshift @node, @{$child->child_nodes}, '</ol></li>';
354        }        }
355      } elsif ($nt == $child->DOCUMENT_TYPE_NODE) {      } elsif ($nt == $child->DOCUMENT_TYPE_NODE) {
356        $r .= qq'<li id="$node_id" class="tree-doctype"><code>&lt;!DOCTYPE&gt;</code><ul>';        $r .= qq'<li id="$node_id" class="tree-doctype"><code>&lt;!DOCTYPE&gt;</code><ul class="attributes">';
357        $r .= '<li class="tree-doctype-name">Name = <q>@{[htescape ($child->name)]}</q></li>';        $r .= qq[<li class="tree-doctype-name">Name = <q>@{[htescape ($child->name)]}</q></li>];
358        $r .= '<li class="tree-doctype-publicid">Public identifier = <q>@{[htescape ($child->public_id)]}</q></li>';        $r .= qq[<li class="tree-doctype-publicid">Public identifier = <q>@{[htescape ($child->public_id)]}</q></li>];
359        $r .= '<li class="tree-doctype-systemid">System identifier = <q>@{[htescape ($child->system_id)]}</q></li>';        $r .= qq[<li class="tree-doctype-systemid">System identifier = <q>@{[htescape ($child->system_id)]}</q></li>];
360        $r .= '</ul></li>';        $r .= '</ul></li>';
361      } elsif ($nt == $child->PROCESSING_INSTRUCTION_NODE) {      } elsif ($nt == $child->PROCESSING_INSTRUCTION_NODE) {
362        $r .= qq'<li id="$node_id" class="tree-id"><code>&lt;?@{[htescape ($child->target)]}</code> <q>@{[htescape ($child->data)]}</q><code>?&gt;</code></li>';        $r .= qq'<li id="$node_id" class="tree-id"><code>&lt;?@{[htescape ($child->target)]}</code> <q>@{[htescape ($child->data)]}</q><code>?&gt;</code></li>';
# Line 324  sub get_node_path ($) { Line 395  sub get_node_path ($) {
395    return join '/', @r;    return join '/', @r;
396  } # get_node_path  } # get_node_path
397    
398    sub get_node_link ($) {
399      return qq[<a href="#node-@{[refaddr $_[0]]}">] .
400          htescape (get_node_path ($_[0])) . qq[</a>];
401    } # get_node_link
402    
403  =head1 AUTHOR  =head1 AUTHOR
404    
405  Wakaba <w@suika.fam.cx>.  Wakaba <w@suika.fam.cx>.

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24