Annotation of OpenXM_contrib/gnuplot/docs/doc2texi.pl, Revision 1.1.1.1
1.1 maekawa 1: #!/usr/local/bin/perl
2: #
3: # $Id: doc2texi.pl,v 1.5 1996/12/08 12:29:25 drd Exp $
4: #
5: # doc2texi.pl : Converts Gnuplot .doc files to Texinfo format.
6: #
7: # George Ferguson, ferguson@cs.rochester.edu, 11 Feb 1991.
8: #
9: # Usage:
10: # % doc2texi.pl gnuplot.doc >gnuplot.texinfo
11: # % makeinfo --fill-column 80 gnuplot.texinfo
12: # Creates files "gnuplot.info" and "gnuplot.info-[123]".
13: #
14:
15: $currentBook = $currentChapter = $currentSection = $currentSubsection = 0;
16: $verbatim = $table = 0;
17:
18: while (<>) {
19: if (/^([1-4]) (.*)$/) { # section heading
20: $table = 0;
21: &endVerbatim;
22: $numNodes += 1;
23: $nodeLevel[$numNodes] = $1;
24: $nodeTitle[$numNodes] = $2;
25: $nodeText[$numNodes] = "";
26: if ($1 == 1) {
27: $currentBook = $numNodes;
28: } elsif ($1 == 2) {
29: $currentChapter = $numNodes;
30: $nodeMenu[$currentBook] .= "* $2::\n";
31: } elsif ($1 == 3) {
32: $currentSection = $numNodes;
33: if ($nodeTitle[$currentChapter] eq "set-show") {
34: $nodeTitle[$numNodes] = "set $2"; # override
35: $nodeMenu[$currentChapter] .= "* set $2::\n";
36: } else {
37: $nodeMenu[$currentChapter] .= "* $2::\n";
38: }
39: } elsif ($1 == 4) {
40: $currentSubsection = $numNodes;
41: $nodeMenu[$currentSection] .= "* $2::\n";
42: }
43: } elsif (/^\?(.*)$/) { # index entry
44: if ($1 ne "") {
45: $nodeText[$numNodes] .= "\@cindex $1\n";
46: }
47: } elsif (/^\@start table/) { # start table
48: &startVerbatim;
49: $table = 1;
50: } elsif (/^\@end table/) { # end table
51: $table = 0;
52: &endVerbatim;
53: } elsif (/^#/ || /^%/) { # table entry
54: next;
55: } elsif (/^ ( ?)(.*)$/) { # text
56: if ($1 eq " ") {
57: &startVerbatim;
58: } else {
59: &endVerbatim;
60: }
61: $text = $2;
62: $text =~ s/@/@@/g;
63: $text =~ s/{/\@{/g;
64: $text =~ s/}/\@}/g;
65: $text =~ s/\`([^`]*)\`/\@code{$1}/g;
66: $nodeText[$numNodes] .= "$text\n";
67: } elsif (/^$/) { # blank line
68: &endVerbatim;
69: $nodeText[$numNodes] .= "\n";
70: }
71: }
72:
73: # Print texinfo header
74: print "\\input texinfo\n";
75: print "\@setfilename gnuplot.info\n";
76: print "\@settitle Gnuplot: An Interactive Plotting Program\n";
77: print "\n";
78: print "\@node Top\n";
79: print "\@top Gnuplot";
80: print "\n";
81: print "$nodeText[1]";
82: print "\@menu\n";
83: print "$nodeMenu[1]";
84: print "* General Index::\n";
85: print "\@end menu\n";
86: print "\n";
87:
88: # Now output all the nodes
89: for ($i=2; $i <= $numNodes; $i++) {
90: print "\@node $nodeTitle[$i]\n";
91: if ($nodeLevel[$i] == 2) {
92: print "\@chapter $nodeTitle[$i]\n";
93: } elsif ($nodeLevel[$i] == 3) {
94: print "\@section $nodeTitle[$i]\n";
95: } elsif ($nodeLevel[$i] == 4) {
96: print "\@subsection $nodeTitle[$i]\n";
97: }
98: print "$nodeText[$i]";
99: if ($nodeMenu[$i] ne "") {
100: print "\@menu\n";
101: print $nodeMenu[$i];
102: print "\@end menu\n";
103: }
104: print "\n";
105: }
106: # Print texinfo trailer
107: print "\n";
108: print "\@node General Index\n";
109: print "\@appendix General Index\n";
110: print "\n";
111: print "\@printindex cp\n";
112: print "\n";
113: print "\@bye\n";
114:
115: #######################
116:
117: sub startVerbatim {
118: if (!$verbatim) {
119: $nodeText[$numNodes] .= "\@example\n";
120: $verbatim = 1;
121: }
122: }
123:
124: sub endVerbatim {
125: if ($verbatim && !$table) {
126: $nodeText[$numNodes] .= "\@end example\n";
127: $verbatim = 0;
128: }
129: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>