Module: RDocF95::Generator::XHTML::XHTML
- Defined in:
- lib/rdoc-f95/generator/xhtml/xhtml.rb
Overview
CSS2 RDoc XHTML template (for MathML)
This is a template for RDoc that uses XHTML 1.0 Transitional and dictates a bit more of the appearance of the output to cascading stylesheets than the default. It was designed for clean inline code display, and uses DHTMl to toggle the visbility of each method’s source with each click on the ‘[source]’ link.
This is a copy of html.rb. Then some headers that needed to represent MathML are added.
Authors
-
Yasuhiro MORIKAWA <[email protected]>
Copyright © 2008 GFD Dennou Club some rights reserved.
Constant Summary collapse
- FONTS =
"Verdana,Arial,Helvetica,sans-serif"
- STYLE =
<<-EOF 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: scroll; } div.method-source-code pre { color: #ffdead; overflow: visible; } /* --- 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; } /* --- MathML styles --------------------- */ math { font-size: 150%; } EOF
- XHTML_PREAMBLE =
Notation
Following “<?xml-stylesheet … ?>” line is a special setting for Internet Explorer. If you use Mozilla or Firefox, this line is needless. (Anyway, this line doesn’t harm these browsers). Due to this line, if you use Safari (Mac OS X, standard browser), XHTML is not displayed correctly. (I think Safari can not handle xml-stylesheet correctly). If you use Safari, do not use –mathml option.
Following URLs are references
<<-EOF <?xml version="1.0" encoding="<%= values["charset"] %>"?> <?xml-stylesheet type="text/xsl" href="<%= values["mathml_xsl_url"] %>"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN" "http://www.w3.org/Math/DTD/mathml2/xhtml-math11-f.dtd"> EOF
- HEADER =
XHTML_PREAMBLE + <<-EOF <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title><%= values["title"] %></title> <meta http-equiv="Content-Type" content="text/html; charset=<%= values["charset"] %>" /> <meta http-equiv="Content-Script-Type" content="text/javascript" /> <link rel="stylesheet" href="<%= values["style_url"] %>" type="text/css" media="screen" /> <style type="text/css"> <!-- Make codeblocks hidden by default --> div.method-source-code { display: none } </style> <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; } // ]]> </script> </head> <body> EOF
- 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 =
F O O T E R T E M P L A T E
<<-EOF <div id="validator-badges"> <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p> </div> </body> </html> EOF
- FILE_PAGE =
F I L E P A G E H E A D E R T E M P L A T E
<<-EOF <div id="fileHeader"> <h1><%= values["short_name"] %></h1> <table class="header-table"> <tr class="top-aligned-row"> <td><strong>Path:</strong></td> <td><%= values["full_path"] %> <% if values["cvsurl"] then %> (<a href="<%= values["cvsurl"] %>"><acronym title="Concurrent Versioning System">CVS</acronym></a>) <% end %> </td> </tr> <tr class="top-aligned-row"> <td><strong>Last Update:</strong></td> <td><%= values["dtm_modified"] %></td> </tr> </table> </div> EOF
- CLASS_PAGE =
C L A S S P A G E H E A D E R T E M P L A T E
<<-EOF <div id="classHeader"> <table class="header-table"> <tr class="top-aligned-row"> <td><strong><%= values["classmod"] %></strong></td> <td class="class-name-in-header"><%= values["full_name"] %></td> </tr> <tr class="top-aligned-row"> <td><strong>In:</strong></td> <td> <% values["infiles"].each do |infiles| %> <% if infiles["full_path_url"] then %> <a href="<%= infiles["full_path_url"] %>"> <% end %> <%= infiles["full_path"] %> <% if infiles["full_path_url"] then %> </a> <% end %> <% if infiles["cvsurl"] then %> (<a href="<%= infiles["cvsurl"] %>"><acronym title="Concurrent Versioning System">CVS</acronym></a>) <% end %> <br /> <% end # values["infiles"] %> </td> </tr> <% if values["parent"] then %> <tr class="top-aligned-row"> <td><strong>Parent:</strong></td> <td> <% if values["par_url"] then %> <a href="<%= values["par_url"] %>"> <% end %> <%= values["parent"] %> <% if values["par_url"] then %> </a> <% end %> </td> </tr> <% end %> </table> </div> EOF
- METHOD_LIST =
M E T H O D L I S T T E M P L A T E
<<-EOF <div id="contextContent"> <% if values["diagram"] then %> <div id="diagram"> <%= values["diagram"] %> </div> <% end %> <% if values["description"] then %> <div id="description"> <%= values["description"] %> </div> <% end %> <% if values["requires"] then %> <div id="requires-list"> <h3 class="section-bar">Required files</h3> <div class="name-list"> <% values["requires"].each do |requires| %> <%= href requires["aref"], requires["name"] %> <% end # values["requires"] %> </div> </div> <% end %> <% if values["toc"] then %> <div id="contents-list"> <h3 class="section-bar">Contents</h3> <ul> <% values["toc"].each do |toc| %> <li><a href="#<%= values["href"] %>"><%= values["secname"] %></a></li> <% end # values["toc"] %> </ul> <% end %> </div> <% if values["methods"] then %> <div id="method-list"> <h3 class="section-bar">Methods</h3> <div class="name-list"> <% values["methods"].each do |methods| %> <%= href methods["aref"], methods["name"] %> <% end # values["methods"] %> </div> </div> <% end %> </div> <!-- if includes --> <% if values["includes"] then %> <div id="includes"> <h3 class="section-bar">Included Modules</h3> <div id="includes-list"> <% values["includes"].each do |includes| %> <span class="include-name"><%= href includes["aref"], includes["name"] %></span> <% end # values["includes"] %> </div> </div> <% end %> <% values["sections"].each do |sections| %> <div id="section"> <% if sections["sectitle"] then %> <h2 class="section-title"><a name="<%= sections["secsequence"] %>"><%= sections["sectitle"] %></a></h2> <% if sections["seccomment"] then %> <div class="section-comment"> <%= sections["seccomment"] %> </div> <% end %> <% end %> <% if values["classlist"] then %> <div id="class-list"> <h3 class="section-bar">Classes and Modules</h3> <%= values["classlist"] %> </div> <% end %> <% if values["constants"] then %> <div id="constants-list"> <h3 class="section-bar">Constants</h3> <div class="name-list"> <table summary="Constants"> <% values["constants"].each do |constants| %> <tr class="top-aligned-row context-row"> <td class="context-item-name"><%= constants["name"] %></td> <td>=</td> <td class="context-item-value"><%= constants["value"] %></td> <% if values["desc"] then %> <td width="3em"> </td> <td class="context-item-desc"><%= constants["desc"] %></td> <% end %> </tr> <% end # values["constants"] %> </table> </div> </div> <% end %> <% if values["aliases"] then %> <div id="aliases-list"> <h3 class="section-bar">External Aliases</h3> <div class="name-list"> <table summary="aliases"> <% values["aliases"].each do |aliases| $stderr.puts({ :aliases => aliases }.inspect) %> <tr class="top-aligned-row context-row"> <td class="context-item-name"><%= values["old_name"] %></td> <td>-></td> <td class="context-item-value"><%= values["new_name"] %></td> </tr> <% if values["desc"] then %> <tr class="top-aligned-row context-row"> <td> </td> <td colspan="2" class="context-item-desc"><%= values["desc"] %></td> </tr> <% end %> <% end # values["aliases"] %> </table> </div> </div> <% end %> <% if values["attributes"] then %> <div id="attribute-list"> <h3 class="section-bar">Attributes</h3> <div class="name-list"> <table> <% values["attributes"].each do |attributes| $stderr.puts({ :attributes => attributes }.inspect) %> <tr class="top-aligned-row context-row"> <td class="context-item-name"><%= values["name"] %></td> <% if values["rw"] then %> <td class="context-item-value"> [<%= values["rw"] %>] </td> <% end %> <% unless values["rw"] then %> <td class="context-item-value"> </td> <% end %> <td class="context-item-desc"><%= values["a_desc"] %></td> </tr> <% end # values["attributes"] %> </table> </div> </div> <% end %> <!-- if method_list --> <% if sections["method_list"] then %> <div id="methods"> <% sections["method_list"].each do |method_list| %> <% if method_list["methods"] then %> <h3 class="section-bar"><%= method_list["type"] %> <%= method_list["category"] %> methods</h3> <% method_list["methods"].each do |methods| %> <div id="method-<%= methods["aref"] %>" class="method-detail"> <a name="<%= methods["aref"] %>"></a> <div class="method-heading"> <% if methods["codeurl"] then %> <a href="<%= methods["codeurl"] %>" target="Code" class="method-signature" onclick="popupCode('<%= methods["codeurl"] %>');return false;"> <% end %> <% if methods["sourcecode"] then %> <a href="#<%= methods["aref"] %>" class="method-signature"> <% end %> <% if methods["callseq"] then %> <span class="method-name"><%= methods["callseq"] %></span> <% end %> <% unless methods["callseq"] then %> <span class="method-name"><%= methods["name"] %></span><span class="method-args"><%= methods["params"] %></span> <% end %> <% if methods["codeurl"] then %> </a> <% end %> <% if methods["sourcecode"] then %> </a> <% end %> </div> <div class="method-description"> <% if methods["m_desc"] then %> <%= methods["m_desc"] %> <% end %> <% if methods["sourcecode"] then %> <p><a class="source-toggle" href="#" onclick="toggleCode('<%= methods["aref"] %>-source');return false;">[Source]</a></p> <div class="method-source-code" id="<%= methods["aref"] %>-source"> <pre> <%= methods["sourcecode"] %> </pre> </div> <% end %> </div> </div> <% end # method_list["methods"] %> <% end %> <% end # sections["method_list"] %> </div> <% end %> <% end # values["sections"] %> EOF
- BODY =
B O D Y T E M P L A T E
HEADER + %{ <%= template_include %> <!-- banner header --> <div id="bodyContent"> } + METHOD_LIST + %{ </div> } + FOOTER
- SRC_PAGE =
S O U R C E C O D E T E M P L A T E
XHTML_PREAMBLE + <<-EOF <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title><%= values["title"] %></title> <meta http-equiv="Content-Type" content="text/html; charset=<%= values["charset"] %>" /> <link rel="stylesheet" href="<%= values["style_url"] %>" type="text/css" media="screen" /> </head> <body class="standalone-code"> <pre><%= values["code"] %></pre> </body> </html> EOF
- FR_INDEX_BODY =
I N D E X F I L E T E M P L A T E S
%{ <%= template_include %> }
- FILE_INDEX =
XHTML_PREAMBLE + <<-EOF <!-- <%= values["list_title"] %> --> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title><%= values["list_title"] %></title> <meta http-equiv="Content-Type" content="text/html; charset=<%= values["charset"] %>" /> <link rel="stylesheet" href="<%= values["style_url"] %>" type="text/css" /> <base target="docwin" /> </head> <body> <div id="index"> <h1 class="section-bar"><%= values["list_title"] %></h1> <div id="index-entries"> <% values["entries"].each do |entries| %> <a href="<%= entries["href"] %>"><%= entries["name"] %></a><br /> <% end # values["entries"] %> </div> </div> </body> </html> EOF
- CLASS_INDEX =
FILE_INDEX
- METHOD_INDEX =
FILE_INDEX
- INDEX =
<<-EOF <?xml version="1.0" encoding="<%= values["charset"] %>"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> <!-- <%= values["title"] %> --> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title><%= values["title"] %></title> <meta http-equiv="Content-Type" content="text/html; charset=<%= values["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="<%= values["initial_page"] %>" name="docwin" /> </frameset> </html> EOF