Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
2 | pj | 1 | ## HTML output |
2 | # Copyright (C) 1993-1995 Ian Jackson. |
||
3 | |||
4 | # This file is free software; you can redistribute it and/or modify |
||
5 | # it under the terms of the GNU General Public License as published by |
||
6 | # the Free Software Foundation; either version 2, or (at your option) |
||
7 | # any later version. |
||
8 | |||
9 | # It is distributed in the hope that it will be useful, |
||
10 | # but WITHOUT ANY WARRANTY; without even the implied warranty of |
||
11 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||
12 | # GNU General Public License for more details. |
||
13 | |||
14 | # You should have received a copy of the GNU General Public License |
||
15 | # along with GNU Emacs; see the file COPYING. If not, write to |
||
16 | # the Free Software Foundation, Inc., 59 Temple Place - Suite 330, |
||
17 | # Boston, MA 02111-1307, USA. |
||
18 | |||
19 | # (Note: I do not consider works produced using these BFNN processing |
||
20 | # tools to be derivative works of the tools, so they are NOT covered |
||
21 | # by the GPL. However, I would appreciate it if you credited me if |
||
22 | # appropriate in any documents you format using BFNN.) |
||
23 | |||
24 | %saniarray= ('<','lt', '>','gt', '&','amp', '"','quot'); |
||
25 | |||
26 | sub html_init { |
||
27 | $html_prefix = './'.$prefix; |
||
28 | $html_prefix =~ s:^\.//:/:; |
||
29 | system('rm','-r',"$html_prefix.html"); |
||
30 | system('mkdir',"$html_prefix.html"); |
||
31 | open(HTML,">$html_prefix.html/index.html"); |
||
32 | print HTML "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">\n"; |
||
33 | print HTML "<html>\n"; |
||
34 | $html_needpara= -1; |
||
35 | $html_end=''; |
||
36 | chop($html_date=`date '+%d %B %Y'`); |
||
37 | chop($html_year=`date '+%Y'`); |
||
38 | } |
||
39 | |||
40 | sub html_startup { |
||
41 | print HTML <<END; |
||
42 | <head><title> |
||
43 | $user_title |
||
44 | </title> |
||
45 | <link rev="made" href="mailto:$user_authormail"> |
||
46 | <link rel="Contents" href="index.html"> |
||
47 | <link rel="Start" href="index.html"> |
||
48 | <META name="description" |
||
49 | content="Frequently asked questions and answers (FAQ) for FFTW."> |
||
50 | <link rel="Bookmark" title="FFTW FAQ" href="index.html"> |
||
51 | <LINK rel="Bookmark" title="FFTW Home Page" |
||
52 | href="http://theory.lcs.mit.edu/~fftw"> |
||
53 | <LINK rel="Bookmark" title="FFTW Manual" |
||
54 | href="http://theory.lcs.mit.edu/~fftw/doc/fftw_toc.html"> |
||
55 | </head><body text="#000000" bgcolor="#FFFFFF"><h1> |
||
56 | $user_title |
||
57 | </h1> |
||
58 | END |
||
59 | &html_readrefs($_[0]); |
||
60 | if (length($user_copyrightref)) { |
||
61 | local ($refn) = $qrefn{$user_copyrightref}; |
||
62 | if (!length($refn)) { |
||
63 | warn "unknown question (copyright) `$user_copyrightref'"; |
||
64 | } |
||
65 | $refn =~ m/(\d+)\.(\d+)/; |
||
66 | local ($s,$n) = ($1,$2); |
||
67 | $html_copyrighthref= ($s == $html_sectionn)?'':"section$s.html"; |
||
68 | $html_copyrighthref.= "#$qn2ref{$s,$n}"; |
||
69 | } |
||
70 | } |
||
71 | |||
72 | sub html_close { |
||
73 | print HTML $html_end,"<address>\n$user_author\n"; |
||
74 | print HTML "- $html_date\n</address><br>\n"; |
||
75 | print HTML "Extracted from $user_title,\n"; |
||
76 | print HTML "<A href=\"$html_copyrighthref\">" if length($html_copyrighthref); |
||
77 | print HTML "Copyright © $html_year $user_copyholder."; |
||
78 | print HTML "</A>" if length($html_copyrighthref); |
||
79 | print HTML "\n</body></html>\n"; |
||
80 | close(HTML); |
||
81 | } |
||
82 | |||
83 | sub html_startmajorheading { |
||
84 | local ($ref, $this,$next,$back) = @_; |
||
85 | local ($nextt,$backt); |
||
86 | $this =~ s/^Section /section/; $html_sectionn= $ref; |
||
87 | $next =~ s/^Section /section/ && ($nextt= $sn2title{$'}); |
||
88 | $back =~ s/^Section /section/ ? ($backt= $sn2title{$'}) : ($back=''); |
||
89 | if ($html_sectionn) { |
||
90 | &html_close; |
||
91 | open(HTML,">$html_prefix.html/$this.html"); |
||
92 | print HTML "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 3.2//EN\">\n"; |
||
93 | print HTML "<html>\n"; |
||
94 | $html_end= "<hr>\n"; |
||
95 | $html_end.= "Next: <a href=\"$next.html\" rel=precedes>$nextt</a>.<br>\n" |
||
96 | if $next; |
||
97 | $html_end.= "Back: <a href=\"$back.html\" rev=precedes>$backt</a>.<br>\n" |
||
98 | if $back; |
||
99 | $html_end.= "<a href=\"index.html\" rev=subdocument>"; |
||
100 | $html_end.= "Return to contents</a>.<p>\n"; |
||
101 | print HTML <<END; |
||
102 | <head><title> |
||
103 | $user_brieftitle - Section $html_sectionn |
||
104 | </title> |
||
105 | <link rev="made" href="mailto:$user_authormail"> |
||
106 | <link rel="Contents" href="index.html"> |
||
107 | <link rel="Start" href="index.html"> |
||
108 | END |
||
109 | print HTML "<link rel=\"Next\" href=\"$next.html\">" if $next; |
||
110 | print HTML "<link rel=\"Previous\" href=\"$back.html\">" if $back; |
||
111 | print HTML <<END; |
||
112 | <link rel="Bookmark" title="FFTW FAQ" href="index.html"> |
||
113 | </head><body text="#000000" bgcolor="#FFFFFF"><h1> |
||
114 | $user_brieftitle - Section $html_sectionn <br> |
||
115 | END |
||
116 | $html_needpara= -1; |
||
117 | } |
||
118 | else { |
||
119 | print HTML "\n<h1>\n"; |
||
120 | $html_needpara=-1; |
||
121 | } |
||
122 | } |
||
123 | |||
124 | sub html_endmajorheading { |
||
125 | print HTML "\n</h1>\n\n"; |
||
126 | $html_needpara=-1; |
||
127 | } |
||
128 | |||
129 | sub html_startminorheading { |
||
130 | local ($ref, $this) = @_; |
||
131 | $html_needpara=0; |
||
132 | $this =~ m/^Question (\d+)\.(\d+)/; |
||
133 | local ($s,$n) = ($1,$2); |
||
134 | print HTML "\n<h2><A name=\"$qn2ref{$s,$n}\">\n"; |
||
135 | } |
||
136 | |||
137 | sub html_endminorheading { |
||
138 | print HTML "\n</A></h2>\n\n"; |
||
139 | $html_needpara=-1; |
||
140 | } |
||
141 | |||
142 | sub html_newsgroup { &arg('newsgroup'); } |
||
143 | sub html_endnewsgroup { &endarg('newsgroup'); } |
||
144 | sub html_do_newsgroup { |
||
145 | print HTML "<A href=\"news:$_[0]\"><code>$_[0]</code></A>"; |
||
146 | } |
||
147 | |||
148 | sub html_email { &arg('email'); } |
||
149 | sub html_endemail { &endarg('email'); } |
||
150 | sub html_do_email { |
||
151 | print HTML "<A href=\"mailto:$_[0]\"><code>$_[0]</code></A>"; |
||
152 | } |
||
153 | |||
154 | sub html_courier { print HTML "<code>" ; } |
||
155 | sub html_endcourier { print HTML "</code>"; } |
||
156 | sub html_italic { print HTML "<i>" ; } |
||
157 | sub html_enditalic { print HTML "</i>" ; } |
||
158 | |||
159 | sub html_docref { &arg('docref'); } |
||
160 | sub html_enddocref { &endarg('docref'); } |
||
161 | sub html_do_docref { |
||
162 | if (!defined($html_refval{$_[0]})) { |
||
163 | warn "undefined HTML reference $_[0]"; |
||
164 | $html_refval{$n}='UNDEFINED'; |
||
165 | } |
||
166 | print HTML "<A href=\"$html_refval{$_[0]}\">"; |
||
167 | &recurse($_[0]); |
||
168 | print HTML "</A>"; |
||
169 | } |
||
170 | |||
171 | sub html_readrefs { |
||
172 | local ($p); |
||
173 | open(HTMLREFS,"<$_[0]") || (warn("failed to open HTML refs $_[0]: $!"),return); |
||
174 | while(<HTMLREFS>) { |
||
175 | next if m/^\\\s/; |
||
176 | s/\s*\n$//; |
||
177 | if (s/^\\prefix\s*//) { |
||
178 | $p= $'; next; |
||
179 | } elsif (s/^\s*(\S.*\S)\s*\\\s*//) { |
||
180 | $_=$1; $v=$'; |
||
181 | s/\\\\/\\/g; |
||
182 | $html_refval{$_}= $p.$v; |
||
183 | } else { |
||
184 | warn("ununderstood line in HTML refs >$_<"); |
||
185 | } |
||
186 | } |
||
187 | close(HTMLREFS); |
||
188 | } |
||
189 | |||
190 | sub html_ftpsilent { &arg('ftpsilent'); } |
||
191 | sub html_endftpsilent { &endarg('ftpsilent'); } |
||
192 | sub html_do_ftpsilent { |
||
193 | if ($_[0] =~ m/:/) { |
||
194 | $html_ftpsite= $`; |
||
195 | $html_ftpdir= $'.'/'; |
||
196 | } else { |
||
197 | $html_ftpsite= $_[0]; |
||
198 | $html_ftpdir= ''; |
||
199 | } |
||
200 | } |
||
201 | |||
202 | sub html_ftpon { &arg('ftpon'); } |
||
203 | sub html_endftpon { &endarg('ftpon'); } |
||
204 | sub html_do_ftpon { |
||
205 | #print STDERR "ftpon($_[0])\n"; |
||
206 | $html_ftpsite= $_[0]; $html_ftpdir= ''; |
||
207 | print HTML "<code>"; |
||
208 | &recurse($_[0]); |
||
209 | print HTML "</code>"; |
||
210 | } |
||
211 | |||
212 | sub html_ftpin { &arg('ftpin'); } |
||
213 | sub html_endftpin { &endarg('ftpin'); } |
||
214 | sub html_do_ftpin { |
||
215 | #print STDERR "ftpin($_[0])\n"; |
||
216 | print HTML "<A href=\"ftp://$html_ftpsite$html_ftpdir$_[0]\"><code>"; |
||
217 | &recurse($_[0]); |
||
218 | print HTML "</code></A>"; |
||
219 | } |
||
220 | |||
221 | sub html_text { |
||
222 | print HTML "\n<p>\n" if $html_needpara > 0; |
||
223 | $html_needpara=0; |
||
224 | $html_stuff= &html_sanitise($_[0]); |
||
225 | while ($html_stuff =~ s/^(.{40,70}) //) { |
||
226 | print HTML "$1\n"; |
||
227 | } |
||
228 | print HTML $html_stuff; |
||
229 | } |
||
230 | |||
231 | sub html_tab { |
||
232 | $htmltabignore++ || warn "html tab ignored"; |
||
233 | } |
||
234 | |||
235 | sub html_newline { print HTML "<br>\n" ; } |
||
236 | sub html_startverbatim { print HTML "<pre>\n" ; } |
||
237 | sub html_verbatim { print HTML &html_sanitise($_[0]),"\n"; } |
||
238 | sub html_endverbatim { print HTML "</pre>\n" ; $html_needpara= -1; } |
||
239 | |||
240 | sub html_endpara { |
||
241 | $html_needpara || $html_needpara++; |
||
242 | } |
||
243 | |||
244 | sub html_finish { |
||
245 | &html_close; |
||
246 | } |
||
247 | |||
248 | sub html_startindex { |
||
249 | print HTML "<ul>\n"; |
||
250 | } |
||
251 | |||
252 | sub html_endindex { |
||
253 | print HTML "</ul><hr>\n"; |
||
254 | } |
||
255 | |||
256 | sub html_startindexitem { |
||
257 | local ($ref,$qval) = @_; |
||
258 | $qval =~ m/Q(\d+)\.(\d+)/; |
||
259 | local ($s,$n) = ($1,$2); |
||
260 | print HTML "<li><a href=\""; |
||
261 | print HTML ($s == $html_sectionn)?'':"section$s.html"; |
||
262 | print HTML "#$qn2ref{$s,$n}\" rel=subdocument>Q$s.$n. "; |
||
263 | $html_indexunhead=''; |
||
264 | } |
||
265 | |||
266 | sub html_startindexmainitem { |
||
267 | local ($ref,$s) = @_; |
||
268 | $s =~ m/\d+/; $s= $&; |
||
269 | print HTML "<br><br>" if ($s > 1); |
||
270 | print HTML "<li><b><font size=\"+2\"><a href=\"section$s.html\" rel=subdocument>Section $s. "; |
||
271 | $html_indexunhead='</font></b>'; |
||
272 | } |
||
273 | |||
274 | sub html_endindexitem { |
||
275 | print HTML "</a>$html_indexunhead\n"; |
||
276 | } |
||
277 | |||
278 | sub html_startlist { |
||
279 | print HTML "\n"; |
||
280 | $html_itemend="<ul>"; |
||
281 | } |
||
282 | |||
283 | sub html_endlist { |
||
284 | print HTML "$html_itemend\n</ul>\n"; |
||
285 | $html_needpara=-1 |
||
286 | } |
||
287 | |||
288 | sub html_item { |
||
289 | print HTML "$html_itemend\n<li>"; |
||
290 | $html_itemend=""; |
||
291 | $html_needpara=-1; |
||
292 | } |
||
293 | |||
294 | sub html_startpackedlist { |
||
295 | print HTML "\n"; |
||
296 | $html_itemend="<dir>"; |
||
297 | } |
||
298 | |||
299 | sub html_endpackedlist { |
||
300 | print HTML "$html_itemend\n</dir>\n"; |
||
301 | $html_needpara=-1; |
||
302 | } |
||
303 | |||
304 | sub html_packeditem { |
||
305 | print HTML "$html_itemend\n<li>"; |
||
306 | $html_itemend=""; |
||
307 | $html_needpara=-1; |
||
308 | } |
||
309 | |||
310 | sub html_startindent { print HTML "<blockquote>\n"; } |
||
311 | sub html_endindent { print HTML "</blockquote>\n"; } |
||
312 | |||
313 | sub html_pageref { |
||
314 | local ($ref,$sq) = @_; |
||
315 | $sq =~ m/(\d+)\.(\d+)/; |
||
316 | local ($s,$n) = ($1,$2); |
||
317 | print HTML "<A href=\""; |
||
318 | print HTML ($s == $html_sectionn)?'':"section$s.html"; |
||
319 | print HTML "#$qn2ref{$s,$n}\">Q$sq \`"; |
||
320 | } |
||
321 | |||
322 | sub html_endpageref { |
||
323 | print HTML "'</A>"; |
||
324 | } |
||
325 | |||
326 | sub html_sanitise { |
||
327 | local ($in) = @_; |
||
328 | local ($out); |
||
329 | while ($in =~ m/[<>&"]/) { |
||
330 | $out.= $`. '&'. $saniarray{$&}. ';'; |
||
331 | $in=$'; |
||
332 | } |
||
333 | $out.= $in; |
||
334 | $out; |
||
335 | } |
||
336 | |||
337 | 1; |