File Coverage

blib/lib/CORBA/HTML/HtmlVisitor.pm
Criterion Covered Total %
statement 18 600 3.0
branch 0 176 0.0
condition 0 59 0.0
subroutine 6 34 17.6
pod 0 12 0.0
total 24 881 2.7


line stmt bran cond sub pod time code
1            
2             #
3             # Interface Definition Language (OMG IDL CORBA v3.0)
4             #
5            
6             package CORBA::HTML::HtmlVisitor;
7            
8 1     1   5 use strict;
  1         2  
  1         44  
9 1     1   5 use warnings;
  1         2  
  1         45  
10            
11             our $VERSION = '2.60';
12            
13 1     1   6 use File::Basename;
  1         1  
  1         78  
14 1     1   570 use CORBA::HTML::NameVisitor;
  1         4  
  1         42  
15 1     1   868 use CORBA::HTML::DeclVisitor;
  1         4  
  1         39  
16 1     1   774 use CORBA::HTML::CommentVisitor;
  1         4  
  1         7463  
17            
18             sub new {
19 0     0 0   my $proto = shift;
20 0   0       my $class = ref($proto) || $proto;
21 0           my $self = {};
22 0           bless $self, $class;
23 0           my ($parser) = @_;
24 0           $self->{parser} = $parser;
25 0           $self->{symbtab} = $parser->YYData->{symbtab};
26 0           $self->{frameset} = exists $parser->YYData->{opt_f};
27 0           $self->{html_name} = new CORBA::HTML::NameVisitor($parser);
28 0           $self->{html_decl} = new CORBA::HTML::DeclVisitor($self);
29 0           $self->{html_comment} = new CORBA::HTML::CommentVisitor($self);
30 0           $self->{scope} = q{};
31 0           $self->{css} = $parser->YYData->{opt_s};
32 0           $self->{style} = q{
33             a.index { font-weight : bold; }
34             h2 { color : red; }
35             p.comment { color : green; }
36             span.comment { color : green; }
37             span.decl { font-weight : bold; }
38             span.tag { font-weight : bold; }
39             hr { text-align : center; }
40             };
41 0           return $self;
42             }
43            
44             sub _get_defn {
45 0     0     my $self = shift;
46 0           my($defn) = @_;
47 0 0         if (ref $defn) {
48 0           return $defn;
49             }
50             else {
51 0           return $self->{symbtab}->Lookup($defn);
52             }
53             }
54            
55             sub _get_name {
56 0     0     my $self = shift;
57 0           my ($node) = @_;
58 0           return $node->visit($self->{html_name}, $self->{scope});
59             }
60            
61             sub _print_decl {
62 0     0     my $self = shift;
63 0           my ($node) = @_;
64 0           $node->visit($self->{html_decl}, \*OUT);
65             }
66            
67             sub _print_comment {
68 0     0     my $self = shift;
69 0           my ($node) = @_;
70 0           $node->visit($self->{html_comment}, \*OUT);
71 0           print OUT "

\n";

72             }
73            
74             sub _sep_line {
75 0     0     my $self = shift;
76 0           print OUT "
\n";
77             }
78            
79             sub _format_head {
80 0     0     my $self = shift;
81 0           my ($title, $frameset, $target) = @_;
82 0           my $now = localtime();
83             # print OUT "\n";
84 0 0         if ($frameset) {
85 0           print OUT "\n";
86             }
87             else {
88 0           print OUT "\n";
89             }
90 0           print OUT "\n";
91 0           print OUT "\n";
92 0           print OUT " \n";
93 0           print OUT " \n";
94 0           print OUT " \n";
95 0           print OUT " \n";
96 0 0         print OUT " ",$title,"\n" if ($title);
97 0 0         unless ($frameset) {
98 0 0         print OUT " \n" if (defined $target);
99 0 0         if ($self->{css}) {
100 0           print OUT " \n";
101             }
102             else {
103 0           print OUT " \n";
106             }
107             }
108 0           print OUT " \n";
109 0           print OUT "\n";
110             }
111            
112             sub _format_head_main {
113 0     0     my $self = shift;
114 0           my ($title) = @_;
115 0           $self->_format_head($title, 0);
116 0           print OUT " \n";
117 0           print OUT "

",$title,"

\n";
118 0 0         print OUT "

Global index

\n"
119             unless ($self->{frameset});
120 0           print OUT "
\n";
121             }
122            
123             sub _format_head_global_index {
124 0     0     my $self = shift;
125 0           my $title = 'Global index';
126 0 0         if ($self->{frameset}) {
127 0           $self->_format_head($title, 0, 'local');
128 0           print OUT " \n";
129             }
130             else {
131 0           $self->_format_head($title, 0);
132 0           print OUT " \n";
133 0           print OUT "

",$title,"

\n";
134 0           print OUT "
\n";
135             }
136             }
137            
138             sub _format_head_index {
139 0     0     my $self = shift;
140 0           my ($title) = @_;
141 0           $self->_format_head('Index ' . $title, 0, 'main');
142 0           print OUT " \n";
143 0           print OUT "

",$title,"

\n";
144             }
145            
146             sub _format_tail {
147 0     0     my $self = shift;
148 0           my ($frameset) = @_;
149 0 0         unless ($frameset) {
150 0           print OUT "\n";
151 0           print OUT " \n";
152             }
153 0           print OUT "\n";
154 0           print OUT "\n";
155             }
156            
157             sub _format_index {
158 0     0     my $self = shift;
159 0           my ($node, $rlist) = @_;
160 0           my $nb = 0;
161 0           foreach (@{$rlist}) {
  0            
162 0           my $idx = 'index_' . $_;
163 0 0         if (keys %{$node->{$idx}}) {
  0            
164 0           $nb ++;
165 0           my $title = ucfirst $_;
166 0           $title =~ s/_/ /g;
167 0           print OUT "

",$title," index.

\n";
168 0           print OUT "
\n";
169 0           foreach (sort keys %{$node->{$idx}}) {
  0            
170 0           my $child = $node->{$idx}->{$_};
171 0           print OUT "
";
172 0           print OUT $_,"\n";
173             }
174 0           print OUT "\n";
175             }
176             }
177 0 0         unless ($self->{frameset}) {
178 0 0         $self->_sep_line() if ($nb);
179             }
180             }
181            
182             sub _format_decl {
183 0     0     my $self = shift;
184 0           my ($node, $rlist) = @_;
185 0           my $nb = 0;
186 0           foreach (@{$rlist}) {
  0            
187 0           my $idx = 'index_' . $_;
188 0 0         if (keys %{$node->{$idx}}) {
  0            
189 0           $nb ++;
190 0           my $title = ucfirst $_;
191 0           $title =~ s/_/ /g;
192 0           print OUT "

",$title,"s.

\n";
193 0 0         if (scalar keys %{$node->{$idx}}) {
  0            
194 0           print OUT "
    \n";
195 0           foreach (sort keys %{$node->{$idx}}) {
  0            
196 0           my $child = $node->{$idx}->{$_};
197 0           print OUT "
  • \n";
  • 198 0           print OUT "

    ",$_,"

    \n";
    199 0           $self->_print_decl($child);
    200 0           $self->_print_comment($child);
    201 0           print OUT " \n";
    202             }
    203 0           print OUT "\n";
    204             }
    205             }
    206             }
    207 0 0         $self->_sep_line() if ($nb);
    208 0           print OUT "
    Generated by idl2html
    \n";
    209             }
    210            
    211             sub _format_decl_file {
    212 0     0     my $self = shift;
    213 0           my ($node, $rlist, $filename) = @_;
    214 0           my $nb = 0;
    215 0           foreach (@{$rlist}) {
      0            
    216 0           my $idx = 'index_' . $_;
    217 0 0         if (keys %{$node->{$idx}}) {
      0            
    218 0           $nb ++;
    219 0           my $title = ucfirst $_;
    220 0           $title =~ s/_/ /g;
    221 0           print OUT "

    ",$title,"s.

    \n";
    222 0 0         if (scalar keys %{$node->{$idx}}) {
      0            
    223 0           my $n = 0;
    224 0           foreach (sort values %{$node->{$idx}}) {
      0            
    225 0 0         $n ++ if ($_->{filename} eq $filename);
    226             }
    227 0 0         if ($n) {
    228 0           print OUT "
      \n";
    229 0           foreach (sort keys %{$node->{$idx}}) {
      0            
    230 0           my $child = $node->{$idx}->{$_};
    231 0 0         next unless ($child->{filename} eq $filename);
    232 0           print OUT "
  • \n";
  • 233 0           print OUT "

    ",$_,"

    \n";
    234 0           $self->_print_decl($child);
    235 0           $self->_print_comment($child);
    236 0           print OUT " \n";
    237             }
    238 0           print OUT "\n";
    239             }
    240             }
    241             }
    242             }
    243 0 0         $self->_sep_line() if ($nb);
    244 0           print OUT "
    Generated by idl2html
    \n";
    245             }
    246            
    247             sub _examine_index {
    248 0     0     my $self = shift;
    249 0           my ($node, $idx, $htree) = @_;
    250            
    251 0           while (my ($idf, $defn) = each %{$node->{index_module}}) {
      0            
    252 0 0 0       $htree->{$idf} = {}
    253             if (!exists $htree->{$idf} or $htree->{$idf} == 1);
    254 0           $self->_examine_index($defn, $idx, $htree->{$idf});
    255 0           delete $htree->{$idf}
    256 0 0         unless (scalar keys %{$htree->{$idf}});
    257             }
    258 0           foreach (keys %{$node->{$idx}}) {
      0            
    259 0 0         $htree->{$_} = 1
    260             unless (exists $htree->{$_});
    261             }
    262             }
    263            
    264             sub _format_global_index {
    265 0     0     my $self = shift;
    266 0           my ($idx, $htree, $basename) = @_;
    267            
    268 0           print OUT "
      \n";
    269 0           foreach (sort keys %{$htree}) {
      0            
    270 0 0         my $full = $basename ? $basename . '::' . $_ : $_;
    271 0           my $filename = $full;
    272 0           $filename =~ s/::/_/g;
    273 0 0         $self->{first_filename} = $filename
    274             unless (exists $self->{first_filename});
    275 0 0         if ($self->{frameset}) {
    276 0           print OUT "
  • ";
  • 277             }
    278             else {
    279 0           print OUT "
  • ";
  • 280             }
    281 0 0         if ($htree->{$_} == 1) {
    282 0           print OUT $full,"\n";
    283             }
    284             else {
    285 0           print OUT $full,"\n";
    286 0           $self->_format_global_index($idx, $htree->{$_}, $full);
    287 0           print OUT "\n";
    288             }
    289             }
    290 0           print OUT "\n";
    291             }
    292            
    293             sub _format_toc {
    294 0     0     my $self = shift;
    295 0           my ($idx, $htree, $basename) = @_;
    296            
    297 0           print OUT "
      \n"; # no XHTML
    298 0           foreach (sort keys %{$htree}) {
      0            
    299 0 0         my $full = $basename ? $basename . '::' . $_ : $_;
    300 0           my $filename = $full;
    301 0           $filename =~ s/::/_/g;
    302 0           print OUT "
  • \n";
  • 303 0           print OUT " \n";
    304 0           print OUT " \n";
    305 0           print OUT " \n";
    306 0 0         unless ($htree->{$_} == 1) {
    307 0           $self->_format_toc($idx, $htree->{$_}, $full);
    308             }
    309             }
    310 0           print OUT " \n";
    311             }
    312            
    313             #
    314             # 3.5 OMG IDL Specification
    315             #
    316            
    317             sub visitSpecification {
    318 0     0 0   my $self = shift;
    319 0           my ($node) = @_;
    320            
    321 0           my @list_call = (
    322             'module',
    323             'interface',
    324             'value',
    325             'event',
    326             'component',
    327             'home'
    328             );
    329 0           foreach (@list_call) {
    330 0           my $idx = 'index_' . $_;
    331 0           foreach (values %{$node->{$idx}}) {
      0            
    332 0           $_->visit($self);
    333             }
    334             }
    335            
    336 0           my @list_decl = (
    337             'boxed_value',
    338             'type',
    339             'exception',
    340             'constant'
    341             );
    342 0           my %alone;
    343 0           foreach (@list_decl) {
    344 0           my $idx = 'index_' . $_;
    345 0           foreach (values %{$node->{$idx}}) {
      0            
    346 0           my $defn = $self->_get_defn($_);
    347 0           $alone{$defn->{filename}} = 1;
    348             }
    349             }
    350 0           foreach (keys %alone) {
    351 0           my $filename = '__' . basename($_, '.idl') . '.html';
    352 0 0         open OUT, '>', $filename
    353             or die "can't open $filename ($!).\n";
    354            
    355 0           $self->_format_head_main($filename);
    356 0           $self->_format_decl_file($node, \@list_decl, $_);
    357 0           $self->_format_tail(0);
    358            
    359 0           close OUT;
    360             }
    361            
    362 0           foreach (@list_call) {
    363 0           my $idx = 'index_' . $_;
    364 0           $self->_examine_index($node, $idx, $main::global->{$idx});
    365             }
    366 0           my $nb = 0;
    367 0           foreach (@list_call) {
    368 0           my $idx = 'index_' . $_;
    369 0           foreach (sort keys %{$main::global->{$idx}}) {
      0            
    370 0           $nb ++;
    371             }
    372             }
    373 0 0         if ($nb) {
    374 0 0         open OUT, '>', 'index.html'
    375             or die "can't open index.html ($!).\n";
    376 0           $self->{out} = \*OUT;
    377            
    378 0           $self->_format_head_global_index();
    379 0           foreach (@list_call) {
    380 0           my $idx = 'index_' . $_;
    381 0 0         if (keys %{$main::global->{$idx}}) {
      0            
    382 0           my $title = ucfirst $_;
    383 0           print OUT "

    All ",$title," index.

    \n";
    384 0           $self->_format_global_index($idx, $main::global->{$idx}, q{});
    385             }
    386             }
    387 0 0         unless ($self->{frameset}) {
    388 0           $self->_sep_line();
    389 0           print OUT "
    Generated by idl2html
    \n";
    390             }
    391 0           $self->_format_tail(0);
    392            
    393 0           close OUT;
    394             }
    395            
    396 0 0         if ($self->{frameset}) {
    397 0 0         open OUT, '>', 'frame.html'
    398             or die "can't open frame.html ($!).\n";
    399 0           $self->{out} = \*OUT;
    400            
    401 0           $self->_format_head('Global index', 1);
    402 0           print OUT " \n";
    403 0           print OUT " \n";
    404 0           print OUT " \n";
    405 0           print OUT " \n";
    406 0           print OUT " \n";
    407 0           print OUT " \n";
    408 0           print OUT " \n"; </td> </tr> <tr> <td class="h" > <a name="409">409</a> </td> <td class="c0" > 0 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> print OUT " <body>\n"; </td> </tr> <tr> <td class="h" > <a name="410">410</a> </td> <td class="c0" > 0 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> print OUT " <h1>Sorry!</h1>\n"; </td> </tr> <tr> <td class="h" > <a name="411">411</a> </td> <td class="c0" > 0 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> print OUT " <h3>This page must be viewed by a browser that is capable of viewing frames.</h3>\n"; </td> </tr> <tr> <td class="h" > <a name="412">412</a> </td> <td class="c0" > 0 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> print OUT " </body>\n"; </td> </tr> <tr> <td class="h" > <a name="413">413</a> </td> <td class="c0" > 0 </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td > &nbsp; </td> <td class="s"> print OUT " \n";
    414 0           print OUT " \n";
    415 0           $self->_format_tail(1);
    416            
    417 0           close OUT;
    418             }
    419             else {
    420 0   0       my $outfile = $self->{parser}->YYData->{opt_o} || 'htmlhelp';
    421 0 0         open OUT, '>', "$outfile.hhp"
    422             or die "can't open $outfile.hhp ($!).\n";
    423            
    424 0           my $title = $self->{parser}->YYData->{opt_t};
    425 0           print OUT "[OPTIONS]\n";
    426 0           print OUT "Binary TOC=Yes\n";
    427 0           print OUT "Compatibility=1.1 or later\n";
    428 0           print OUT "Compiled file=",$outfile,".chm\n";
    429 0           print OUT "Contents file=toc.hhc\n";
    430 0           print OUT "Default Window=Main\n";
    431 0           print OUT "Default topic=index.html\n";
    432 0           print OUT "Display compile progress=Yes\n";
    433 0           print OUT "Full-text search=Yes\n";
    434 0           print OUT "Index file=index.hhk\n";
    435 0           print OUT "Language=0x0409 English (UNITED STATES)\n";
    436 0 0         print OUT "Title=",$title,"\n" if ($title);
    437 0           print OUT "\n";
    438 0           print OUT "[WINDOWS]\n";
    439 0           print OUT "Main=,\"toc.hhc\",\"index.hhk\",\"index.html\",\"index.html\",,,,,0x22520,,0x603006,,,,,,,,0\n";
    440 0           print OUT "\n";
    441 0           print OUT "[FILES]\n";
    442 0           print OUT "index.html\n";
    443 0           foreach (@list_call) {
    444 0           my $idx = 'index_' . $_;
    445 0           foreach (sort keys %{$main::global->{$idx}}) {
      0            
    446 0 0 0       print OUT "_",$_,".html\n"
    447             if ($main::global->{$idx}->{$_} == 1 or $idx eq 'index_module');
    448             }
    449             }
    450            
    451 0           close OUT;
    452            
    453 0 0         open OUT, '>', 'toc.hhc'
    454             or die "can't open toc.hhc ($!).\n";
    455            
    456 0           print OUT "\n"; # no XHTML
    457 0           print OUT " \n";
    458 0           print OUT " \n";
    459 0           print OUT " \n";
    460 0           print OUT " \n";
    461 0           print OUT " \n";
    462 0           print OUT " \n";
    463 0           print OUT " \n";
    464 0           print OUT "
      \n";
    465 0           foreach (@list_call) {
    466 0           my $idx = 'index_' . $_;
    467 0 0         if (keys %{$main::global->{$idx}}) {
      0            
    468 0           my $title = ucfirst $_;
    469 0           print OUT "
  • \n";
  • 470 0           print OUT " \n";
    471 0           print OUT " \n";
    472 0           print OUT " \n";
    473 0           $self->_format_toc($idx, $main::global->{$idx}, q{});
    474             }
    475             }
    476 0           print OUT " \n";
    477 0           print OUT " \n";
    478 0           print OUT "\n";
    479            
    480 0           close OUT;
    481            
    482 0           foreach my $scope (values %{$self->{symbtab}->{scopes}}) {
      0            
    483 0           foreach my $defn (values %{$scope->{entry}}) {
      0            
    484 0 0         next unless (exists $defn->{file_html});
    485 0 0 0       if ( $defn->isa('StateMember')
          0        
          0        
          0        
          0        
          0        
          0        
          0        
          0        
          0        
          0        
          0        
          0        
          0        
          0        
          0        
    486             or $defn->isa('Initializer')
    487             or $defn->isa('BoxedValue')
    488             or $defn->isa('Constant')
    489             or $defn->isa('TypeDeclarator')
    490             or $defn->isa('StructType')
    491             or $defn->isa('UnionType')
    492             or $defn->isa('EnumType')
    493             or $defn->isa('Enum')
    494             or $defn->isa('Exception')
    495             or $defn->isa('Provides')
    496             or $defn->isa('Uses')
    497             or $defn->isa('Emits')
    498             or $defn->isa('Publishes')
    499             or $defn->isa('Consumes')
    500             or $defn->isa('Factory')
    501             or $defn->isa('Finder') ) {
    502 0           my $anchor = $defn->{file_html} . "#" . $defn->{idf};
    503 0           $main::global->{index_entry}->{$anchor} = $defn->{idf};
    504             }
    505             }
    506             }
    507            
    508 0 0         open OUT, '>', 'index.hhk'
    509             or die "can't open index.hhk ($!).\n";
    510            
    511 0           print OUT "\n"; # no XHTML
    512 0           print OUT " \n";
    513 0           print OUT " \n";
    514 0           print OUT " \n";
    515 0           print OUT " \n";
    516 0           print OUT "
      \n";
    517 0           while (my ($key, $val) = each %{$main::global->{index_entry}}) {
      0            
    518 0           print OUT "
  • \n";
  • 519 0           print OUT " \n";
    520 0           print OUT " \n";
    521 0           print OUT " \n";
    522             }
    523 0           print OUT " \n";
    524 0           print OUT " \n";
    525 0           print OUT "\n";
    526            
    527 0           close OUT;
    528             }
    529 0 0         if ($self->{css}) {
    530 0           my $outfile = $self->{css} . '.css';
    531 0 0         unless ( -e $outfile) {
    532 0 0         open OUT, '>', $outfile
    533             or die "can't open $outfile ($!)\n";
    534 0           print OUT $self->{style};
    535 0           close OUT;
    536             }
    537             }
    538             }
    539            
    540             #
    541             # 3.7 Module Declaration
    542             #
    543            
    544             sub visitModules {
    545 0     0 0   my $self = shift;
    546 0           my ($node) = @_;
    547 0           my $scope_save = $self->{scope};
    548 0           $self->{scope} = $node->{full};
    549 0           $self->{scope} =~ s/^:://;
    550 0           my $title = $self->{scope};
    551 0           my @list_call = (
    552             'module',
    553             'interface',
    554             'value',
    555             'event',
    556             'component',
    557             'home'
    558             );
    559 0           my @list_idx = (
    560             'module',
    561             'interface',
    562             'value',
    563             'type',
    564             'exception',
    565             'constant',
    566             'event',
    567             'component',
    568             'home'
    569             );
    570 0           my @list_decl = (
    571             'boxed_value',
    572             'type',
    573             'exception',
    574             'constant'
    575             );
    576            
    577 0           foreach (@list_call) {
    578 0           my $idx = 'index_' . $_;
    579 0           foreach (values %{$node->{$idx}}) {
      0            
    580 0           $_->visit($self);
    581             }
    582             }
    583            
    584 0           foreach (keys %{$node->{index_boxed_value}}) {
      0            
    585 0           $node->{index_value}->{$_} = $node->{index_boxed_value}->{$_};
    586             }
    587            
    588 0 0         open OUT, '>', $node->{file_html}
    589             or die "can't open $node->{file_html} ($!).\n";
    590            
    591 0           $self->_format_head_main('Module ' . $title);
    592 0           $self->_print_decl($node);
    593 0           $self->_print_comment($node);
    594 0           $self->_sep_line();
    595 0 0         $self->_format_index($node, \@list_idx)
    596             unless ($self->{frameset});
    597 0           $self->_format_decl($node, \@list_decl);
    598 0           $self->_format_tail(0);
    599            
    600 0           close OUT;
    601            
    602 0 0         if ($self->{frameset}) {
    603 0 0         open OUT, '>', "index.$node->{file_html}"
    604             or die "can't open index.$node->{file_html} ($!).\n";
    605            
    606 0           $self->_format_head_index($title);
    607 0           $self->_format_index($node, \@list_idx);
    608 0           $self->_format_tail(0);
    609            
    610 0           close OUT;
    611             }
    612            
    613 0           $self->{scope} = $scope_save;
    614             }
    615            
    616             #
    617             # 3.8 Interface Declaration
    618             #
    619            
    620             sub visitRegularInterface {
    621 0     0 0   my $self = shift;
    622 0           my ($node) = @_;
    623 0           my $scope_save = $self->{scope};
    624 0           $self->{scope} = $node->{full};
    625 0           $self->{scope} =~ s/^:://;
    626 0           my $title = $self->{scope};
    627 0           my @list = (
    628             'operation',
    629             'attribute',
    630             'type',
    631             'exception',
    632             'constant'
    633             );
    634 0 0         open OUT, '>', $node->{file_html}
    635             or die "can't open $node->{file_html} ($!).\n";
    636            
    637 0           $self->_format_head_main('Interface ' . $title);
    638 0           $self->_print_decl($node);
    639 0           $self->_print_comment($node);
    640 0           $self->_sep_line();
    641 0 0         $self->_format_index($node, \@list)
    642             unless ($self->{frameset});
    643 0           $self->_format_decl($node, \@list);
    644 0           $self->_format_tail(0);
    645            
    646 0           close OUT;
    647            
    648 0 0         if ($self->{frameset}) {
    649 0 0         open OUT, '>', "index.$node->{file_html}"
    650             or die "can't open index.$node->{file_html} ($!).\n";
    651            
    652 0           $self->_format_head_index($title);
    653 0           $self->_format_index($node, \@list);
    654 0           $self->_format_tail(0);
    655            
    656 0           close OUT;
    657             }
    658            
    659 0           $self->{scope} = $scope_save;
    660             }
    661            
    662             sub visitAbstractInterface {
    663 0     0 0   my $self = shift;
    664 0           my ($node) = @_;
    665 0           my $scope_save = $self->{scope};
    666 0           $self->{scope} = $node->{full};
    667 0           $self->{scope} =~ s/^:://;
    668 0           my $title = $self->{scope};
    669 0           my @list = (
    670             'operation',
    671             'attribute',
    672             'type',
    673             'exception',
    674             'constant'
    675             );
    676 0 0         open OUT, '>', $node->{file_html}
    677             or die "can't open $node->{file_html} ($!).\n";
    678            
    679 0           $self->_format_head_main('Abstract Interface ' . $title);
    680 0           $self->_print_decl($node);
    681 0           $self->_print_comment($node);
    682 0           $self->_sep_line();
    683 0 0         $self->_format_index($node, \@list)
    684             unless ($self->{frameset});
    685 0           $self->_format_decl($node, \@list);
    686 0           $self->_format_tail(0);
    687            
    688 0           close OUT;
    689            
    690 0 0         if ($self->{frameset}) {
    691 0 0         open OUT, '>', "index.$node->{file_html}"
    692             or die "can't open index.$node->{file_html} ($!).\n";
    693            
    694 0           $self->_format_head_index($title);
    695 0           $self->_format_index($node, \@list);
    696 0           $self->_format_tail(0);
    697            
    698 0           close OUT;
    699             }
    700            
    701 0           $self->{scope} = $scope_save;
    702             }
    703            
    704             sub visitLocalInterface {
    705 0     0 0   my $self = shift;
    706 0           my ($node) = @_;
    707 0           my $scope_save = $self->{scope};
    708 0           $self->{scope} = $node->{full};
    709 0           $self->{scope} =~ s/^:://;
    710 0           my $title = $self->{scope};
    711 0           my @list = (
    712             'operation',
    713             'attribute',
    714             'type',
    715             'exception',
    716             'constant'
    717             );
    718 0 0         open OUT, '>', $node->{file_html}
    719             or die "can't open $node->{file_html} ($!).\n";
    720            
    721 0           $self->_format_head_main('Local Interface ' . $title);
    722 0           $self->_print_decl($node);
    723 0           $self->_print_comment($node);
    724 0           $self->_sep_line();
    725 0 0         $self->_format_index($node, \@list)
    726             unless ($self->{frameset});
    727 0           $self->_format_decl($node, \@list);
    728 0           $self->_format_tail(0);
    729            
    730 0           close OUT;
    731            
    732 0 0         if ($self->{frameset}) {
    733 0 0         open OUT, '>', "index.$node->{file_html}"
    734             or die "can't open index.$node->{file_html} ($!).\n";
    735            
    736 0           $self->_format_head_index($title);
    737 0           $self->_format_index($node, \@list);
    738 0           $self->_format_tail(0);
    739            
    740 0           close OUT;
    741             }
    742            
    743 0           $self->{scope} = $scope_save;
    744             }
    745            
    746             #
    747             # 3.9 Value Declaration
    748             #
    749            
    750             sub visitRegularValue {
    751 0     0 0   my $self = shift;
    752 0           my ($node) = @_;
    753 0           $self->{scope} = $node->{full};
    754 0           $self->{scope} =~ s/^:://;
    755 0           my $title = $self->{scope};
    756 0           my @list = (
    757             'operation',
    758             'attribute',
    759             'type',
    760             'exception',
    761             'constant',
    762             'state_member',
    763             'initializer'
    764             );
    765 0 0         open OUT, '>', $node->{file_html}
    766             or die "can't open $node->{file_html} ($!).\n";
    767            
    768 0           $self->_format_head_main('Value Type ' . $title);
    769 0           $self->_print_decl($node);
    770 0           $self->_print_comment($node);
    771 0           $self->_sep_line();
    772 0 0         $self->_format_index($node, \@list)
    773             unless ($self->{frameset});
    774 0           $self->_format_decl($node, \@list);
    775 0           $self->_format_tail(0);
    776            
    777 0           close OUT;
    778            
    779 0 0         if ($self->{frameset}) {
    780 0 0         open OUT, '>', "index.$node->{file_html}"
    781             or die "can't open index.$node->{file_html} ($!).\n";
    782            
    783 0           $self->_format_head_index($title);
    784 0           $self->_format_index($node, \@list);
    785 0           $self->_format_tail(0);
    786            
    787 0           close OUT;
    788             }
    789             }
    790            
    791             sub visitAbstractValue {
    792 0     0 0   my $self = shift;
    793 0           my ($node) = @_;
    794 0           $self->{scope} = $node->{full};
    795 0           $self->{scope} =~ s/^:://;
    796 0           my $title = $self->{scope};
    797 0           my @list = (
    798             'operation',
    799             'attribute',
    800             'type',
    801             'exception',
    802             'constant'
    803             );
    804 0 0         open OUT, '>', $node->{file_html}
    805             or die "can't open $node->{file_html} ($!).\n";
    806            
    807 0           $self->_format_head_main('Abstract Value Type ' . $title);
    808 0           $self->_print_decl($node);
    809 0           $self->_print_comment($node);
    810 0           $self->_sep_line();
    811 0 0         $self->_format_index($node, \@list)
    812             unless ($self->{frameset});
    813 0           $self->_format_decl($node, \@list);
    814 0           $self->_format_tail(0);
    815            
    816 0           close OUT;
    817            
    818 0 0         if ($self->{frameset}) {
    819 0 0         open OUT, '>', "index.$node->{file_html}"
    820             or die "can't open index.$node->{file_html} ($!).\n";
    821            
    822 0           $self->_format_head_index($title);
    823 0           $self->_format_index($node, \@list);
    824 0           $self->_format_tail(0);
    825            
    826 0           close OUT;
    827             }
    828             }
    829            
    830             #
    831             # 3.16 Event Declaration
    832             #
    833            
    834             sub visitRegularEvent {
    835 0     0 0   my $self = shift;
    836 0           my ($node) = @_;
    837 0           $self->{scope} = $node->{full};
    838 0           $self->{scope} =~ s/^:://;
    839 0           my $title = $self->{scope};
    840 0           my @list = (
    841             'operation',
    842             'attribute',
    843             'type',
    844             'exception',
    845             'constant',
    846             'state_member',
    847             'initializer'
    848             );
    849 0 0         open OUT, '>', $node->{file_html}
    850             or die "can't open $node->{file_html} ($!).\n";
    851            
    852 0           $self->_format_head_main('Event Type ' . $title);
    853 0           $self->_print_decl($node);
    854 0           $self->_print_comment($node);
    855 0           $self->_sep_line();
    856 0 0         $self->_format_index($node, \@list)
    857             unless ($self->{frameset});
    858 0           $self->_format_decl($node, \@list);
    859 0           $self->_format_tail(0);
    860            
    861 0           close OUT;
    862            
    863 0 0         if ($self->{frameset}) {
    864 0 0         open OUT, '>', "index.$node->{file_html}"
    865             or die "can't open index.$node->{file_html} ($!).\n";
    866            
    867 0           $self->_format_head_index($title);
    868 0           $self->_format_index($node, \@list);
    869 0           $self->_format_tail(0);
    870            
    871 0           close OUT;
    872             }
    873             }
    874            
    875             sub visitAbstractEvent {
    876 0     0 0   my $self = shift;
    877 0           my ($node) = @_;
    878 0           $self->{scope} = $node->{full};
    879 0           $self->{scope} =~ s/^:://;
    880 0           my $title = $self->{scope};
    881 0           my @list = (
    882             'operation',
    883             'attribute',
    884             'type',
    885             'exception',
    886             'constant'
    887             );
    888 0 0         open OUT, '>', $node->{file_html}
    889             or die "can't open $node->{file_html} ($!).\n";
    890            
    891 0           $self->_format_head_main('Abstract Event Type ' . $title);
    892 0           $self->_print_decl($node);
    893 0           $self->_print_comment($node);
    894 0           $self->_sep_line();
    895 0 0         $self->_format_index($node, \@list)
    896             unless ($self->{frameset});
    897 0           $self->_format_decl($node, \@list);
    898 0           $self->_format_tail(0);
    899            
    900 0           close OUT;
    901            
    902 0 0         if ($self->{frameset}) {
    903 0 0         open OUT, '>', "index.$node->{file_html}"
    904             or die "can't open index.$node->{file_html} ($!).\n";
    905            
    906 0           $self->_format_head_index($title);
    907 0           $self->_format_index($node, \@list);
    908 0           $self->_format_tail(0);
    909            
    910 0           close OUT;
    911             }
    912             }
    913            
    914             #
    915             # 3.17 Component Declaration
    916             #
    917            
    918             sub visitComponent {
    919 0     0 0   my $self = shift;
    920 0           my ($node) = @_;
    921 0           $self->{scope} = $node->{full};
    922 0           $self->{scope} =~ s/^:://;
    923 0           my $title = $self->{scope};
    924 0           my @list = (
    925             'provides',
    926             'uses',
    927             'publishes',
    928             'consumes',
    929             'attribute'
    930             );
    931 0 0         open OUT, '>', $node->{file_html}
    932             or die "can't open $node->{file_html} ($!).\n";
    933            
    934 0           $self->_format_head_main('Component ' . $title);
    935 0           $self->_print_decl($node);
    936 0           $self->_print_comment($node);
    937 0           $self->_sep_line();
    938 0 0         $self->_format_index($node, \@list)
    939             unless ($self->{frameset});
    940 0           $self->_format_decl($node, \@list);
    941 0           $self->_format_tail(0);
    942            
    943 0           close OUT;
    944            
    945 0 0         if ($self->{frameset}) {
    946 0 0         open OUT, '>', "index.$node->{file_html}"
    947             or die "can't open index.$node->{file_html} ($!).\n";
    948            
    949 0           $self->_format_head_index($title);
    950 0           $self->_format_index($node, \@list);
    951 0           $self->_format_tail(0);
    952            
    953 0           close OUT;
    954             }
    955             }
    956            
    957             #
    958             # 3.18 Home Declaration
    959             #
    960            
    961             sub visitHome {
    962 0     0 0   my $self = shift;
    963 0           my ($node) = @_;
    964 0           $self->{scope} = $node->{full};
    965 0           $self->{scope} =~ s/^:://;
    966 0           my $title = $self->{scope};
    967 0           my @list = (
    968             'operation',
    969             'attribute',
    970             'type',
    971             'exception',
    972             'constant',
    973             'factory',
    974             'finder'
    975             );
    976 0 0         open OUT, '>', $node->{file_html}
    977             or die "can't open $node->{file_html} ($!).\n";
    978            
    979 0           $self->_format_head_main('Home ' . $title);
    980 0           $self->_print_decl($node);
    981 0           $self->_print_comment($node);
    982 0           $self->_sep_line();
    983 0 0         $self->_format_index($node, \@list)
    984             unless ($self->{frameset});
    985 0           $self->_format_decl($node, \@list);
    986 0           $self->_format_tail(0);
    987            
    988 0           close OUT;
    989            
    990 0 0         if ($self->{frameset}) {
    991 0 0         open OUT, '>', "index.$node->{file_html}"
    992             or die "can't open index.$node->{file_html} ($!).\n";
    993            
    994 0           $self->_format_head_index($title);
    995 0           $self->_format_index($node, \@list);
    996 0           $self->_format_tail(0);
    997            
    998 0           close OUT;
    999             }
    1000             }
    1001            
    1002             1;
    1003