1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00

1. Force --inline-source if --one-file given

2. Add new :section: directive which starts a new section in the output.
   The title following :section: is used as the section heading, and the
   remainder of the comment containing the section is used as
   introductory text. Subsequent methods, aliases, attributes,
   and classes will be documented in this section.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_8@7344 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
dave 2004-11-20 15:02:57 +00:00
parent 228b72b7a0
commit 3635edac9d
7 changed files with 481 additions and 322 deletions

View file

@ -20,19 +20,22 @@
#
module RDoc
module Page
module Page
FONTS = "Verdana,Arial,Helvetica,sans-serif"
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: 120%; }
h1 { font-size: 150%; }
h2,h3,h4 { margin-top: 1em; }
a { background: #eef; color: #039; text-decoration: none; }
@ -40,61 +43,75 @@ 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;
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: 0.9em;
font-size: 90%;
}
div#index a {
margin-left: 0.7em;
}
div#classHeader {
div#index .section-bar {
margin-left: 0px;
padding-left: 0.7em;
background: #ccc;
font-size: small;
}
div#classHeader, div#fileHeader {
width: auto;
background: #039;
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#classHeader a, div#fileHeader a {
background: inherit;
color: white;
}
div#classHeader td {
div#classHeader td, div#fileHeader td {
background: inherit;
color: white;
}
div#fileHeader {
width: auto;
background: #039;
color: white;
padding: 0.5em 1.5em 0.5em 1.5em;
margin: 0;
border-bottom: 3px solid #006;
background: #057;
}
div#fileHeader a {
background: inherit;
color: white;
div#classHeader {
background: #048;
}
div#fileHeader td {
background: inherit;
color: white;
.class-name-in-header {
font-size: 180%;
font-weight: bold;
}
div#bodyContent {
padding: 0 1.5em 0 1.5em;
}
@ -105,7 +122,7 @@ div#description {
border: 1px dotted #999;
}
div#description h1,h2,h3,h4,h5,h6 {
div#description h1,h3,h3,h4,h5,h6 {
color: black;
background: transparent;
}
@ -137,35 +154,51 @@ table.header-table {
color: #DEDEDE;
}
.section-bar {
.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: vertical-align: top }
.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: x-small; color: #448; }
.context-item-desc { background: #efefef; }
.context-item-value { font-size: small; color: #448; }
.context-item-desc { color: #333; padding-left: 2em; }
/* --- Method classes -------------------------- */
.method-detail {
background: #EFEFEF;
background: #efefef;
padding: 0;
margin-top: 0.5em;
margin-bottom: 0.5em;
border: 1px dotted #DDD;
margin-bottom: 1em;
border: 1px dotted #ccc;
}
.method-heading {
color: black;
background: #AAA;
border-bottom: 1px solid #666;
padding: 0.2em 0.5em 0 0.5em;
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; }
@ -178,7 +211,7 @@ a.source-toggle { font-size: 90%; }
div.method-source-code {
background: #262626;
color: #ffdead;
margin: 1em;
margin: 1em;
padding: 0.5em;
border: 1px dashed #999;
overflow: hidden;
@ -190,20 +223,20 @@ div.method-source-code pre { color: #ffdead; overflow: hidden; }
.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-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; }
.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; }
}
#####################################################################
### H E A D E R T E M P L A T E
### H E A D E R T E M P L A T E
#####################################################################
XHTML_PREAMBLE = %{<?xml version="1.0" encoding="%charset%"?>
@ -215,41 +248,41 @@ XHTML_PREAMBLE = %{<?xml version="1.0" encoding="%charset%"?>
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[
<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 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;
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"
}
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>
return true;
}
// Make codeblocks hidden by default
document.writeln( "<style type=\\"text/css\\">div.method-source-code { display: none }</style>" )
// ]]>
</script>
</head>
<body>
@ -257,129 +290,15 @@ HEADER = XHTML_PREAMBLE + %{
#####################################################################
### C O N T E X T C O N T E N T T E M P L A T E
### C O N T E X T C O N T E N T T E M P L A T E
#####################################################################
CONTEXT_CONTENT = %{
<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">
<h2 class="section-bar">Required files</h2>
<div class="name-list">
START:requires
HREF:aref:name:&nbsp;&nbsp;
END:requires
</div>
</div>
ENDIF:requires
IF:methods
<div id="method-list">
<h2 class="section-bar">Methods</h2>
<div class="name-list">
START:methods
HREF:aref:name:&nbsp;&nbsp;
END:methods
</div>
</div>
ENDIF:methods
IF:constants
<div id="constants-list">
<h2 class="section-bar">Constants</h2>
<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>
</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:constants
</table>
</div>
</div>
ENDIF:constants
IF:aliases
<div id="aliases-list">
<h2 class="section-bar">External Aliases</h2>
<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">
<h2 class="section-bar">Attributes</h2>
<div class="name-list">
<table>
START:attributes
<tr class="top-aligned-row context-row">
<td class="context-item-name">%name%</td>
<td class="context-item-value">&nbsp;[%rw%]&nbsp;</td>
<td class="context-item-desc">%a_desc%</td>
</tr>
END:attributes
</table>
</div>
</div>
ENDIF:attributes
IF:classlist
<div id="class-list">
<h2 class="section-bar">Classes and Modules</h2>
%classlist%
</div>
ENDIF:classlist
</div>
}
#####################################################################
### F O O T E R T E M P L A T E
### F O O T E R T E M P L A T E
#####################################################################
FOOTER = %{
<div id="validator-badges">
@ -392,38 +311,41 @@ FOOTER = %{
#####################################################################
### F I L E P A G E H E A D E R T E M P L A T E
### F I L E P A G E H E A D 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%
<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>)
&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>
</td>
</tr>
<tr class="top-aligned-row">
<td><strong>Last Update:</strong></td>
<td>%dtm_modified%</td>
</tr>
</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
### C L A S S P A G E H E A D E R T E M P L A T E
#####################################################################
CLASS_PAGE = %{
<div id="classHeader">
<h1>%full_name% <sup class="type-note">(%classmod%)</sup></h1>
<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>
@ -436,9 +358,9 @@ IF:full_path_url
</a>
ENDIF:full_path_url
IF:cvsurl
&nbsp;(<a href="%cvsurl%">CVS</a>)
&nbsp;(<a href="%cvsurl%">CVS</a>)
ENDIF:cvsurl
<br />
<br />
END:infiles
</td>
</tr>
@ -463,121 +385,258 @@ ENDIF:parent
#####################################################################
### M E T H O D L I S T T E M P L A T E
### M E T H O D L I S T T E M P L A T E
#####################################################################
METHOD_LIST = %{
<!-- if includes -->
IF:includes
<div id="includes">
<h2 class="section-bar">Included Modules</h2>
<div id="contextContent">
IF:diagram
<div id="diagram">
%diagram%
</div>
ENDIF:diagram
<div id="includes-list">
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>
<span class="include-name">HREF:aref:name:</span>
END:includes
</div>
</div>
</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 method_list -->
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>
<td class="context-item-value">&nbsp;[%rw%]&nbsp;</td>
<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">
<div id="methods">
START:method_list
IF:methods
<h2 class="section-bar">%type% %category% methods</h2>
<h3 class="section-bar">%type% %category% methods</h3>
START:methods
<div id="method-%aref%" class="method-detail">
<a name="%aref%"></a>
<div id="method-%aref%" class="method-detail">
<a name="%aref%"></a>
<div class="method-heading">
<div class="method-heading">
IF:codeurl
<a href="%codeurl%" target="Code" class="method-signature"
onclick="popupCode('%codeurl%');return false;">
<a href="%codeurl%" target="Code" class="method-signature"
onclick="popupCode('%codeurl%');return false;">
ENDIF:codeurl
IF:sourcecode
<a href="#%aref%" class="method-signature">
<a href="#%aref%" class="method-signature">
ENDIF:sourcecode
IF:callseq
<span class="method-name">%callseq%</span>
<span class="method-name">%callseq%</span>
ENDIF:callseq
IFNOT:callseq
<span class="method-name">%name%</span><span class="method-args">%params%</span>
<span class="method-name">%name%</span><span class="method-args">%params%</span>
ENDIF:callseq
IF:codeurl
</a>
</a>
ENDIF:codeurl
IF:sourcecode
</a>
</a>
ENDIF:sourcecode
</div>
<div class="method-description">
</div>
<div class="method-description">
IF:m_desc
%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">
<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>
</div>
ENDIF:sourcecode
</div>
</div>
</div>
</div>
END:methods
ENDIF:methods
END:method_list
</div>
</div>
ENDIF:method_list
END:sections
}
#####################################################################
### B O D Y T E M P L A T E
### B O D Y T E M P L A T E
#####################################################################
BODY = HEADER + %{
!INCLUDE! <!-- banner header -->
<div id="bodyContent">
<div id="bodyContent">
} + CONTEXT_CONTENT + METHOD_LIST + %{
} + METHOD_LIST + %{
</div>
</div>
} + FOOTER
#####################################################################
### S O U R C E C O D E T E M P L A T E
### S O U R C E C O D E 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" />
<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>
<pre>%code%</pre>
</body>
</html>
}
#####################################################################
### I N D E X F I L E T E M P L A T E S
### I N D E X F I L E T E M P L A T E S
#####################################################################
FR_INDEX_BODY = %{
@ -592,19 +651,19 @@ FILE_INDEX = XHTML_PREAMBLE + %{
-->
<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" />
<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">
<h1 class="section-bar">%list_title%</h1>
<div id="index-entries">
START:entries
<a href="%href%">%name%</a><br />
<a href="%href%">%name%</a><br />
END:entries
</div>
</div>
</div>
</body>
</html>
@ -625,8 +684,8 @@ INDEX = %{<?xml version="1.0" encoding="%charset%"?>
-->
<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%" />
<title>%title%</title>
<meta http-equiv="Content-Type" content="text/html; charset=%charset%" />
</head>
<frameset rows="20%, 80%">
<frameset cols="25%,35%,45%">
@ -641,7 +700,7 @@ INDEX = %{<?xml version="1.0" encoding="%charset%"?>
end # module Page
end # module Page
end # class RDoc
require 'rdoc/generators/template/html/one_page_html'