Module | RDoc::Page
In: | rdoc/generators/template/xml/xml.rb rdoc/generators/template/xml/rdf.rb rdoc/generators/template/html/one_page_html.rb rdoc/generators/template/html/old_html.rb rdoc/generators/template/html/kilmer.rb rdoc/generators/template/html/html.rb rdoc/generators/template/html/hefss.rb rdoc/generators/template/chm/chm.rb

This is how you define the HTML that RDoc generates. Simply create a file in rdoc/generators/html_templates that creates the module RDoc::Page and populate it as described below. Then invoke rdoc using the —template <name of your file> option, and your template will be used.

The constants defining pages use a simple templating system:

- The templating system is passed a hash. Keys in the hash correspond to tags on this page. The tag %abc% is looked up in the hash, and is replaced by the corresponding hash value.
- Some tags are optional. You can detect this using IF/ENDIF

         IF: title
         The value of title is %title%
         ENDIF: title

- Some entries in the hash have values that are arrays, where each entry in the array is itself a hash. These are used to generate lists using the START: construct. For example, given a hash containing

         { 'people' => [ { 'name' => 'Fred', 'age' => '12' },
                         { 'name' => 'Mary', 'age' => '21' } ]

  You could generate a simple table using

         <table>
         START:people
           <tr><td>%name%<td>%age%</tr>
         END:people
         </table>

  These lists can be nested to an arbitrary depth

- the construct HREF:url:name: generates <a href="%url%">%name%</a> if `url` is defined in the hash, or %name% otherwise.

Your file must contain the following constants

FONTS
  a list of fonts to be used
STYLE
  a CSS section (without the <style> or comments). This is used to generate a style.css file
BODY
  The main body of all non-index RDoc pages. BODY will contain two !INCLUDE!s. The first is used to include a document-type specific header (FILE_PAGE or CLASS_PAGE). The second include is for the method list (METHOD_LIST). THe body is passed:

  %title%: | the page’s title
  %style_url%: | the url of a style sheet for this page
  %diagram%: | the optional URL of a diagram for this page
  %description%: | a (potentially multi-paragraph) string containing the description for th file/class/module.
  %requires%: | an optional list of %aref%/%name% pairs, one for each module required by this file.
  %methods%: | an optional list of %aref%/%name%, one for each method documented on this page. This is intended to be an index.

  %attributes%:

  An optional list. For each attribute it contains:

  %name%: | the attribute name
  %rw%: | r/o, w/o, or r/w
  %a_desc%: | description of the attribute

  %classlist%: | An optional string containing an already-formatted list of classes and modules documented in this file

  For FILE_PAGE entries, the body will be passed

  %short_name%: | The name of the file
  %full_path%: | The full path to the file
  %dtm_modified%: | The date/time the file was last changed

  For class and module pages, the body will be passed

  %classmod%: | The name of the class or module

  %files%:

  A list. For each file this class is defined in, it contains:

  %full_path_url%: | an (optional) URL of the RDoc page for this file
  %full_path%: | the name of the file

  %par_url%: | The (optional) URL of the RDoc page documenting this class’s parent class
  %parent%: | The name of this class’s parent.

  For both files and classes, the body is passed the following information on includes and methods:

  %includes%:

  Optional list of included modules. For each, it receives

  %aref%: | optional URL to RDoc page for the module
  %name%: | the name of the module

  %method_list%: | Optional list of methods of a particular class and category.

  Each method list entry contains:

  %type%: | public/private/protected
  %category%: | instance/class
  %methods%: | a list of method descriptions

  Each method description contains:

  %aref%: | a target aref, used when referencing this method description. You should code this as <a name="%aref%">
  %codeurl%: | the optional URL to the page containing this method’s source code.
  %name%: | the method’s name
  %params%: | the method’s parameters
  %callseq%: | a full calling sequence
  %m_desc%: | the (potentially multi-paragraph) description of this method.

CLASS_PAGE
  Header for pages documenting classes and modules. See BODY above for the available parameters.
FILE_PAGE
  Header for pages documenting files. See BODY above for the available parameters.
METHOD_LIST
  Controls the display of the listing of methods. See BODY for parameters.
INDEX
  The top-level index page. For a browser-like environment define a frame set that includes the file, class, and method indices. Passed

  %title%: | title of page
  %initial_page% : | url of initial page to display

CLASS_INDEX
  Individual files for the three indexes. Passed:

  %index_url%: | URL of main index page

  %entries%:

  List of

  %name%: | name of an index entry
  %href%: | url of corresponding page

METHOD_INDEX
  Same as CLASS_INDEX for methods
FILE_INDEX
  Same as CLASS_INDEX for methods
FR_INDEX_BODY
  A wrapper around CLASS_INDEX, METHOD_INDEX, and FILE_INDEX. If those index strings contain the complete HTML for the output, then FR_INDEX_BODY can simply be !INCLUDE!
SRC_PAGE
  Page used to display source code. Passed %title% and %code%, the latter being a multi-line string of code.

### Methods

write_extra_pages write_extra_pages

### Constants

CONTENTS_XML

=

%{ IF:description <description> %description% </description> ENDIF:description <contents> IF:requires <required-file-list> START:requires <required-file name="%name%" IF:aref href="%aref%" ENDIF:aref /> END:requires </required-file-list> ENDIF:requires IF:attributes <attribute-list> START:attributes <attribute name="%name%"> IF:rw <attribute-rw>%rw%</attribute-rw> ENDIF:rw <description>%a_desc%</description> </attribute> END:attributes </attribute-list> ENDIF:attributes IF:includes <included-module-list> START:includes <included-module name="%name%" IF:aref href="%aref%" ENDIF:aref /> END:includes </included-module-list> ENDIF:includes IF:method_list <method-list> START:method_list IF:methods START:methods <method name="%name%" type="%type%" category="%category%" id="%aref%"> <parameters>%params%</parameters> IF:m_desc <description> %m_desc% </description> ENDIF:m_desc IF:sourcecode <source-code-listing> %sourcecode% </source-code-listing> ENDIF:sourcecode </method> END:methods ENDIF:methods END:method_list </method-list> ENDIF:method_list </contents> }

ONE_PAGE

=

%{<?xml version="1.0" encoding="utf-8"?> <rdoc> <file-list> START:files <file name="%short_name%" id="%href%"> <file-info> <path>%full_path%</path> <dtm-modified>%dtm_modified%</dtm-modified> </file-info> } + CONTENTS_XML + %{ </file> END:files </file-list> <class-module-list> START:classes <%classmod% name="%full_name%" id="%full_name%"> <classmod-info> IF:infiles <infiles> START:infiles <infile>HREF:full_path_url:full_path:</infile> END:infiles </infiles> ENDIF:infiles IF:parent <superclass>HREF:par_url:parent:</superclass> ENDIF:parent </classmod-info> } + CONTENTS_XML + %{ </%classmod%> END:classes </class-module-list> </rdoc> }

CONTENTS_RDF

=

%{ IF:description <description rd:parseType="Literal"> %description% </description> ENDIF:description IF:requires START:requires <rd:required-file rd:name="%name%" /> END:requires ENDIF:requires IF:attributes START:attributes <contents> <Attribute rd:name="%name%"> IF:rw <attribute-rw>%rw%</attribute-rw> ENDIF:rw <description rdf:parseType="Literal">%a_desc%</description> </Attribute> </contents> END:attributes ENDIF:attributes IF:includes <IncludedModuleList> START:includes <included-module rd:name="%name%" /> END:includes </IncludedModuleList> ENDIF:includes IF:method_list START:method_list IF:methods START:methods <contents> <Method rd:name="%name%" rd:visibility="%type%" rd:category="%category%" rd:id="%aref%"> <parameters>%params%</parameters> IF:m_desc <description rdf:parseType="Literal"> %m_desc% </description> ENDIF:m_desc IF:sourcecode <source-code-listing rdf:parseType="Literal"> %sourcecode% </source-code-listing> ENDIF:sourcecode </Method> </contents> END:methods ENDIF:methods END:method_list ENDIF:method_list <!-- end method list --> }

ONE_PAGE

=

%{<?xml version="1.0" encoding="utf-8"?> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://pragprog.com/rdoc/rdoc.rdf#" xmlns:rd="http://pragprog.com/rdoc/rdoc.rdf#"> <!-- RDoc --> START:files <rd:File rd:name="%short_name%" rd:id="%href%"> <path>%full_path%</path> <dtm-modified>%dtm_modified%</dtm-modified> } + CONTENTS_RDF + %{ </rd:File> END:files START:classes <%classmod% rd:name="%full_name%" rd:id="%full_name%"> <classmod-info> IF:infiles <InFiles> START:infiles <infile> <File rd:name="%full_path%" IF:full_path_url rdf:about="%full_path_url%" ENDIF:full_path_url /> </infile> END:infiles </InFiles> ENDIF:infiles IF:parent <superclass>HREF:par_url:parent:</superclass> ENDIF:parent </classmod-info> } + CONTENTS_RDF + %{ </%classmod%> END:classes <!-- /RDoc --> </rdf:RDF> }

CONTENTS_XML

=

%{ IF:description %description% ENDIF:description IF:requires <h4>Requires:</h4> <ul> START:requires IF:aref <li><a href="%aref%">%name%</a></li> ENDIF:aref IFNOT:aref <li>%name%</li> ENDIF:aref END:requires </ul> ENDIF:requires IF:attributes <h4>Attributes</h4> <table> START:attributes <tr><td>%name%</td><td>%rw%</td><td>%a_desc%</td></tr> END:attributes </table> ENDIF:attributes IF:includes <h4>Includes</h4> <ul> START:includes IF:aref <li><a href="%aref%">%name%</a></li> ENDIF:aref IFNOT:aref <li>%name%</li> ENDIF:aref END:includes </ul> ENDIF:includes IF:method_list <h3>Methods</h3> START:method_list IF:methods START:methods <h4>%type% %category% method: IF:callseq <a name="%aref%">%callseq%</a> ENDIF:callseq IFNOT:callseq <a name="%aref%">%name%%params%</a></h4> ENDIF:callseq IF:m_desc %m_desc% ENDIF:m_desc IF:sourcecode <blockquote><pre> %sourcecode% </pre></blockquote> ENDIF:sourcecode END:methods ENDIF:methods END:method_list ENDIF:method_list }

The following is used for the -1 option

ONE_PAGE

=

%{ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>%title%</title> <meta http-equiv="Content-Type" content="text/html; charset=%charset%" /> </head> <body> START:files <h2>File: %short_name%</h2> <table> <tr><td>Path:</td><td>%full_path%</td></tr> <tr><td>Modified:</td><td>%dtm_modified%</td></tr> </table> } + CONTENTS_XML + %{ END:files IF:classes <h2>Classes</h2> START:classes IF:parent <h3>%classmod% %full_name% &lt; HREF:par_url:parent:</h3> ENDIF:parent IFNOT:parent <h3>%classmod% %full_name%</h3> ENDIF:parent IF:infiles (in files START:infiles HREF:full_path_url:full_path: END:infiles ) ENDIF:infiles } + CONTENTS_XML + %{ END:classes ENDIF:classes </body> </html> }

FONTS | = | "Verdana, Arial, Helvetica, sans-serif"

STYLE

=

%{ body,td,p { font-family: %fonts%; color: #000040; } .attr-rw { font-size: x-small; color: #444488 } .title-row { background: #0000aa; color: #eeeeff; } .big-title-font { color: white; font-family: %fonts%; font-size: large; height: 50px} .small-title-font { color: aqua; font-family: %fonts%; font-size: xx-small; } .aqua { color: aqua } .method-name, attr-name { font-family: monospace; font-weight: bold; } .tablesubtitle, .tablesubsubtitle { width: 100%; margin-top: 1ex; margin-bottom: .5ex; padding: 5px 0px 5px 20px; font-size: large; color: aqua; background: #3333cc; } .name-list { font-family: monospace; margin-left: 40px; margin-bottom: 2ex; line-height: 140%; } .description { margin-left: 40px; margin-top: -2ex; margin-bottom: 2ex; } .description p { line-height: 140%; } .aka { margin-left: 40px; margin-bottom: 2ex; line-height: 100%; font-size: small; color: #808080; } .methodtitle { font-size: medium; text-decoration: none; color: #0000AA; background: white; } .paramsig { font-size: small; } .srcbut { float: right } pre { font-size: 1.2em; } tt { font-size: 1.2em; } pre.source { border-style: groove; background-color: #ddddff; margin-left: 40px; padding: 1em 0em 1em 2em; } .classlist { margin-left: 40px; margin-bottom: 2ex; line-height: 140%; } li { display: list-item; margin-top: .6em; } .ruby-comment { color: green; font-style: italic } .ruby-constant { color: #4433aa; font-weight: bold; } .ruby-identifier { color: #222222; } .ruby-ivar { color: #2233dd; } .ruby-keyword { color: #3333FF; font-weight: bold } .ruby-node { color: #777777; } .ruby-operator { color: #111111; } .ruby-regexp { color: #662222; } .ruby-value { color: #662222; font-style: italic } }

HEADER

=

%{ <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>%title%</title> <meta http-equiv="Content-Type" content="text/html; charset=%charset%" /> <link rel=StyleSheet href="%style_url%" type="text/css" media="screen" /> <script type="text/javascript" language="JavaScript"> <!-- function popCode(url) { window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400") } //--> </script> </head> }

METHOD_LIST

=

%{ IF:includes <table summary="Included modules" cellpadding="5" width="100%"> <tr><td class="tablesubtitle">Included modules</td></tr> </table> <div class="name-list"> START:includes <span class="method-name">HREF:aref:name:</span> END:includes </div> ENDIF:includes IF:method_list START:method_list IF:methods <table summary="Method list" cellpadding="5" width="100%"> <tr><td class="tablesubtitle">%type% %category% methods</td></tr> </table> START:methods <table summary="method" width="100%" cellspacing="0" cellpadding="5" border="0"> <tr><td class="methodtitle"> <a name="%aref%"></a> IF:codeurl <a href="%codeurl%" target="Code" class="methodtitle" onClick="popCode('%codeurl%');return false;"> ENDIF:codeurl IF:callseq <b>%callseq%</b> ENDIF:callseq IFNOT:callseq <b>%name%</b>%params% ENDIF:callseq IF:codeurl </a> ENDIF:codeurl </td></tr> </table> IF:m_desc <div class="description"> %m_desc% </div> ENDIF:m_desc IF:aka <div class="aka"> This method is also aliased as START:aka <a href="%aref%">%name%</a> END:aka </div> ENDIF:aka IF:sourcecode <pre class="source"> %sourcecode% </pre> ENDIF:sourcecode END:methods ENDIF:methods END:method_list ENDIF:method_list }

CONTEXT_CONTENT

=

%{ IF:diagram <table summary="Diagram of classes and modules" width="100%"> <tr><td align="center"> %diagram% </td></tr></table> ENDIF:diagram IF:description <div class="description">%description%</div> ENDIF:description IF:requires <table summary="Requires" cellpadding="5" width="100%"> <tr><td class="tablesubtitle">Required files</td></tr> </table> <div class="name-list"> START:requires HREF:aref:name:&nbsp; &nbsp; END:requires </div> ENDIF:requires IF:methods <table summary="Methods" cellpadding="5" width="100%"> <tr><td class="tablesubtitle">Methods</td></tr> </table> <div class="name-list"> START:methods HREF:aref:name:&nbsp; &nbsp; END:methods </div> ENDIF:methods IF:constants <table summary="Constants" cellpadding="5" width="100%"> <tr><td class="tablesubtitle">Constants</td></tr> </table> <table cellpadding="5"> START:constants <tr valign="top"><td>%name%</td><td>=</td><td>%value%</td></tr> IF:desc <tr><td></td><td></td><td>%desc%</td></tr> ENDIF:desc END:constants </table> ENDIF:constants IF:aliases <table summary="Aliases" cellpadding="5" width="100%"> <tr><td class="tablesubtitle">External Aliases</td></tr> </table> <div class="name-list"> START:aliases %old_name% -> %new_name%<br /> END:aliases </div> ENDIF:aliases IF:attributes <table summary="Attributes" cellpadding="5" width="100%"> <tr><td class="tablesubtitle">Attributes</td></tr> </table> <table summary="Attribute details" cellspacing="5"> START:attributes <tr valign="top"> <td class="attr-name">%name%</td> IF:rw <td align="center" class="attr-rw">&nbsp;[%rw%]&nbsp;</td> ENDIF:rw IFNOT:rw <td></td> ENDIF:rw <td>%a_desc%</td> </tr> END:attributes </table> ENDIF:attributes IF:classlist <table summary="List of classes" cellpadding="5" width="100%"> <tr><td class="tablesubtitle">Classes and Modules</td></tr> </table> <div class="classlist"> %classlist% </div> ENDIF:classlist }

BODY | = | HEADER + %{ <body bgcolor="white"> !INCLUDE! <!-- banner header --> } + CONTEXT_CONTENT + METHOD_LIST + %{ </body> </html> } |  |

FILE_PAGE

=

<<_FILE_PAGE_ <table summary="Information on file" width="100%"> <tr class="title-row"> <td><table summary="layout" width="100%"><tr> <td class="big-title-font" colspan="2">%short_name%</td> <td align="right"><table summary="layout" cellspacing="0" cellpadding="2"> <tr> <td class="small-title-font">Path:</td> <td class="small-title-font">%full_path% IF:cvsurl &nbsp;(<a href="%cvsurl%">CVS</a>) ENDIF:cvsurl </td> </tr> <tr> <td class="small-title-font">Modified:</td> <td class="small-title-font">%dtm_modified%</td> </tr> </table> </td></tr></table></td> </tr> </table> _FILE_PAGE_

CLASS_PAGE

=

%{ <table summary="Information on class" width="100%" border="0" cellspacing="0"> <tr class="title-row"> <td class="big-title-font"> <sup><font color="aqua">%classmod%</font></sup> %full_name% </td> <td align="right"> <table summary="layout" cellspacing="0" cellpadding="2"> <tr valign="top"> <td class="small-title-font">In:</td> <td class="small-title-font"> START:infiles IF:full_path_url <a href="%full_path_url%" class="aqua"> ENDIF:full_path_url %full_path% IF:full_path_url </a> ENDIF:full_path_url IF:cvsurl &nbsp;(<a href="%cvsurl%">CVS</a>) ENDIF:cvsurl <br /> END:infiles </td> </tr> IF:parent <tr> <td class="small-title-font">Parent:</td> <td class="small-title-font"> IF:par_url <a href="%par_url%" class="aqua"> ENDIF:par_url %parent% IF:par_url </a> ENDIF:par_url </td> </tr> ENDIF:parent </table> </td> </tr> </table> }

SRC_PAGE | = | %{ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=%charset%"> <title>%title%</title> <link rel=StyleSheet href="%style_url%" type="text/css" media="screen" /> </head> <body bgcolor="white"> <pre>%code%</pre> </body> </html> } |  | Source code ##########################
FR_INDEX_BODY | = | %{ !INCLUDE! } |  | Index ################################

FILE_INDEX

=

%{ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=%charset%"> <title>%list_title%</title> <style type="text/css"> <!-- body { background-color: #ddddff; font-family: #{FONTS}; font-size: 11px; font-style: normal; line-height: 14px; color: #000040; } div.banner { background: #0000aa; color: white; padding: 1; margin: 0; font-size: 90%; font-weight: bold; line-height: 1.1; text-align: center; width: 100%; } A.xx { color: white; font-weight: bold; } --> </style> <base target="docwin"> </head> <body> <div class="banner"><a href="%index_url%" class="xx">%list_title%</a></div> START:entries <a href="%href%">%name%</a><br /> END:entries </body></html> }

CLASS_INDEX | = | FILE_INDEX
METHOD_INDEX | = | FILE_INDEX

INDEX

=

%{ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=%charset%"> <title>%title%</title></head> <frameset rows="20%, 80%"> <frameset cols="25%,35%,45%"> <frame src="fr_file_index.html" title="Files" name="Files"> <frame src="fr_class_index.html" name="Classes"> <frame src="fr_method_index.html" name="Methods"> </frameset> <frame src="%initial_page%" name="docwin"> <noframes> <body bgcolor="white"> Sorry, RDoc currently only generates HTML using frames. </body> </noframes> </frameset> </html> }

CONTENTS_XML

=

%{ IF:description %description% ENDIF:description IF:requires <h4>Requires:</h4> <ul> START:requires IF:aref <li><a href="%aref%">%name%</a></li> ENDIF:aref IFNOT:aref <li>%name%</li> ENDIF:aref END:requires </ul> ENDIF:requires IF:attributes <h4>Attributes</h4> <table> START:attributes <tr><td>%name%</td><td>%rw%</td><td>%a_desc%</td></tr> END:attributes </table> ENDIF:attributes IF:includes <h4>Includes</h4> <ul> START:includes IF:aref <li><a href="%aref%">%name%</a></li> ENDIF:aref IFNOT:aref <li>%name%</li> ENDIF:aref END:includes </ul> ENDIF:includes IF:method_list <h3>Methods</h3> START:method_list IF:methods START:methods <h4>%type% %category% method: <a name="%aref%">%name%%params%</a></h4> IF:m_desc %m_desc% ENDIF:m_desc IF:sourcecode <blockquote><pre> %sourcecode% </pre></blockquote> ENDIF:sourcecode END:methods ENDIF:methods END:method_list ENDIF:method_list }

The following is used for the -1 option

FONTS | = | "Verdana, Arial, Helvetica, sans-serif"

STYLE

=

%{ body,td,p { font-family: %fonts%; color: #000040; } .attr-rw { font-size: xx-small; color: #444488 } .title-row { background-color: #CCCCFF; color: #000010; } .big-title-font { color: black; font-weight: bold; font-family: %fonts%; font-size: large; height: 60px; padding: 10px 3px 10px 3px; } .small-title-font { color: black; font-family: %fonts%; font-size:10; } .aqua { color: black } .method-name, .attr-name { font-family: font-family: %fonts%; font-weight: bold; font-size: small; margin-left: 20px; color: #000033; } .tablesubtitle, .tablesubsubtitle { width: 100%; margin-top: 1ex; margin-bottom: .5ex; padding: 5px 0px 5px 3px; font-size: large; color: black; background-color: #CCCCFF; border: thin; } .name-list { margin-left: 5px; margin-bottom: 2ex; line-height: 105%; } .description { margin-left: 5px; margin-bottom: 2ex; line-height: 105%; font-size: small; } .methodtitle { font-size: small; font-weight: bold; text-decoration: none; color: #000033; background-color: white; } .srclink { font-size: small; font-weight: bold; text-decoration: none; color: #0000DD; background-color: white; } .paramsig { font-size: small; } .srcbut { float: right } }

BODY

=

%{ <html><head> <title>%title%</title> <meta http-equiv="Content-Type" content="text/html; charset=%charset%"> <link rel=StyleSheet href="%style_url%" type="text/css" media=screen> <script type="text/javascript" language="JavaScript"> <!-- function popCode(url) { parent.frames.source.location = url } //--> </script> </head> <body bgcolor="white"> !INCLUDE! <!-- banner header --> IF:diagram <table width="100%"><tr><td align="center"> %diagram% </td></tr></table> ENDIF:diagram IF:description <div class="description">%description%</div> ENDIF:description IF:requires <table cellpadding=5 width="100%"> <tr><td class="tablesubtitle">Required files</td></tr> </table><br> <div class="name-list"> START:requires HREF:aref:name: END:requires ENDIF:requires </div> IF:methods <table cellpadding=5 width="100%"> <tr><td class="tablesubtitle">Methods</td></tr> </table><br> <div class="name-list"> START:methods HREF:aref:name:, END:methods </div> ENDIF:methods START:sections <div id="section"> IF:sectitle <h2 class="section-title"><a name="%secsequence%">%sectitle%</a></h2> IF:seccomment <div class="section-comment"> %seccomment% </div> ENDIF:seccomment ENDIF:sectitle IF:attributes <table cellpadding=5 width="100%"> <tr><td class="tablesubtitle">Attributes</td></tr> </table><br> <table cellspacing=5> START:attributes <tr valign="top"> IF:rw <td align="center" class="attr-rw">&nbsp;[%rw%]&nbsp;</td> ENDIF:rw IFNOT:rw <td></td> ENDIF:rw <td class="attr-name">%name%</td> <td>%a_desc%</td> </tr> END:attributes </table> ENDIF:attributes IF:classlist <table cellpadding=5 width="100%"> <tr><td class="tablesubtitle">Classes and Modules</td></tr> </table><br> %classlist%<br> ENDIF:classlist !INCLUDE! <!-- method descriptions --> END:sections </body> </html> }

FILE_PAGE

=

<<_FILE_PAGE_ <table width="100%"> <tr class="title-row"> <td><table width="100%"><tr> <td class="big-title-font" colspan=2><font size=-3><B>File</B><BR></font>%short_name%</td> <td align="right"><table cellspacing=0 cellpadding=2> <tr> <td class="small-title-font">Path:</td> <td class="small-title-font">%full_path% IF:cvsurl &nbsp;(<a href="%cvsurl%">CVS</a>) ENDIF:cvsurl </td> </tr> <tr> <td class="small-title-font">Modified:</td> <td class="small-title-font">%dtm_modified%</td> </tr> </table> </td></tr></table></td> </tr> </table><br> _FILE_PAGE_

CLASS_PAGE

=

%{ <table width="100%" border=0 cellspacing=0> <tr class="title-row"> <td class="big-title-font"> <font size=-3><B>%classmod%</B><BR></font>%full_name% </td> <td align="right"> <table cellspacing=0 cellpadding=2> <tr valign="top"> <td class="small-title-font">In:</td> <td class="small-title-font"> START:infiles HREF:full_path_url:full_path: IF:cvsurl &nbsp;(<a href="%cvsurl%">CVS</a>) ENDIF:cvsurl END:infiles </td> </tr> IF:parent <tr> <td class="small-title-font">Parent:</td> <td class="small-title-font"> IF:par_url <a href="%par_url%" class="cyan"> ENDIF:par_url %parent% IF:par_url </a> ENDIF:par_url </td> </tr> ENDIF:parent </table> </td> </tr> </table><br> }

METHOD_LIST

=

%{ IF:includes <div class="tablesubsubtitle">Included modules</div><br> <div class="name-list"> START:includes <span class="method-name">HREF:aref:name:</span> END:includes </div> ENDIF:includes IF:method_list START:method_list IF:methods <table cellpadding=5 width="100%"> <tr><td class="tablesubtitle">%type% %category% methods</td></tr> </table> START:methods <table width="100%" cellspacing = 0 cellpadding=5 border=0> <tr><td class="methodtitle"> <a name="%aref%"> IF:callseq <b>%callseq%</b> ENDIF:callseq IFNOT:callseq <b>%name%</b>%params% ENDIF:callseq IF:codeurl <a href="%codeurl%" target="source" class="srclink">src</a> ENDIF:codeurl </a></td></tr> </table> IF:m_desc <div class="description"> %m_desc% </div> ENDIF:m_desc IF:aka <div class="aka"> This method is also aliased as START:aka <a href="%aref%">%name%</a> END:aka </div> ENDIF:aka IF:sourcecode <pre class="source"> %sourcecode% </pre> ENDIF:sourcecode END:methods ENDIF:methods END:method_list ENDIF:method_list }

SRC_PAGE

=

%{ <html> <head><title>%title%</title> <meta http-equiv="Content-Type" content="text/html; charset=%charset%"> <style> .ruby-comment { color: green; font-style: italic } .ruby-constant { color: #4433aa; font-weight: bold; } .ruby-identifier { color: #222222; } .ruby-ivar { color: #2233dd; } .ruby-keyword { color: #3333FF; font-weight: bold } .ruby-node { color: #777777; } .ruby-operator { color: #111111; } .ruby-regexp { color: #662222; } .ruby-value { color: #662222; font-style: italic } .kw { color: #3333FF; font-weight: bold } .cmt { color: green; font-style: italic } .str { color: #662222; font-style: italic } .re { color: #662222; } </style> </head> <body bgcolor="white"> <pre>%code%</pre> </body> </html> }

Source code ##########################

FR_INDEX_BODY | = | %{ !INCLUDE! } |  | Index ################################

FILE_INDEX

=

%{ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=%charset%"> <style> <!-- body { background-color: #ddddff; font-family: #{FONTS}; font-size: 11px; font-style: normal; line-height: 14px; color: #000040; } div.banner { background: #0000aa; color: white; padding: 1; margin: 0; font-size: 90%; font-weight: bold; line-height: 1.1; text-align: center; width: 100%; } --> </style> <base target="docwin"> </head> <body> <div class="banner">%list_title%</div> START:entries <a href="%href%">%name%</a><br> END:entries </body></html> }

CLASS_INDEX | = | FILE_INDEX
METHOD_INDEX | = | FILE_INDEX

INDEX

=

%{ <html> <head> <title>%title%</title> <meta http-equiv="Content-Type" content="text/html; charset=%charset%"> </head> <frameset cols="20%,*"> <frameset rows="15%,35%,50%"> <frame src="fr_file_index.html" title="Files" name="Files"> <frame src="fr_class_index.html" name="Classes"> <frame src="fr_method_index.html" name="Methods"> </frameset> IF:inline_source <frame src="%initial_page%" name="docwin"> ENDIF:inline_source IFNOT:inline_source <frameset rows="80%,20%"> <frame src="%initial_page%" name="docwin"> <frame src="blank.html" name="source"> </frameset> ENDIF:inline_source <noframes> <body bgcolor="white"> Click <a href="html/index.html">here</a> for a non-frames version of this page. </body> </noframes> </frameset> </html> }

BLANK | = | %{ <html><body bgcolor="white"></body></html> } |  | and a blank page to use as a target
FONTS | = | "Verdana,Arial,Helvetica,sans-serif"

STYLE

=

%{ body { font-family: Verdana,Arial,Helvetica,sans-serif; font-size: 90%; margin: 0; margin-left: 40px; padding: 0; background: white; } h1,h2,h3,h4 { margin: 0; color: #efefef; background: transparent; } h1 { font-size: 150%; } h2,h3,h4 { margin-top: 1em; } a { background: #eef; color: #039; text-decoration: none; } a:hover { background: #039; color: #eef; } /* Override the base stylesheet's Anchor inside a table cell */ td > a { background: transparent; color: #039; text-decoration: none; } /* and inside a section title */ .section-title > a { background: transparent; color: #eee; text-decoration: none; } /* === Structural elements =================================== */ div#index { margin: 0; margin-left: -40px; padding: 0; font-size: 90%; } div#index a { margin-left: 0.7em; } div#index .section-bar { margin-left: 0px; padding-left: 0.7em; background: #ccc; font-size: small; } div#classHeader, div#fileHeader { width: auto; color: white; padding: 0.5em 1.5em 0.5em 1.5em; margin: 0; margin-left: -40px; border-bottom: 3px solid #006; } div#classHeader a, div#fileHeader a { background: inherit; color: white; } div#classHeader td, div#fileHeader td { background: inherit; color: white; } div#fileHeader { background: #057; } div#classHeader { background: #048; } .class-name-in-header { font-size: 180%; font-weight: bold; } div#bodyContent { padding: 0 1.5em 0 1.5em; } div#description { padding: 0.5em 1.5em; background: #efefef; border: 1px dotted #999; } div#description h1,h2,h3,h4,h5,h6 { color: #125;; background: transparent; } div#validator-badges { text-align: center; } div#validator-badges img { border: 0; } div#copyright { color: #333; background: #efefef; font: 0.75em sans-serif; margin-top: 5em; margin-bottom: 0; padding: 0.5em 2em; } /* === Classes =================================== */ table.header-table { color: white; font-size: small; } .type-note { font-size: small; color: #DEDEDE; } .xxsection-bar { background: #eee; color: #333; padding: 3px; } .section-bar { color: #333; border-bottom: 1px solid #999; margin-left: -20px; } .section-title { background: #79a; color: #eee; padding: 3px; margin-top: 2em; margin-left: -30px; border: 1px solid #999; } .top-aligned-row { vertical-align: top } .bottom-aligned-row { vertical-align: bottom } /* --- Context section classes ----------------------- */ .context-row { } .context-item-name { font-family: monospace; font-weight: bold; color: black; } .context-item-value { font-size: small; color: #448; } .context-item-desc { color: #333; padding-left: 2em; } /* --- Method classes -------------------------- */ .method-detail { background: #efefef; padding: 0; margin-top: 0.5em; margin-bottom: 1em; border: 1px dotted #ccc; } .method-heading { color: black; background: #ccc; border-bottom: 1px solid #666; padding: 0.2em 0.5em 0 0.5em; } .method-signature { color: black; background: inherit; } .method-name { font-weight: bold; } .method-args { font-style: italic; } .method-description { padding: 0 0.5em 0 0.5em; } /* --- Source code sections -------------------- */ a.source-toggle { font-size: 90%; } div.method-source-code { background: #262626; color: #ffdead; margin: 1em; padding: 0.5em; border: 1px dashed #999; overflow: hidden; } div.method-source-code pre { color: #ffdead; overflow: hidden; } /* --- Ruby keyword styles --------------------- */ .standalone-code { background: #221111; color: #ffdead; overflow: hidden; } .ruby-constant { color: #7fffd4; background: transparent; } .ruby-keyword { color: #00ffff; background: transparent; } .ruby-ivar { color: #eedd82; background: transparent; } .ruby-operator { color: #00ffee; background: transparent; } .ruby-identifier { color: #ffdead; background: transparent; } .ruby-node { color: #ffa07a; background: transparent; } .ruby-comment { color: #b22222; font-weight: bold; background: transparent; } .ruby-regexp { color: #ffa07a; background: transparent; } .ruby-value { color: #7fffd4; background: transparent; } }

XHTML_PREAMBLE | = | %{<?xml version="1.0" encoding="%charset%"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> } |  | H E A D E R T E M P L A T E

HEADER

=

XHTML_PREAMBLE + %{ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>%title%</title> <meta http-equiv="Content-Type" content="text/html; charset=%charset%" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" /> <script type="text/javascript"> // <![CDATA[ function popupCode( url ) { window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400") } function toggleCode( id ) { if ( document.getElementById ) elem = document.getElementById( id ); else if ( document.all ) elem = eval( "document.all." + id ); else return false; elemStyle = elem.style; if ( elemStyle.display != "block" ) { elemStyle.display = "block" } else { elemStyle.display = "none" } return true; } // Make codeblocks hidden by default document.writeln( "<style type=\\"text/css\\">div.method-source-code { display: none }</style>" ) // ]]> </script> </head> <body> }

CONTEXT_CONTENT | = | %{ } |  | C O N T E X T C O N T E N T T E M P L A T E
FOOTER | = | %{ <div id="validator-badges"> <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p> </div> </body> </html> } |  | F O O T E R T E M P L A T E

FILE_PAGE

=

%{ <div id="fileHeader"> <h1>%short_name%</h1> <table class="header-table"> <tr class="top-aligned-row"> <td><strong>Path:</strong></td> <td>%full_path% IF:cvsurl &nbsp;(<a href="%cvsurl%">CVS</a>) ENDIF:cvsurl </td> </tr> <tr class="top-aligned-row"> <td><strong>Last Update:</strong></td> <td>%dtm_modified%</td> </tr> </table> </div> }

F I L E P A G E H E A D E R T E M P L A T E

CLASS_PAGE

=

%{ <div id="classHeader"> <table class="header-table"> <tr class="top-aligned-row"> <td><strong>%classmod%</strong></td> <td class="class-name-in-header">%full_name%</td> </tr> <tr class="top-aligned-row"> <td><strong>In:</strong></td> <td> START:infiles IF:full_path_url <a href="%full_path_url%"> ENDIF:full_path_url %full_path% IF:full_path_url </a> ENDIF:full_path_url IF:cvsurl &nbsp;(<a href="%cvsurl%">CVS</a>) ENDIF:cvsurl <br /> END:infiles </td> </tr> IF:parent <tr class="top-aligned-row"> <td><strong>Parent:</strong></td> <td> IF:par_url <a href="%par_url%"> ENDIF:par_url %parent% IF:par_url </a> ENDIF:par_url </td> </tr> ENDIF:parent </table> </div> }

C L A S S P A G E H E A D E R T E M P L A T E

METHOD_LIST

=

%{ <div id="contextContent"> IF:diagram <div id="diagram"> %diagram% </div> ENDIF:diagram IF:description <div id="description"> %description% </div> ENDIF:description IF:requires <div id="requires-list"> <h3 class="section-bar">Required files</h3> <div class="name-list"> START:requires HREF:aref:name:&nbsp;&nbsp; END:requires </div> </div> ENDIF:requires IF:toc <div id="contents-list"> <h3 class="section-bar">Contents</h3> <ul> START:toc <li><a href="#%href%">%secname%</a></li> END:toc </ul> ENDIF:toc </div> IF:methods <div id="method-list"> <h3 class="section-bar">Methods</h3> <div class="name-list"> START:methods HREF:aref:name:&nbsp;&nbsp; END:methods </div> </div> ENDIF:methods </div> <!-- if includes --> IF:includes <div id="includes"> <h3 class="section-bar">Included Modules</h3> <div id="includes-list"> START:includes <span class="include-name">HREF:aref:name:</span> END:includes </div> </div> ENDIF:includes START:sections <div id="section"> IF:sectitle <h2 class="section-title"><a name="%secsequence%">%sectitle%</a></h2> IF:seccomment <div class="section-comment"> %seccomment% </div> ENDIF:seccomment ENDIF:sectitle IF:classlist <div id="class-list"> <h3 class="section-bar">Classes and Modules</h3> %classlist% </div> ENDIF:classlist IF:constants <div id="constants-list"> <h3 class="section-bar">Constants</h3> <div class="name-list"> <table summary="Constants"> START:constants <tr class="top-aligned-row context-row"> <td class="context-item-name">%name%</td> <td>=</td> <td class="context-item-value">%value%</td> IF:desc <td width="3em">&nbsp;</td> <td class="context-item-desc">%desc%</td> ENDIF:desc </tr> END:constants </table> </div> </div> ENDIF:constants IF:aliases <div id="aliases-list"> <h3 class="section-bar">External Aliases</h3> <div class="name-list"> <table summary="aliases"> START:aliases <tr class="top-aligned-row context-row"> <td class="context-item-name">%old_name%</td> <td>-></td> <td class="context-item-value">%new_name%</td> </tr> IF:desc <tr class="top-aligned-row context-row"> <td>&nbsp;</td> <td colspan="2" class="context-item-desc">%desc%</td> </tr> ENDIF:desc END:aliases </table> </div> </div> ENDIF:aliases IF:attributes <div id="attribute-list"> <h3 class="section-bar">Attributes</h3> <div class="name-list"> <table> START:attributes <tr class="top-aligned-row context-row"> <td class="context-item-name">%name%</td> IF:rw <td class="context-item-value">&nbsp;[%rw%]&nbsp;</td> ENDIF:rw IFNOT:rw <td class="context-item-value">&nbsp;&nbsp;</td> ENDIF:rw <td class="context-item-desc">%a_desc%</td> </tr> END:attributes </table> </div> </div> ENDIF:attributes <!-- if method_list --> IF:method_list <div id="methods"> START:method_list IF:methods <h3 class="section-bar">%type% %category% methods</h3> START:methods <div id="method-%aref%" class="method-detail"> <a name="%aref%"></a> <div class="method-heading"> IF:codeurl <a href="%codeurl%" target="Code" class="method-signature" onclick="popupCode('%codeurl%');return false;"> ENDIF:codeurl IF:sourcecode <a href="#%aref%" class="method-signature"> ENDIF:sourcecode IF:callseq <span class="method-name">%callseq%</span> ENDIF:callseq IFNOT:callseq <span class="method-name">%name%</span><span class="method-args">%params%</span> ENDIF:callseq IF:codeurl </a> ENDIF:codeurl IF:sourcecode </a> ENDIF:sourcecode </div> <div class="method-description"> IF:m_desc %m_desc% ENDIF:m_desc IF:sourcecode <p><a class="source-toggle" href="#" onclick="toggleCode('%aref%-source');return false;">[Source]</a></p> <div class="method-source-code" id="%aref%-source"> <pre> %sourcecode% </pre> </div> ENDIF:sourcecode </div> </div> END:methods ENDIF:methods END:method_list </div> ENDIF:method_list END:sections }

M E T H O D L I S T T E M P L A T E

BODY | = | HEADER + %{ !INCLUDE! <!-- banner header --> <div id="bodyContent"> } + METHOD_LIST + %{ </div> } + FOOTER |  | B O D Y T E M P L A T E
SRC_PAGE | = | XHTML_PREAMBLE + %{ <html> <head> <title>%title%</title> <meta http-equiv="Content-Type" content="text/html; charset=%charset%" /> <link rel="stylesheet" href="%style_url%" type="text/css" media="screen" /> </head> <body class="standalone-code"> <pre>%code%</pre> </body> </html> } |  | S O U R C E C O D E T E M P L A T E
FR_INDEX_BODY | = | %{ !INCLUDE! } |  | I N D E X F I L E T E M P L A T E S

FILE_INDEX

=

XHTML_PREAMBLE + %{ <!-- %list_title% --> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>%list_title%</title> <meta http-equiv="Content-Type" content="text/html; charset=%charset%" /> <link rel="stylesheet" href="%style_url%" type="text/css" /> <base target="docwin" /> </head> <body> <div id="index"> <h1 class="section-bar">%list_title%</h1> <div id="index-entries"> START:entries <a href="%href%">%name%</a><br /> END:entries </div> </div> </body> </html> }

CLASS_INDEX | = | FILE_INDEX
METHOD_INDEX | = | FILE_INDEX

INDEX

=

%{<?xml version="1.0" encoding="%charset%"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <!-- %title% --> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>%title%</title> <meta http-equiv="Content-Type" content="text/html; charset=%charset%" /> </head> <frameset rows="20%, 80%"> <frameset cols="25%,35%,45%"> <frame src="fr_file_index.html" title="Files" name="Files" /> <frame src="fr_class_index.html" name="Classes" /> <frame src="fr_method_index.html" name="Methods" /> </frameset> <frame src="%initial_page%" name="docwin" /> </frameset> </html> }

FONTS | = | "Verdana, Arial, Helvetica, sans-serif"

STYLE

=

%{ body,p { font-family: Verdana, Arial, Helvetica, sans-serif; color: #000040; background: #BBBBBB; } td { font-family: Verdana, Arial, Helvetica, sans-serif; color: #000040; } .attr-rw { font-size: small; color: #444488 } .title-row {color: #eeeeff; background: #BBBBDD; } .big-title-font { color: white; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: large; height: 50px} .small-title-font { color: purple; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: small; } .aqua { color: purple } .method-name, attr-name { font-family: monospace; font-weight: bold; } .tablesubtitle { width: 100%; margin-top: 1ex; margin-bottom: .5ex; padding: 5px 0px 5px 20px; font-size: large; color: purple; background: #BBBBCC; } .tablesubsubtitle { width: 100%; margin-top: 1ex; margin-bottom: .5ex; padding: 5px 0px 5px 20px; font-size: medium; color: white; background: #BBBBCC; } .name-list { font-family: monospace; margin-left: 40px; margin-bottom: 2ex; line-height: 140%; } .description { margin-left: 40px; margin-bottom: 2ex; line-height: 140%; } .methodtitle { font-size: medium; text_decoration: none; padding: 3px 3px 3px 20px; color: #0000AA; } .column-title { font-size: medium; font-weight: bold; text_decoration: none; padding: 3px 3px 3px 20px; color: #3333CC; } .variable-name { font-family: monospace; font-size: medium; text_decoration: none; padding: 3px 3px 3px 20px; color: #0000AA; } .row-name { font-size: medium; font-weight: medium; font-family: monospace; text_decoration: none; padding: 3px 3px 3px 20px; } .paramsig { font-size: small; } .srcbut { float: right } }

BODY

=

%{ <html><head> <title>%title%</title> <meta http-equiv="Content-Type" content="text/html; charset=%charset%"> <link rel=StyleSheet href="%style_url%" type="text/css" media=screen> <script type="text/javascript" language="JavaScript"> <!-- function popCode(url) { parent.frames.source.location = url } //--> </script> </head> <body bgcolor="#BBBBBB"> !INCLUDE! <!-- banner header --> IF:diagram <table width="100%"><tr><td align="center"> %diagram% </td></tr></table> ENDIF:diagram IF:description <div class="description">%description%</div> ENDIF:description IF:requires <table cellpadding=5 width="100%"> <tr><td class="tablesubtitle">Required files</td></tr> </table><br> <div class="name-list"> START:requires HREF:aref:name: END:requires ENDIF:requires </div> IF:methods <table cellpadding=5 width="100%"> <tr><td class="tablesubtitle">Subroutines and Functions</td></tr> </table><br> <div class="name-list"> START:methods HREF:aref:name:, END:methods </div> ENDIF:methods IF:attributes <table cellpadding=5 width="100%"> <tr><td class="tablesubtitle">Arguments</td></tr> </table><br> <table cellspacing=5> START:attributes <tr valign="top"> IF:rw <td align="center" class="attr-rw">&nbsp;[%rw%]&nbsp;</td> ENDIF:rw IFNOT:rw <td></td> ENDIF:rw <td class="attr-name">%name%</td> <td>%a_desc%</td> </tr> END:attributes </table> ENDIF:attributes IF:classlist <table cellpadding=5 width="100%"> <tr><td class="tablesubtitle">Modules</td></tr> </table><br> %classlist%<br> ENDIF:classlist !INCLUDE! <!-- method descriptions --> </body> </html> }

FILE_PAGE

=

<<_FILE_PAGE_ <table width="100%"> <tr class="title-row"> <td><table width="100%"><tr> <td class="big-title-font" colspan=2><font size=-3><B>File</B><BR></font>%short_name%</td> <td align="right"><table cellspacing=0 cellpadding=2> <tr> <td class="small-title-font">Path:</td> <td class="small-title-font">%full_path% IF:cvsurl &nbsp;(<a href="%cvsurl%">CVS</a>) ENDIF:cvsurl </td> </tr> <tr> <td class="small-title-font">Modified:</td> <td class="small-title-font">%dtm_modified%</td> </tr> </table> </td></tr></table></td> </tr> </table><br> _FILE_PAGE_

CLASS_PAGE

=

%{ <table width="100%" border=0 cellspacing=0> <tr class="title-row"> <td class="big-title-font"> <font size=-3><B>%classmod%</B><BR></font>%full_name% </td> <td align="right"> <table cellspacing=0 cellpadding=2> <tr valign="top"> <td class="small-title-font">In:</td> <td class="small-title-font"> START:infiles HREF:full_path_url:full_path: IF:cvsurl &nbsp;(<a href="%cvsurl%">CVS</a>) ENDIF:cvsurl END:infiles </td> </tr> IF:parent <tr> <td class="small-title-font">Parent:</td> <td class="small-title-font"> IF:par_url <a href="%par_url%" class="cyan"> ENDIF:par_url %parent% IF:par_url </a> ENDIF:par_url </td> </tr> ENDIF:parent </table> </td> </tr> </table><br> }

METHOD_LIST

=

%{ IF:includes <div class="tablesubsubtitle">Uses</div><br> <div class="name-list"> START:includes <span class="method-name">HREF:aref:name:</span> END:includes </div> ENDIF:includes IF:method_list START:method_list IF:methods <table cellpadding=5 width="100%"> <tr><td class="tablesubtitle">%type% %category% methods</td></tr> </table> START:methods <table width="100%" cellspacing = 0 cellpadding=5 border=0> <tr><td class="methodtitle"> <a name="%aref%"> <b>%name%</b>%params% IF:codeurl <a href="%codeurl%" target="source" class="srclink">src</a> ENDIF:codeurl </a></td></tr> </table> IF:m_desc <div class="description"> %m_desc% </div> ENDIF:m_desc END:methods ENDIF:methods END:method_list ENDIF:method_list }

SRC_PAGE

=

%{ <html> <head><title>%title%</title> <meta http-equiv="Content-Type" content="text/html; charset=%charset%"> <style> .kw { color: #3333FF; font-weight: bold } .cmt { color: green; font-style: italic } .str { color: #662222; font-style: italic } .re { color: #662222; } .ruby-comment { color: green; font-style: italic } .ruby-constant { color: #4433aa; font-weight: bold; } .ruby-identifier { color: #222222; } .ruby-ivar { color: #2233dd; } .ruby-keyword { color: #3333FF; font-weight: bold } .ruby-node { color: #777777; } .ruby-operator { color: #111111; } .ruby-regexp { color: #662222; } .ruby-value { color: #662222; font-style: italic } </style> </head> <body bgcolor="#BBBBBB"> <pre>%code%</pre> </body> </html> }

Source code ##########################

FR_INDEX_BODY | = | %{ !INCLUDE! } |  | Index ################################

FILE_INDEX

=

%{ <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=%charset%"> <style> <!-- body { background-color: #bbbbbb; font-family: #{FONTS}; font-size: 11px; font-style: normal; line-height: 14px; color: #000040; } div.banner { background: #bbbbcc; color: white; padding: 1; margin: 0; font-size: 90%; font-weight: bold; line-height: 1.1; text-align: center; width: 100%; } --> </style> <base target="docwin"> </head> <body> <div class="banner">%list_title%</div> START:entries <a href="%href%">%name%</a><br> END:entries </body></html> }

CLASS_INDEX | = | FILE_INDEX
METHOD_INDEX | = | FILE_INDEX

INDEX

=

%{ <html> <head> <title>%title%</title> <meta http-equiv="Content-Type" content="text/html; charset=%charset%"> </head> <frameset cols="20%,*"> <frameset rows="15%,35%,50%"> <frame src="fr_file_index.html" title="Files" name="Files"> <frame src="fr_class_index.html" name="Modules"> <frame src="fr_method_index.html" name="Subroutines and Functions"> </frameset> <frameset rows="80%,20%"> <frame src="%initial_page%" name="docwin"> <frame src="blank.html" name="source"> </frameset> <noframes> <body bgcolor="#BBBBBB"> Click <a href="html/index.html">here</a> for a non-frames version of this page. </body> </noframes> </frameset> </html> }

BLANK | = | %{ <html><body bgcolor="#BBBBBB"></body></html> } |  | and a blank page to use as a target
HPP_FILE | = | %{ [OPTIONS] Auto Index = Yes Compatibility=1.1 or later Compiled file=%opname%.chm Contents file=contents.hhc Full-text search=Yes Index file=index.hhk Language=0x409 English(United States) Title=%title% [FILES] START:all_html_files %html_file_name% END:all_html_files }

CONTENTS

=

%{ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <HTML> <HEAD> <meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1"> <!-- Sitemap 1.0 --> </HEAD><BODY> <OBJECT type="text/site properties"> <param name="Foreground" value="0x80"> <param name="Window Styles" value="0x800025"> <param name="ImageType" value="Folder"> </OBJECT> <UL> START:contents <LI> <OBJECT type="text/sitemap"> <param name="Name" value="%c_name%"> <param name="Local" value="%ref%"> </OBJECT> IF:methods <ul> START:methods <LI> <OBJECT type="text/sitemap"> <param name="Name" value="%name%"> <param name="Local" value="%aref%"> </OBJECT> END:methods </ul> ENDIF:methods </LI> END:contents </UL> </BODY></HTML> }

CHM_INDEX

=

%{ <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <HTML> <HEAD> <meta name="GENERATOR" content="Microsoft&reg; HTML Help Workshop 4.1"> <!-- Sitemap 1.0 --> </HEAD><BODY> <OBJECT type="text/site properties"> <param name="Foreground" value="0x80"> <param name="Window Styles" value="0x800025"> <param name="ImageType" value="Folder"> </OBJECT> <UL> START:index <LI> <OBJECT type="text/sitemap"> <param name="Name" value="%name%"> <param name="Local" value="%aref%"> </OBJECT> END:index </UL> </BODY></HTML> }

### Public Instance methods

write_extra_pages()

[Source]

    # File rdoc/generators/template/html/kilmer.rb, line 430
    def write_extra_pages
      template = TemplatePage.new(BLANK)
      File.open("blank.html", "w") { |f| template.write_html_on(f, {}) }
    end

write_extra_pages()

[Source]

    # File rdoc/generators/template/html/hefss.rb, line 413
    def write_extra_pages
      template = TemplatePage.new(BLANK)
      File.open("blank.html", "w") { |f| template.write_html_on(f, {}) }
    end

[Validate]