1module RDoc
2module Page
3
4FONTS = "\"Bitstream Vera Sans\", Verdana, Arial, Helvetica, sans-serif"
5
6STYLE = <<CSS
7a {
8  color: #00F;
9  text-decoration: none;
10}
11
12a:hover {
13  color: #77F;
14  text-decoration: underline;
15}
16
17body, td, p {
18  font-family: %fonts%;
19  background: #FFF;
20  color: #000;
21  margin: 0px;
22  font-size: small;
23}
24
25#content {
26  margin: 2em;
27}
28
29#description p {
30  margin-bottom: 0.5em;
31}
32
33.sectiontitle {
34  margin-top: 1em;
35  margin-bottom: 1em;
36  padding: 0.5em;
37  padding-left: 2em;
38  background: #005;
39  color: #FFF;
40  font-weight: bold;
41  border: 1px dotted black;
42}
43
44.attr-rw {
45  padding-left: 1em;
46  padding-right: 1em;
47  text-align: center;
48  color: #055;
49}
50
51.attr-name {
52  font-weight: bold;
53}
54
55.attr-desc {
56}
57
58.attr-value {
59  font-family: monospace;
60}
61
62.file-title-prefix {
63  font-size: large;
64}
65
66.file-title {
67  font-size: large;
68  font-weight: bold;
69  background: #005;
70  color: #FFF;
71}
72
73.banner {
74  background: #005;
75  color: #FFF;
76  border: 1px solid black;
77  padding: 1em;
78}
79
80.banner td {
81  background: transparent;
82  color: #FFF;
83}
84
85h1 a, h2 a, .sectiontitle a, .banner a {
86  color: #FF0;
87}
88
89h1 a:hover, h2 a:hover, .sectiontitle a:hover, .banner a:hover {
90  color: #FF7;
91}
92
93.dyn-source {
94  display: none;
95  background: #FFE;
96  color: #000;
97  border: 1px dotted black;
98  margin: 0.5em 2em 0.5em 2em;
99  padding: 0.5em;
100}
101
102.dyn-source .cmt {
103  color: #00F;
104  font-style: italic;
105}
106
107.dyn-source .kw {
108  color: #070;
109  font-weight: bold;
110}
111
112.method {
113  margin-left: 1em;
114  margin-right: 1em;
115  margin-bottom: 1em;
116}
117
118.description pre {
119  padding: 0.5em;
120  border: 1px dotted black;
121  background: #FFE;
122}
123
124.method .title {
125  font-family: monospace;
126  font-size: large;
127  border-bottom: 1px dashed black;
128  margin-bottom: 0.3em;
129  padding-bottom: 0.1em;
130}
131
132.method .description, .method .sourcecode {
133  margin-left: 1em;
134}
135
136.description p, .sourcecode p {
137  margin-bottom: 0.5em;
138}
139
140.method .sourcecode p.source-link {
141  text-indent: 0em;
142  margin-top: 0.5em;
143}
144
145.method .aka {
146  margin-top: 0.3em;
147  margin-left: 1em;
148  font-style: italic;
149  text-indent: 2em;
150}
151
152h1 {
153  padding: 1em;
154  border: 1px solid black;
155  font-size: x-large;
156  font-weight: bold;
157  color: #FFF;
158  background: #007;
159}
160
161h2 {
162  padding: 0.5em 1em 0.5em 1em;
163  border: 1px solid black;
164  font-size: large;
165  font-weight: bold;
166  color: #FFF;
167  background: #009;
168}
169
170h3, h4, h5, h6 {
171  padding: 0.2em 1em 0.2em 1em;
172  border: 1px dashed black;
173  color: #000;
174  background: #AAF;
175}
176
177.sourcecode > pre {
178  padding: 0.5em;
179  border: 1px dotted black;
180  background: #FFE;
181}
182
183CSS
184
185XHTML_PREAMBLE = %{<?xml version="1.0" encoding="%charset%"?>
186<!DOCTYPE html
187     PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
188     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
189}
190
191HEADER = XHTML_PREAMBLE + <<ENDHEADER
192<html>
193  <head>
194    <title>%title%</title>
195    <meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
196    <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" />
197
198    <script language="JavaScript" type="text/javascript">
199    // <![CDATA[
200
201        function toggleSource( id )
202        {
203          var elem
204          var link
205
206          if( document.getElementById )
207          {
208            elem = document.getElementById( id )
209            link = document.getElementById( "l_" + id )
210          }
211          else if ( document.all )
212          {
213            elem = eval( "document.all." + id )
214            link = eval( "document.all.l_" + id )
215          }
216          else
217            return false;
218
219          if( elem.style.display == "block" )
220          {
221            elem.style.display = "none"
222            link.innerHTML = "show source"
223          }
224          else
225          {
226            elem.style.display = "block"
227            link.innerHTML = "hide source"
228          }
229        }
230
231        function openCode( url )
232        {
233          window.open( url, "SOURCE_CODE", "width=400,height=400,scrollbars=yes" )
234        }
235      // ]]>
236    </script>
237  </head>
238
239  <body>
240ENDHEADER
241
242FILE_PAGE = <<HTML
243<table border='0' cellpadding='0' cellspacing='0' width="100%" class='banner'>
244  <tr><td>
245    <table width="100%" border='0' cellpadding='0' cellspacing='0'><tr>
246      <td class="file-title" colspan="2"><span class="file-title-prefix">File</span><br />%short_name%</td>
247      <td align="right">
248        <table border='0' cellspacing="0" cellpadding="2">
249          <tr>
250            <td>Path:</td>
251            <td>%full_path%
252IF:cvsurl
253              &nbsp;(<a href="%cvsurl%">CVS</a>)
254ENDIF:cvsurl
255            </td>
256          </tr>
257          <tr>
258            <td>Modified:</td>
259            <td>%dtm_modified%</td>
260          </tr>
261        </table>
262      </td></tr>
263    </table>
264  </td></tr>
265</table><br>
266HTML
267
268###################################################################
269
270CLASS_PAGE = <<HTML
271<table width="100%" border='0' cellpadding='0' cellspacing='0' class='banner'><tr>
272  <td class="file-title"><span class="file-title-prefix">%classmod%</span><br />%full_name%</td>
273  <td align="right">
274    <table cellspacing=0 cellpadding=2>
275      <tr valign="top">
276        <td>In:</td>
277        <td>
278START:infiles
279HREF:full_path_url:full_path:
280IF:cvsurl
281&nbsp;(<a href="%cvsurl%">CVS</a>)
282ENDIF:cvsurl
283END:infiles
284        </td>
285      </tr>
286IF:parent
287    <tr>
288      <td>Parent:</td>
289      <td>
290IF:par_url
291        <a href="%par_url%">
292ENDIF:par_url
293%parent%
294IF:par_url
295         </a>
296ENDIF:par_url
297     </td>
298   </tr>
299ENDIF:parent
300         </table>
301        </td>
302        </tr>
303      </table>
304HTML
305
306###################################################################
307
308METHOD_LIST = <<HTML
309  <div id="content">
310IF:diagram
311  <table cellpadding='0' cellspacing='0' border='0' width="100%"><tr><td align="center">
312    %diagram%
313  </td></tr></table>
314ENDIF:diagram
315
316IF:description
317  <div class="description">%description%</div>
318ENDIF:description
319
320IF:requires
321  <div class="sectiontitle">Required Files</div>
322  <ul>
323START:requires
324  <li>HREF:aref:name:</li>
325END:requires
326  </ul>
327ENDIF:requires
328
329IF:toc
330  <div class="sectiontitle">Contents</div>
331  <ul>
332START:toc
333  <li><a href="#%href%">%secname%</a></li>
334END:toc
335  </ul>
336ENDIF:toc
337
338IF:methods
339  <div class="sectiontitle">Methods</div>
340  <ul>
341START:methods
342  <li>HREF:aref:name:</li>
343END:methods
344  </ul>
345ENDIF:methods
346
347IF:includes
348<div class="sectiontitle">Included Modules</div>
349<ul>
350START:includes
351  <li>HREF:aref:name:</li>
352END:includes
353</ul>
354ENDIF:includes
355
356START:sections
357IF:sectitle
358<div class="sectiontitle"><a nem="%secsequence%">%sectitle%</a></div>
359IF:seccomment
360<div class="description">
361%seccomment%
362</div>
363ENDIF:seccomment
364ENDIF:sectitle
365
366IF:classlist
367  <div class="sectiontitle">Classes and Modules</div>
368  %classlist%
369ENDIF:classlist
370
371IF:constants
372  <div class="sectiontitle">Constants</div>
373  <table border='0' cellpadding='5'>
374START:constants
375  <tr valign='top'>
376    <td class="attr-name">%name%</td>
377    <td>=</td>
378    <td class="attr-value">%value%</td>
379  </tr>
380IF:desc
381  <tr valign='top'>
382    <td>&nbsp;</td>
383    <td colspan="2" class="attr-desc">%desc%</td>
384  </tr>
385ENDIF:desc
386END:constants
387  </table>
388ENDIF:constants
389
390IF:attributes
391  <div class="sectiontitle">Attributes</div>
392  <table border='0' cellpadding='5'>
393START:attributes
394  <tr valign='top'>
395    <td class='attr-rw'>
396IF:rw
397[%rw%]
398ENDIF:rw
399    </td>
400    <td class='attr-name'>%name%</td>
401    <td class='attr-desc'>%a_desc%</td>
402  </tr>
403END:attributes
404  </table>
405ENDIF:attributes
406
407IF:method_list
408START:method_list
409IF:methods
410<div class="sectiontitle">%type% %category% methods</div>
411START:methods
412<div class="method">
413  <div class="title">
414IF:callseq
415    <a name="%aref%"></a><b>%callseq%</b>
416ENDIF:callseq
417IFNOT:callseq
418    <a name="%aref%"></a><b>%name%</b>%params%
419ENDIF:callseq
420IF:codeurl
421[ <a href="javascript:openCode('%codeurl%')">source</a> ]
422ENDIF:codeurl
423  </div>
424IF:m_desc
425  <div class="description">
426  %m_desc%
427  </div>
428ENDIF:m_desc
429IF:aka
430<div class="aka">
431  This method is also aliased as
432START:aka
433  <a href="%aref%">%name%</a>
434END:aka
435</div>
436ENDIF:aka
437IF:sourcecode
438<div class="sourcecode">
439  <p class="source-link">[ <a href="javascript:toggleSource('%aref%_source')" id="l_%aref%_source">show source</a> ]</p>
440  <div id="%aref%_source" class="dyn-source">
441<pre>
442%sourcecode%
443</pre>
444  </div>
445</div>
446ENDIF:sourcecode
447</div>
448END:methods
449ENDIF:methods
450END:method_list
451ENDIF:method_list
452END:sections
453</div>
454HTML
455
456FOOTER = <<ENDFOOTER
457  </body>
458</html>
459ENDFOOTER
460
461BODY = HEADER + <<ENDBODY
462  !INCLUDE! <!-- banner header -->
463
464  <div id="bodyContent">
465    #{METHOD_LIST}
466  </div>
467
468  #{FOOTER}
469ENDBODY
470
471########################## Source code ##########################
472
473SRC_PAGE = XHTML_PREAMBLE + <<HTML
474<html>
475<head><title>%title%</title>
476<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
477<style>
478.ruby-comment    { color: green; font-style: italic }
479.ruby-constant   { color: #4433aa; font-weight: bold; }
480.ruby-identifier { color: #222222;  }
481.ruby-ivar       { color: #2233dd; }
482.ruby-keyword    { color: #3333FF; font-weight: bold }
483.ruby-node       { color: #777777; }
484.ruby-operator   { color: #111111;  }
485.ruby-regexp     { color: #662222; }
486.ruby-value      { color: #662222; font-style: italic }
487  .kw { color: #3333FF; font-weight: bold }
488  .cmt { color: green; font-style: italic }
489  .str { color: #662222; font-style: italic }
490  .re  { color: #662222; }
491</style>
492</head>
493<body bgcolor="white">
494<pre>%code%</pre>
495</body>
496</html>
497HTML
498
499########################## Index ################################
500
501FR_INDEX_BODY = <<HTML
502!INCLUDE!
503HTML
504
505FILE_INDEX = XHTML_PREAMBLE + <<HTML
506<html>
507<head>
508<meta http-equiv="Content-Type" content="text/html; charset=%charset%">
509<style>
510<!--
511  body {
512    background-color: #EEE;
513    font-family: #{FONTS};
514    color: #000;
515    margin: 0px;
516  }
517  .banner {
518    background: #005;
519    color: #FFF;
520    padding: 0.2em;
521    font-size: small;
522    font-weight: bold;
523    text-align: center;
524  }
525  .entries {
526    margin: 0.25em 1em 0 1em;
527    font-size: x-small;
528  }
529  a {
530    color: #00F;
531    text-decoration: none;
532    white-space: nowrap;
533  }
534  a:hover {
535    color: #77F;
536    text-decoration: underline;
537  }
538-->
539</style>
540<base target="docwin">
541</head>
542<body>
543<div class="banner">%list_title%</div>
544<div class="entries">
545START:entries
546<a href="%href%">%name%</a><br>
547END:entries
548</div>
549</body></html>
550HTML
551
552CLASS_INDEX = FILE_INDEX
553METHOD_INDEX = FILE_INDEX
554
555INDEX = XHTML_PREAMBLE + <<HTML
556<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
557<head>
558  <title>%title%</title>
559  <meta http-equiv="Content-Type" content="text/html; charset=%charset%">
560</head>
561
562<frameset cols="20%,*">
563    <frameset rows="15%,35%,50%">
564        <frame src="fr_file_index.html"   title="Files" name="Files" />
565        <frame src="fr_class_index.html"  name="Classes" />
566        <frame src="fr_method_index.html" name="Methods" />
567    </frameset>
568IF:inline_source
569      <frame  src="%initial_page%" name="docwin">
570ENDIF:inline_source
571IFNOT:inline_source
572    <frameset rows="80%,20%">
573      <frame  src="%initial_page%" name="docwin">
574      <frame  src="blank.html" name="source">
575    </frameset>
576ENDIF:inline_source
577    <noframes>
578          <body bgcolor="white">
579            Click <a href="html/index.html">here</a> for a non-frames
580            version of this page.
581          </body>
582    </noframes>
583</frameset>
584
585</html>
586HTML
587
588end
589end
590
591
592