Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
moving graphicator from teshsuite to tools/graphicator/
[simgrid.git] / tools / doxygen / toc_create.pl
1 #!/usr/bin/perl -w
2
3 use strict;
4
5 ($#ARGV >= 1) or die "Usage: toc_create.pl <input-doc-file>+";
6
7 sub handle_file {
8   my $infile = shift;
9   open FILE,$infile;
10
11   my(@toc);
12   my($level,$label,$name);
13
14   while(my $line=<FILE>) {
15     chomp $line;
16     if($line=~/\\section\s*(\S\S*)\s*(.*)$/) {
17 #       print "$line\n";
18         $label = $1;
19         $name = $2;
20         $level=0;
21 #       print "$label : $name\n";
22         push @toc,[$level,$label,$name];
23     } elsif($line=~/\\subsection\s*(\S\S*)\s*(.*)$/) {
24 #       print "$line\n";
25         $label = $1;
26         $name = $2;
27         $level=1;
28 #       print "\t$label : $name\n";
29         push @toc,[$level,$label,$name];
30     } elsif($line=~/\\subsubsection\s*(\S\S*)\s*(.*)$/) {
31 #       print "$line\n";
32         $label = $1;
33         $name = $2;
34         $level=2;
35 #       print "\t\t$label : $name\n";
36         push @toc,[$level,$label,$name];
37     }
38   }
39   close FILE;
40
41   my $outfile = "$infile.toc";
42   $outfile =~ s|\./||g;
43   $outfile =~ s|\.\./||g;
44   $outfile =~ s|/|_|g;
45   $outfile = ".$outfile";
46   print "Create a TOC for $infile (in $outfile)\n";
47   open OUTPUT,"> ./$outfile";
48   my($current_level)=-1;
49   my($entry);
50   print OUTPUT "<!-- Automatically generated table of contents --!>\n";
51   print OUTPUT "<div class=\"toc\">\n";
52   print OUTPUT "<div class=\"tocTitle\">Table of content</div>\n";
53   foreach $entry (@toc) {
54       ($level,$label,$name) = @$entry;
55
56       while($current_level<$level) {
57           print OUTPUT "<ol type=\"1\">\n";
58           $current_level++;
59       } 
60       while($current_level>$level) {
61           print OUTPUT "</ol>\n";
62           $current_level--;
63       }
64       foreach (1..$current_level) {
65           print OUTPUT "\t";
66       }
67       print OUTPUT "<li> <a href=\"#$label\">$name</a>\n";
68   }
69
70   while($current_level>-1) {
71       print OUTPUT "</ol>\n";
72       $current_level--;
73   }
74   print OUTPUT "</div>\n";
75   print OUTPUT "<!-- End of automatically generated table of contents --!>\n";
76   close OUTPUT;
77 } # sub handle_file
78
79
80 map { handle_file($_) } @ARGV;