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 " |
||||
97 | 0 | 0 | unless ($frameset) { | ||||
98 | 0 | 0 | print OUT " |
||||
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 " \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 "
|
|||||
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 "
|
|||||
195 | 0 | foreach (sort keys %{$node->{$idx}}) { | |||||
0 | |||||||
196 | 0 | my $child = $node->{$idx}->{$_}; | |||||
197 | 0 | print OUT " |
|||||
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 "
|
|||||
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 " |
|||||
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 "
|
|||||
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 "
|
|||||
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 " |
|||||
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 " | |||||
403 | 0 | print OUT " | |||||
404 | 0 | print OUT " \n"; | |||||
405 | 0 | print OUT " \n"; | |||||
406 | 0 | print OUT " \n"; | |||||
407 | 0 | print OUT " \n"; | |||||
408 | 0 | print OUT " |
|||||
409 | 0 | print OUT " \n"; | |||||
410 | 0 | print OUT " Sorry!\n"; |
|||||
411 | 0 | print OUT " This page must be viewed by a browser that is capable of viewing frames.\n"; |
|||||
412 | 0 | print OUT " \n"; | |||||
413 | 0 | 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 " | |||||
462 | 0 | print OUT " \n"; | |||||
463 | 0 | print OUT " \n"; | |||||
464 | 0 | print OUT "
|
|||||
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 " |
|||||
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 "
|
|||||
517 | 0 | while (my ($key, $val) = each %{$main::global->{index_entry}}) { | |||||
0 | |||||||
518 | 0 | print OUT " |
|||||
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 |