/[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.4 by wakaba, Mon Jul 21 09:15:55 2008 UTC
# Line 184  sub generate_structure_error_section ($) Line 184  sub generate_structure_error_section ($)
184  sub generate_additional_sections ($) {  sub generate_additional_sections ($) {
185    my $self = shift;    my $self = shift;
186    $self->SUPER::generate_additional_sections;    $self->SUPER::generate_additional_sections;
187    
188    $self->generate_table_section;    $self->generate_table_section;
189    
190      $self->generate_listing_section (
191          key => 'id', id => 'identifiers',
192          short_title => 'IDs', title => 'Identifiers',
193      );
194      $self->generate_listing_section (
195          key => 'term', id => 'terms',
196          short_title => 'Terms', title => 'Terms',
197      );
198      $self->generate_listing_section (
199          key => 'class', id => 'classes',
200          short_title => 'Classes', title => 'Classes',
201      );
202    
203      $self->generate_rdf_section;
204  } # generate_additional_sections  } # generate_additional_sections
205    
206  sub generate_table_section ($) {  sub generate_table_section ($) {
# Line 252  sub generate_table_section ($) { Line 268  sub generate_table_section ($) {
268    }    }
269    
270    $out->end_section;    $out->end_section;
271  } # print_table_section  } # generate_table_section
272    
273  sub print_listing_section ($$$) {  sub generate_listing_section ($%) {
274    my ($opt, $input, $ids) = @_;    my $self = shift;
275        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  
276    
277      my $list = $self->{add_info}->{$opt{key}} || {};
278      return unless keys %$list;
279    
280  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>  
281    
282  <dl>];    $out->start_section (id => $opt{id},
283    my $i = 0;                         title => $opt{title},
284    for my $rdf (@$rdfs) {                         short_title => $opt{short_title});
285      print STDOUT qq[<dt id="$input->{id_prefix}rdf-@{[$i++]}">];    $out->start_tag ('dl');
286      print STDOUT get_node_link ($input, $rdf->[0]);  
287      print STDOUT qq[<dd><dl>];    for my $id (sort {$a cmp $b} keys %$list) {
288      for my $triple (@{$rdf->[1]}) {      $out->start_tag ('dt');
289        print STDOUT '<dt>' . get_node_link ($input, $triple->[0]) . '<dd>';      $out->code ($id);
290        print STDOUT get_rdf_resource_html ($triple->[1]);      for (@{$list->{$id}}) {
291        print STDOUT ' ';        $out->start_tag ('dd');
292        print STDOUT get_rdf_resource_html ($triple->[2]);        $out->node_link ($_);
       print STDOUT ' ';  
       print STDOUT get_rdf_resource_html ($triple->[3]);  
293      }      }
     print STDOUT qq[</dl>];  
294    }    }
   print STDOUT qq[</dl></div>];  
 } # print_rdf_section  
295    
296  sub get_rdf_resource_html ($) {    $out->end_tag ('dl');
297    my $resource = shift;    $out->end_section;
298    } # generate_listing_section
299    
300    my $generate_rdf_resource_html = sub ($$) {
301      my ($resource, $out) = @_;
302    
303    if (defined $resource->{uri}) {    if (defined $resource->{uri}) {
304      my $euri = htescape ($resource->{uri});      $out->url ($resource->{uri});
     return '<code class=uri>&lt;<a href="' . $euri . '">' . $euri .  
         '</a>></code>';  
305    } elsif (defined $resource->{bnodeid}) {    } elsif (defined $resource->{bnodeid}) {
306      return htescape ('_:' . $resource->{bnodeid});      $out->text ('_:' . $resource->{bnodeid});
307    } elsif ($resource->{nodes}) {    } elsif ($resource->{nodes}) {
308      return '(rdf:XMLLiteral)';      $out->text ('(rdf:XMLLiteral)');
309    } elsif (defined $resource->{value}) {    } elsif (defined $resource->{value}) {
310      my $elang = htescape (defined $resource->{language}      $out->start_tag ('q',
311                                ? $resource->{language} : '');                       lang => defined $resource->{language}
312      my $r = qq[<q lang="$elang">] . htescape ($resource->{value}) . '</q>';                           ? $resource->{language} : '');
313        $out->text ($resource->{value});
314        $out->end_tag ('q');
315    
316      if (defined $resource->{datatype}) {      if (defined $resource->{datatype}) {
317        my $euri = htescape ($resource->{datatype});        $out->text ('^^');
318        $r .= '^^<code class=uri>&lt;<a href="' . $euri . '">' . $euri .        $out->url ($resource->{datatype});
           '</a>></code>';  
319      } elsif (length $resource->{language}) {      } elsif (length $resource->{language}) {
320        $r .= '@' . htescape ($resource->{language});        $out->text ('@' . $resource->{language});
321      }      }
     return $r;  
322    } else {    } else {
323      return '??';      $out->text ('??'); ## NOTE: An error of the implementation.
324    }    }
325  } # get_rdf_resource_html  }; # $generate_rdf_resource_html
326    
327    ## TODO: Should we move this method to another module,
328    ## such as Base or RDF?
329    sub generate_rdf_section ($) {
330      my $self = shift;
331    
332      my $list = $self->{add_info}->{rdf} || [];
333      return unless @$list;
334    
335      my $out = $self->output;
336      $out->start_section (id => 'rdf', short_title => 'RDF',
337                           title => 'RDF Triples');
338      $out->start_tag ('dl');
339    
340      my $i = 0;
341      for my $rdf (@$list) {
342        $out->start_tag ('dt', id => 'rdf-' . $i++);
343        $out->node_link ($rdf->[0]);
344        $out->start_tag ('dd');
345        $out->start_tag ('dl');
346        for my $triple (@{$rdf->[1]}) {
347          $out->start_tag ('dt');
348          $out->node_link ($triple->[0]);
349          $out->start_tag ('dd');
350          $out->text ('Subject: ');
351          $generate_rdf_resource_html->($triple->[1] => $out);
352          $out->start_tag ('dd');
353          $out->text ('Predicate: ');
354          $generate_rdf_resource_html->($triple->[2] => $out);
355          $out->start_tag ('dd');
356          $out->text ('Object: ');
357          $generate_rdf_resource_html->($triple->[3] => $out);
358        }
359        $out->end_tag ('dl');
360      }
361      $out->end_tag ('dl');
362      $out->end_section;
363    } # generate_rdf_section
364    
365  1;  1;

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

admin@suikawiki.org
ViewVC Help
Powered by ViewVC 1.1.24