home *** CD-ROM | disk | FTP | other *** search
Perl Script | 1993-11-03 | 2.9 KB | 128 lines | [TEXT/MSWD] |
- #!/usr/local/bin/perl
- #
- # doc2texinfo : Converts Gnuplot .doc files to Texinfo format.
- #
- # George Ferguson, ferguson@cs.rochester.edu, 11 Feb 1991.
- #
- # Usage:
- # % doc2texinfo gnuplot.doc >gnuplot.texinfo
- # % makeinfo +fill-column 80 gnuplot.texinfo
- # Creates files "gnuplot.info" and "gnuplot.info-[123]".
- #
-
- $currentBook = $currentChapter = $currentSection = $currentSubsection = 0;
- $verbatim = $table = 0;
-
- while (<>) {
- if (/^([1-4]) (.*)$/) { # section heading
- $table = 0;
- &endVerbatim;
- $numNodes += 1;
- $nodeLevel[$numNodes] = $1;
- $nodeTitle[$numNodes] = $2;
- $nodeText[$numNodes] = "";
- if ($1 == 1) {
- $currentBook = $numNodes;
- } elsif ($1 == 2) {
- $currentChapter = $numNodes;
- $nodeMenu[$currentBook] .= "* $2::\n";
- } elsif ($1 == 3) {
- $currentSection = $numNodes;
- if ($nodeTitle[$currentChapter] eq "set-show") {
- $nodeTitle[$numNodes] = "set $2"; # override
- $nodeMenu[$currentChapter] .= "* set $2::\n";
- } else {
- $nodeMenu[$currentChapter] .= "* $2::\n";
- }
- } elsif ($1 == 4) {
- $currentSubsection = $numNodes;
- $nodeMenu[$currentSection] .= "* $2::\n";
- }
- } elsif (/^\?(.*)$/) { # index entry
- if ($1 ne "") {
- $nodeText[$numNodes] .= "\@cindex $1\n";
- }
- } elsif (/^@start table/) { # start table
- &startVerbatim;
- $table = 1;
- } elsif (/^@end table/) { # end table
- $table = 0;
- &endVerbatim;
- } elsif (/^#/ || /^%/) { # table entry
- next;
- } elsif (/^ ( ?)(.*)$/) { # text
- if ($1 eq " ") {
- &startVerbatim;
- } else {
- &endVerbatim;
- }
- $text = $2;
- $text =~ s/@/@@/g;
- $text =~ s/{/\@{/g;
- $text =~ s/}/\@}/g;
- $text =~ s/\`([^`]*)\`/@code{$1}/g;
- $nodeText[$numNodes] .= "$text\n";
- } elsif (/^$/) { # blank line
- &endVerbatim;
- $nodeText[$numNodes] .= "\n";
- }
- }
-
- # Print texinfo header
- print "\\input texinfo\n";
- print "@setfilename gnuplot.info\n";
- print "@settitle Gnuplot: An Interactive Plotting Program\n";
- print "\n";
- print "@node Top\n";
- print "@top Gnuplot";
- print "\n";
- print "$nodeText[1]";
- print "\@menu\n";
- print "$nodeMenu[1]";
- print "* General Index::\n";
- print "\@end menu\n";
- print "\n";
-
- # Now output all the nodes
- for ($i=2; $i <= $numNodes; $i++) {
- print "\@node $nodeTitle[$i]\n";
- if ($nodeLevel[$i] == 2) {
- print "\@chapter $nodeTitle[$i]\n";
- } elsif ($nodeLevel[$i] == 3) {
- print "\@section $nodeTitle[$i]\n";
- } elsif ($nodeLevel[$i] == 4) {
- print "\@subsection $nodeTitle[$i]\n";
- }
- print "$nodeText[$i]";
- if ($nodeMenu[$i] ne "") {
- print "\@menu\n";
- print $nodeMenu[$i];
- print "\@end menu\n";
- }
- print "\n";
- }
- # Print texinfo trailer
- print "\n";
- print "@node General Index\n";
- print "@appendix General Index\n";
- print "\n";
- print "@printindex cp\n";
- print "\n";
- print "@bye\n";
-
- #######################
-
- sub startVerbatim {
- if (!$verbatim) {
- $nodeText[$numNodes] .= "\@example\n";
- $verbatim = 1;
- }
- }
-
- sub endVerbatim {
- if ($verbatim && !$table) {
- $nodeText[$numNodes] .= "\@end example\n";
- $verbatim = 0;
- }
- }
-