| 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 |