<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<head>
<style>.content {
padding: 20px;
height: 100%;
width: 944px;
margin-left: auto;
margin-right: auto;
}
.fold {
width: 20px;
float: left;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.number {
width: 45px;
float: left;
margin-right: 10px;
text-align: right;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.line {
}
.content {
font-family: "Monospace";
font-size: 1em;
background: #3f3f3f;
color: White;
width: 944px;
padding: 20px;
height: 100%;
margin-left: auto;
margin-right: auto;
}
font.Alert {
color: Yellow;
font-weight: bold;
}
font.Annotation {
color: Yellow;
font-style: italic;
}
font.Attribute {
color: LightPink;
}
font.BaseN {
color: Gold;
}
font.BuiltIn {
color: Coral;
}
font.Char {
color: Cyan;
}
font.Comment {
color: Beige;
font-style: italic;
}
font.CommentVar {
color: LightBlue;
font-style: italic;
}
font.Constant {
color: White;
font-weight: bold;
}
font.ControlFlow {
color: DeepPink;
}
font.DataType {
color: CadetBlue;
}
font.DecVal {
color: MediumPurple;
font-weight: bold;
}
font.Documentation {
color: Gold;
font-style: italic;
}
font.Error {
color: Red;
font-weight: bold;
}
font.Extension {
color: DarkGray;
font-weight: bold;
}
font.Float {
color: DarkViolet;
font-weight: bold;
}
font.Function {
color: RosyBrown;
}
font.Import {
color: PaleVioletRed;
}
font.Information {
color: LightGreen;
font-style: italic;
}
font.Keyword {
color: LightGreen;
font-weight: bold;
}
font.Normal {
color: White;
}
font.Operator {
color: Magenta;
}
font.Others {
color: GreenYellow;
}
font.Preprocessor {
color: DarkSeaGreen ;
font-weight: bold;
}
font.RegionMarker {
color: Plum;
}
font.SpecialChar {
color: Plum;
font-weight: bold;
}
font.SpecialString {
color: LightBlue;
}
font.String {
color: MediumAquaMarine;
}
font.Variable {
color: Turquoise;
font-weight: bold;
}
font.VerbatimString {
color: LightSkyBlue;
}
font.Warning {
color: Brown;
font-weight: bold;
}
</style>
<title>Kamelon output</title>
</head>
<body>
<div class="content">
<div id="1" class="line"><font class="Import">from</font><font class="Normal"> sources </font><font class="Import">import</font><font class="Normal"> </font><font class="Operator">*</font></br></div>
<div id="2" class="line"><font class="Import">from</font><font class="Normal"> content </font><font class="Import">import</font><font class="Normal"> </font><font class="Operator">*</font></br></div>
<div id="3" class="line"><font class="Import">from</font><font class="Normal"> formatter </font><font class="Import">import</font><font class="Normal"> </font><font class="Operator">*</font></br></div>
<div id="4" class="line"></br></div>
<div id="5" class="line"><font class="Import">import</font><font class="Normal"> time</font></br></div>
<div id="6" class="line"></br></div>
<div id="7" class="line"><font class="Comment"># The following defines the HTML header used by all generated pages.</font></br></div>
<div id="8" class="line"><font class="Comment">#</font></br></div>
<div id="9" class="line"><font class="Normal">html_header_1 </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"""\</font></br></div>
<div id="10" class="line"><font class="String"><html></font></br></div>
<div id="11" class="line"><font class="String"><header></font></br></div>
<div id="12" class="line"><font class="String"><title>"""</font></br></div>
<div id="13" class="line"></br></div>
<div id="14" class="line"><font class="Normal">html_header_2</font><font class="Operator">=</font><font class="Normal"> </font><font class="String">""" API Reference</title></font></br></div>
<div id="15" class="line"><font class="String"><basefont face="Verdana,Geneva,Arial,Helvetica"></font></br></div>
<div id="16" class="line"><font class="String"><style content="text/css"></font></br></div>
<div id="17" class="line"><font class="String"> P { text-align=justify }</font></br></div>
<div id="18" class="line"><font class="String"> H1 { text-align=center }</font></br></div>
<div id="19" class="line"><font class="String"> LI { text-align=justify }</font></br></div>
<div id="20" class="line"><font class="String"></style></font></br></div>
<div id="21" class="line"><font class="String"></header></font></br></div>
<div id="22" class="line"><font class="String"><body text=#000000</font></br></div>
<div id="23" class="line"><font class="String"> bgcolor=#FFFFFF</font></br></div>
<div id="24" class="line"><font class="String"> link=#0000EF</font></br></div>
<div id="25" class="line"><font class="String"> vlink=#51188E</font></br></div>
<div id="26" class="line"><font class="String"> alink=#FF0000></font></br></div>
<div id="27" class="line"><font class="String"><center><h1>"""</font></br></div>
<div id="28" class="line"></br></div>
<div id="29" class="line"><font class="Normal">html_header_3</font><font class="Operator">=</font><font class="String">""" API Reference</h1></center></font></br></div>
<div id="30" class="line"><font class="String">"""</font></br></div>
<div id="31" class="line"></br></div>
<div id="32" class="line"></br></div>
<div id="33" class="line"></br></div>
<div id="34" class="line"><font class="Comment"># The HTML footer used by all generated pages.</font></br></div>
<div id="35" class="line"><font class="Comment">#</font></br></div>
<div id="36" class="line"><font class="Normal">html_footer </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"""\</font></br></div>
<div id="37" class="line"><font class="String"></body></font></br></div>
<div id="38" class="line"><font class="String"></html>"""</font></br></div>
<div id="39" class="line"></br></div>
<div id="40" class="line"><font class="Comment"># The header and footer used for each section.</font></br></div>
<div id="41" class="line"><font class="Comment">#</font></br></div>
<div id="42" class="line"><font class="Normal">section_title_header </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"<center><h1>"</font></br></div>
<div id="43" class="line"><font class="Normal">section_title_footer </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"</h1></center>"</font></br></div>
<div id="44" class="line"></br></div>
<div id="45" class="line"><font class="Comment"># The header and footer used for code segments.</font></br></div>
<div id="46" class="line"><font class="Comment">#</font></br></div>
<div id="47" class="line"><font class="Normal">code_header </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"<font color=blue><pre>"</font></br></div>
<div id="48" class="line"><font class="Normal">code_footer </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"</pre></font>"</font></br></div>
<div id="49" class="line"></br></div>
<div id="50" class="line"><font class="Comment"># Paragraph header and footer.</font></br></div>
<div id="51" class="line"><font class="Comment">#</font></br></div>
<div id="52" class="line"><font class="Normal">para_header </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"<p>"</font></br></div>
<div id="53" class="line"><font class="Normal">para_footer </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"</p>"</font></br></div>
<div id="54" class="line"></br></div>
<div id="55" class="line"><font class="Comment"># Block header and footer.</font></br></div>
<div id="56" class="line"><font class="Comment">#</font></br></div>
<div id="57" class="line"><font class="Normal">block_header </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"<center><table width=75%><tr><td>"</font></br></div>
<div id="58" class="line"><font class="Normal">block_footer </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"</td></tr></table><hr width=75%></center>"</font></br></div>
<div id="59" class="line"></br></div>
<div id="60" class="line"><font class="Comment"># Description header/footer.</font></br></div>
<div id="61" class="line"><font class="Comment">#</font></br></div>
<div id="62" class="line"><font class="Normal">description_header </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"<center><table width=87%><tr><td>"</font></br></div>
<div id="63" class="line"><font class="Normal">description_footer </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"</td></tr></table></center><br>"</font></br></div>
<div id="64" class="line"></br></div>
<div id="65" class="line"><font class="Comment"># Marker header/inter/footer combination.</font></br></div>
<div id="66" class="line"><font class="Comment">#</font></br></div>
<div id="67" class="line"><font class="Normal">marker_header </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"<center><table width=87</font><font class="SpecialChar">% c</font><font class="String">ellpadding=5><tr bgcolor=#EEEEFF><td><em><b>"</font></br></div>
<div id="68" class="line"><font class="Normal">marker_inter </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"</b></em></td></tr><tr><td>"</font></br></div>
<div id="69" class="line"><font class="Normal">marker_footer </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"</td></tr></table></center>"</font></br></div>
<div id="70" class="line"></br></div>
<div id="71" class="line"><font class="Comment"># Source code extracts header/footer.</font></br></div>
<div id="72" class="line"><font class="Comment">#</font></br></div>
<div id="73" class="line"><font class="Normal">source_header </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"<center><table width=87%><tr bgcolor=#D6E8FF width=100%><td><pre></font><font class="Char">\n</font><font class="String">"</font></br></div>
<div id="74" class="line"><font class="Normal">source_footer </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"</font><font class="Char">\n</font><font class="String"></pre></table></center><br>"</font></br></div>
<div id="75" class="line"></br></div>
<div id="76" class="line"><font class="Comment"># Chapter header/inter/footer.</font></br></div>
<div id="77" class="line"><font class="Comment">#</font></br></div>
<div id="78" class="line"><font class="Normal">chapter_header </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"<br><center><table width=75%><tr><td><h2>"</font></br></div>
<div id="79" class="line"><font class="Normal">chapter_inter </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"</h2><ul>"</font></br></div>
<div id="80" class="line"><font class="Normal">chapter_footer </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"</ul></td></tr></table></center>"</font></br></div>
<div id="81" class="line"></br></div>
<div id="82" class="line"></br></div>
<div id="83" class="line"><font class="Comment"># source language keyword coloration/styling</font></br></div>
<div id="84" class="line"><font class="Comment">#</font></br></div>
<div id="85" class="line"><font class="Normal">keyword_prefix </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">'<font color="darkblue">'</font></br></div>
<div id="86" class="line"><font class="Normal">keyword_suffix </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">'</font>'</font></br></div>
<div id="87" class="line"></br></div>
<div id="88" class="line"><font class="Normal">section_synopsis_header </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">'<h2>Synopsys</h2><font color="cyan">'</font></br></div>
<div id="89" class="line"><font class="Normal">section_synopsis_footer </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">'</font>'</font></br></div>
<div id="90" class="line"></br></div>
<div id="91" class="line"><font class="Comment"># Translate a single line of source to HTML. This will convert</font></br></div>
<div id="92" class="line"><font class="Comment"># a "<" into "&lt.", ">" into "&gt.", etc.</font></br></div>
<div id="93" class="line"><font class="Comment">#</font></br></div>
<div id="94" class="line"><font class="Keyword">def</font><font class="Normal"> html_quote( line ):</font></br></div>
<div id="95" class="line"><font class="Normal"> result </font><font class="Operator">=</font><font class="Normal"> string.replace( line, </font><font class="String">"&"</font><font class="Normal">, </font><font class="String">"&amp;"</font><font class="Normal"> )</font></br></div>
<div id="96" class="line"><font class="Normal"> result </font><font class="Operator">=</font><font class="Normal"> string.replace( result, </font><font class="String">"<"</font><font class="Normal">, </font><font class="String">"&lt;"</font><font class="Normal"> )</font></br></div>
<div id="97" class="line"><font class="Normal"> result </font><font class="Operator">=</font><font class="Normal"> string.replace( result, </font><font class="String">">"</font><font class="Normal">, </font><font class="String">"&gt;"</font><font class="Normal"> )</font></br></div>
<div id="98" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> result</font></br></div>
<div id="99" class="line"></br></div>
<div id="100" class="line"></br></div>
<div id="101" class="line"><font class="Comment"># same as 'html_quote', but ignores left and right brackets</font></br></div>
<div id="102" class="line"><font class="Comment">#</font></br></div>
<div id="103" class="line"><font class="Keyword">def</font><font class="Normal"> html_quote0( line ):</font></br></div>
<div id="104" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> string.replace( line, </font><font class="String">"&"</font><font class="Normal">, </font><font class="String">"&amp;"</font><font class="Normal"> )</font></br></div>
<div id="105" class="line"></br></div>
<div id="106" class="line"></br></div>
<div id="107" class="line"><font class="Keyword">def</font><font class="Normal"> dump_html_code( lines, prefix </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">""</font><font class="Normal"> ):</font></br></div>
<div id="108" class="line"><font class="Normal"> </font><font class="Comment"># clean the last empty lines</font></br></div>
<div id="109" class="line"><font class="Normal"> </font><font class="Comment">#</font></br></div>
<div id="110" class="line"><font class="Normal"> l </font><font class="Operator">=</font><font class="Normal"> </font><font class="BuiltIn">len</font><font class="Normal">( </font><font class="Variable">self</font><font class="Normal">.lines )</font></br></div>
<div id="111" class="line"><font class="Normal"> </font><font class="ControlFlow">while</font><font class="Normal"> l </font><font class="Operator">></font><font class="Normal"> </font><font class="Float">0</font><font class="Normal"> </font><font class="Keyword">and</font><font class="Normal"> string.strip( </font><font class="Variable">self</font><font class="Normal">.lines[l </font><font class="Operator">-</font><font class="Normal"> </font><font class="Float">1</font><font class="Normal">] ) </font><font class="Operator">==</font><font class="Normal"> </font><font class="String">""</font><font class="Normal">:</font></br></div>
<div id="112" class="line"><font class="Normal"> l </font><font class="Operator">=</font><font class="Normal"> l </font><font class="Operator">-</font><font class="Normal"> </font><font class="Float">1</font></br></div>
<div id="113" class="line"></br></div>
<div id="114" class="line"><font class="Normal"> </font><font class="Comment"># The code footer should be directly appended to the last code</font></br></div>
<div id="115" class="line"><font class="Normal"> </font><font class="Comment"># line to avoid an additional blank line.</font></br></div>
<div id="116" class="line"><font class="Normal"> </font><font class="Comment">#</font></br></div>
<div id="117" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> prefix </font><font class="Operator">+</font><font class="Normal"> code_header,</font></br></div>
<div id="118" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> line </font><font class="Keyword">in</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.lines[0 : l</font><font class="Operator">+</font><font class="Normal">1]:</font></br></div>
<div id="119" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">'</font><font class="Char">\n</font><font class="String">'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> prefix </font><font class="Operator">+</font><font class="Normal"> html_quote(line),</font></br></div>
<div id="120" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> prefix </font><font class="Operator">+</font><font class="Normal"> code_footer,</font></br></div>
<div id="121" class="line"></br></div>
<div id="122" class="line"></br></div>
<div id="123" class="line"></br></div>
<div id="124" class="line"><font class="Keyword">class</font><font class="Normal"> HtmlFormatter(Formatter):</font></br></div>
<div id="125" class="line"></br></div>
<div id="126" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> </font><font class="Function">__init__</font><font class="Normal">( </font><font class="Variable">self</font><font class="Normal">, processor, project_title, file_prefix ):</font></br></div>
<div id="127" class="line"></br></div>
<div id="128" class="line"><font class="Normal"> Formatter.</font><font class="Function">__init__</font><font class="Normal">( </font><font class="Variable">self</font><font class="Normal">, processor )</font></br></div>
<div id="129" class="line"></br></div>
<div id="130" class="line"><font class="Normal"> </font><font class="Keyword">global</font><font class="Normal"> html_header_1, html_header_2, html_header_3, html_footer</font></br></div>
<div id="131" class="line"></br></div>
<div id="132" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> file_prefix:</font></br></div>
<div id="133" class="line"><font class="Normal"> file_prefix </font><font class="Operator">=</font><font class="Normal"> file_prefix </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">"-"</font></br></div>
<div id="134" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal">:</font></br></div>
<div id="135" class="line"><font class="Normal"> file_prefix </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">""</font></br></div>
<div id="136" class="line"></br></div>
<div id="137" class="line"><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.project_title </font><font class="Operator">=</font><font class="Normal"> project_title</font></br></div>
<div id="138" class="line"><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.file_prefix </font><font class="Operator">=</font><font class="Normal"> file_prefix</font></br></div>
<div id="139" class="line"><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.html_header </font><font class="Operator">=</font><font class="Normal"> html_header_1 </font><font class="Operator">+</font><font class="Normal"> project_title </font><font class="Operator">+</font><font class="Normal"> html_header_2 </font><font class="Operator">+</font><font class="Normal"> </font><font class="Operator">\</font></br></div>
<div id="140" class="line"><font class="Normal"> project_title </font><font class="Operator">+</font><font class="Normal"> html_header_3</font></br></div>
<div id="141" class="line"></br></div>
<div id="142" class="line"><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.html_footer </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"<p><center><font size=""-2"">generated on "</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> </font><font class="Operator">\</font></br></div>
<div id="143" class="line"><font class="Normal"> time.asctime( time.localtime( time.time() ) ) </font><font class="Operator">+</font><font class="Normal"> </font><font class="Operator">\</font></br></div>
<div id="144" class="line"><font class="Normal"> </font><font class="Comment">"</font></p></center>"</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> html_footer</font></br></div>
<div id="145" class="line"></br></div>
<div id="146" class="line"><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.columns </font><font class="Operator">=</font><font class="Normal"> </font><font class="Float">3</font></br></div>
<div id="147" class="line"></br></div>
<div id="148" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> make_section_url( </font><font class="Variable">self</font><font class="Normal">, section ):</font></br></div>
<div id="149" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.file_prefix </font><font class="Operator">+</font><font class="Normal"> section.name </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">".html"</font></br></div>
<div id="150" class="line"></br></div>
<div id="151" class="line"></br></div>
<div id="152" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> make_block_url( </font><font class="Variable">self</font><font class="Normal">, block ):</font></br></div>
<div id="153" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.make_section_url( block.section ) </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">"#"</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> block.name</font></br></div>
<div id="154" class="line"></br></div>
<div id="155" class="line"></br></div>
<div id="156" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> make_html_words( </font><font class="Variable">self</font><font class="Normal">, words ):</font></br></div>
<div id="157" class="line"><font class="Normal"> </font><font class="Comment">""" convert a series of simple words into some HTML text """</font></br></div>
<div id="158" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">""</font></br></div>
<div id="159" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> words:</font></br></div>
<div id="160" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> html_quote( words[0] )</font></br></div>
<div id="161" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> w </font><font class="Keyword">in</font><font class="Normal"> words[1:]:</font></br></div>
<div id="162" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> line </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">" "</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> html_quote( w )</font></br></div>
<div id="163" class="line"></br></div>
<div id="164" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> line</font></br></div>
<div id="165" class="line"></br></div>
<div id="166" class="line"></br></div>
<div id="167" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> make_html_word( </font><font class="Variable">self</font><font class="Normal">, word ):</font></br></div>
<div id="168" class="line"><font class="Normal"> </font><font class="Comment">"""analyze a simple word to detect cross-references and styling"""</font></br></div>
<div id="169" class="line"><font class="Normal"> </font><font class="Comment"># look for cross-references</font></br></div>
<div id="170" class="line"><font class="Normal"> </font><font class="Comment">#</font></br></div>
<div id="171" class="line"><font class="Normal"> m </font><font class="Operator">=</font><font class="Normal"> re_crossref.match( word )</font></br></div>
<div id="172" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> m:</font></br></div>
<div id="173" class="line"><font class="Normal"> </font><font class="ControlFlow">try</font><font class="Normal">:</font></br></div>
<div id="174" class="line"><font class="Normal"> name </font><font class="Operator">=</font><font class="Normal"> m.group(</font><font class="Float">1</font><font class="Normal">)</font></br></div>
<div id="175" class="line"><font class="Normal"> block </font><font class="Operator">=</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.identifiers[ name ]</font></br></div>
<div id="176" class="line"><font class="Normal"> url </font><font class="Operator">=</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.make_block_url( block )</font></br></div>
<div id="177" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="String">'<a href="'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> url </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'">'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> name </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'</a>'</font></br></div>
<div id="178" class="line"><font class="Normal"> </font><font class="ControlFlow">except</font><font class="Normal">:</font></br></div>
<div id="179" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="String">'?'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> name </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'?'</font></br></div>
<div id="180" class="line"></br></div>
<div id="181" class="line"><font class="Normal"> </font><font class="Comment"># look for italics and bolds</font></br></div>
<div id="182" class="line"><font class="Normal"> m </font><font class="Operator">=</font><font class="Normal"> re_italic.match( word )</font></br></div>
<div id="183" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> m:</font></br></div>
<div id="184" class="line"><font class="Normal"> name </font><font class="Operator">=</font><font class="Normal"> m.group(</font><font class="Float">1</font><font class="Normal">)</font></br></div>
<div id="185" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="String">'<i>'</font><font class="Operator">+</font><font class="Normal">name</font><font class="Operator">+</font><font class="String">'</i>'</font></br></div>
<div id="186" class="line"></br></div>
<div id="187" class="line"><font class="Normal"> m </font><font class="Operator">=</font><font class="Normal"> re_bold.match( word )</font></br></div>
<div id="188" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> m:</font></br></div>
<div id="189" class="line"><font class="Normal"> name </font><font class="Operator">=</font><font class="Normal"> m.group(</font><font class="Float">1</font><font class="Normal">)</font></br></div>
<div id="190" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="String">'<b>'</font><font class="Operator">+</font><font class="Normal">name</font><font class="Operator">+</font><font class="String">'</b>'</font></br></div>
<div id="191" class="line"></br></div>
<div id="192" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> html_quote(word)</font></br></div>
<div id="193" class="line"></br></div>
<div id="194" class="line"></br></div>
<div id="195" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> make_html_para( </font><font class="Variable">self</font><font class="Normal">, words ):</font></br></div>
<div id="196" class="line"><font class="Normal"> </font><font class="Comment">""" convert a paragraph's words into tagged HTML text, handle xrefs """</font></br></div>
<div id="197" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">""</font></br></div>
<div id="198" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> words:</font></br></div>
<div id="199" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.make_html_word( words[0] )</font></br></div>
<div id="200" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> word </font><font class="Keyword">in</font><font class="Normal"> words[1:]:</font></br></div>
<div id="201" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> line </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">" "</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.make_html_word( word )</font></br></div>
<div id="202" class="line"></br></div>
<div id="203" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> </font><font class="String">"<p>"</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> line </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">"</p>"</font></br></div>
<div id="204" class="line"></br></div>
<div id="205" class="line"></br></div>
<div id="206" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> make_html_code( </font><font class="Variable">self</font><font class="Normal">, lines ):</font></br></div>
<div id="207" class="line"><font class="Normal"> </font><font class="Comment">""" convert a code sequence to HTML """</font></br></div>
<div id="208" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> code_header </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'</font><font class="Char">\n</font><font class="String">'</font></br></div>
<div id="209" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> l </font><font class="Keyword">in</font><font class="Normal"> lines:</font></br></div>
<div id="210" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> line </font><font class="Operator">+</font><font class="Normal"> html_quote( l ) </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'</font><font class="Char">\n</font><font class="String">'</font></br></div>
<div id="211" class="line"></br></div>
<div id="212" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> line </font><font class="Operator">+</font><font class="Normal"> code_footer</font></br></div>
<div id="213" class="line"></br></div>
<div id="214" class="line"></br></div>
<div id="215" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> make_html_items( </font><font class="Variable">self</font><font class="Normal">, items ):</font></br></div>
<div id="216" class="line"><font class="Normal"> </font><font class="Comment">""" convert a field's content into some valid HTML """</font></br></div>
<div id="217" class="line"><font class="Normal"> lines </font><font class="Operator">=</font><font class="Normal"> []</font></br></div>
<div id="218" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> item </font><font class="Keyword">in</font><font class="Normal"> items:</font></br></div>
<div id="219" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> item.lines:</font></br></div>
<div id="220" class="line"><font class="Normal"> lines.append( </font><font class="Variable">self</font><font class="Normal">.make_html_code( item.lines ) )</font></br></div>
<div id="221" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal">:</font></br></div>
<div id="222" class="line"><font class="Normal"> lines.append( </font><font class="Variable">self</font><font class="Normal">.make_html_para( item.words ) )</font></br></div>
<div id="223" class="line"></br></div>
<div id="224" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> string.join( lines, </font><font class="String">'</font><font class="Char">\n</font><font class="String">'</font><font class="Normal"> )</font></br></div>
<div id="225" class="line"></br></div>
<div id="226" class="line"></br></div>
<div id="227" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> print_html_items( </font><font class="Variable">self</font><font class="Normal">, items ):</font></br></div>
<div id="228" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.make_html_items( items )</font></br></div>
<div id="229" class="line"></br></div>
<div id="230" class="line"></br></div>
<div id="231" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> print_html_field( </font><font class="Variable">self</font><font class="Normal">, field ):</font></br></div>
<div id="232" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> field.name:</font></br></div>
<div id="233" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"<table valign=top><tr><td><b>"</font><font class="Operator">+</font><font class="Normal">field.name</font><font class="Operator">+</font><font class="String">"</b></td><td>"</font></br></div>
<div id="234" class="line"></br></div>
<div id="235" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.make_html_items( field.items )</font></br></div>
<div id="236" class="line"></br></div>
<div id="237" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> field.name:</font></br></div>
<div id="238" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"</td></tr></table>"</font></br></div>
<div id="239" class="line"></br></div>
<div id="240" class="line"></br></div>
<div id="241" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> html_source_quote( </font><font class="Variable">self</font><font class="Normal">, line, block_name </font><font class="Operator">=</font><font class="Normal"> </font><font class="Variable">None</font><font class="Normal"> ):</font></br></div>
<div id="242" class="line"><font class="Normal"> result </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">""</font></br></div>
<div id="243" class="line"><font class="Normal"> </font><font class="ControlFlow">while</font><font class="Normal"> line:</font></br></div>
<div id="244" class="line"><font class="Normal"> m </font><font class="Operator">=</font><font class="Normal"> re_source_crossref.match( line )</font></br></div>
<div id="245" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> m:</font></br></div>
<div id="246" class="line"><font class="Normal"> name </font><font class="Operator">=</font><font class="Normal"> m.group(</font><font class="Float">2</font><font class="Normal">)</font></br></div>
<div id="247" class="line"><font class="Normal"> prefix </font><font class="Operator">=</font><font class="Normal"> html_quote( m.group(</font><font class="Float">1</font><font class="Normal">) )</font></br></div>
<div id="248" class="line"><font class="Normal"> length </font><font class="Operator">=</font><font class="Normal"> </font><font class="BuiltIn">len</font><font class="Normal">( m.group(</font><font class="Float">0</font><font class="Normal">) )</font></br></div>
<div id="249" class="line"></br></div>
<div id="250" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> name </font><font class="Operator">==</font><font class="Normal"> block_name:</font></br></div>
<div id="251" class="line"><font class="Normal"> </font><font class="Comment"># this is the current block name, if any</font></br></div>
<div id="252" class="line"><font class="Normal"> result </font><font class="Operator">=</font><font class="Normal"> result </font><font class="Operator">+</font><font class="Normal"> prefix </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'<b>'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> name </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'</b>'</font></br></div>
<div id="253" class="line"></br></div>
<div id="254" class="line"><font class="Normal"> </font><font class="ControlFlow">elif</font><font class="Normal"> re_source_keywords.match(name):</font></br></div>
<div id="255" class="line"><font class="Normal"> </font><font class="Comment"># this is a C keyword</font></br></div>
<div id="256" class="line"><font class="Normal"> result </font><font class="Operator">=</font><font class="Normal"> result </font><font class="Operator">+</font><font class="Normal"> prefix </font><font class="Operator">+</font><font class="Normal"> keyword_prefix </font><font class="Operator">+</font><font class="Normal"> name </font><font class="Operator">+</font><font class="Normal"> keyword_suffix</font></br></div>
<div id="257" class="line"></br></div>
<div id="258" class="line"><font class="Normal"> </font><font class="ControlFlow">elif</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.identifiers.has_key(name):</font></br></div>
<div id="259" class="line"><font class="Normal"> </font><font class="Comment"># this is a known identifier</font></br></div>
<div id="260" class="line"><font class="Normal"> block </font><font class="Operator">=</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.identifiers[name]</font></br></div>
<div id="261" class="line"><font class="Normal"> result </font><font class="Operator">=</font><font class="Normal"> result </font><font class="Operator">+</font><font class="Normal"> prefix </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'<a href="'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> </font><font class="Operator">\</font></br></div>
<div id="262" class="line"><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.make_block_url(block) </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'">'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> name </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'</a>'</font></br></div>
<div id="263" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal">:</font></br></div>
<div id="264" class="line"><font class="Normal"> result </font><font class="Operator">=</font><font class="Normal"> result </font><font class="Operator">+</font><font class="Normal"> html_quote(line[ : length ])</font></br></div>
<div id="265" class="line"></br></div>
<div id="266" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> line[ length : ]</font></br></div>
<div id="267" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal">:</font></br></div>
<div id="268" class="line"><font class="Normal"> result </font><font class="Operator">=</font><font class="Normal"> result </font><font class="Operator">+</font><font class="Normal"> html_quote(line)</font></br></div>
<div id="269" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> []</font></br></div>
<div id="270" class="line"></br></div>
<div id="271" class="line"><font class="Normal"> </font><font class="ControlFlow">return</font><font class="Normal"> result</font></br></div>
<div id="272" class="line"></br></div>
<div id="273" class="line"></br></div>
<div id="274" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> print_html_field_list( </font><font class="Variable">self</font><font class="Normal">, fields ):</font></br></div>
<div id="275" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"<table valign=top cellpadding=3>"</font></br></div>
<div id="276" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> field </font><font class="Keyword">in</font><font class="Normal"> fields:</font></br></div>
<div id="277" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"<tr valign=top><td><b>"</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> field.name </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">"</b></td><td>"</font></br></div>
<div id="278" class="line"><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.print_html_items( field.items )</font></br></div>
<div id="279" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"</td></tr>"</font></br></div>
<div id="280" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"</table>"</font></br></div>
<div id="281" class="line"></br></div>
<div id="282" class="line"></br></div>
<div id="283" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> print_html_markup( </font><font class="Variable">self</font><font class="Normal">, markup ):</font></br></div>
<div id="284" class="line"><font class="Normal"> table_fields </font><font class="Operator">=</font><font class="Normal"> []</font></br></div>
<div id="285" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> field </font><font class="Keyword">in</font><font class="Normal"> markup.fields:</font></br></div>
<div id="286" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> field.name:</font></br></div>
<div id="287" class="line"><font class="Normal"> </font><font class="Comment"># we begin a new series of field or value definitions, we</font></br></div>
<div id="288" class="line"><font class="Normal"> </font><font class="Comment"># will record them in the 'table_fields' list before outputting</font></br></div>
<div id="289" class="line"><font class="Normal"> </font><font class="Comment"># all of them as a single table</font></br></div>
<div id="290" class="line"><font class="Normal"> </font><font class="Comment">#</font></br></div>
<div id="291" class="line"><font class="Normal"> table_fields.append( field )</font></br></div>
<div id="292" class="line"></br></div>
<div id="293" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal">:</font></br></div>
<div id="294" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> table_fields:</font></br></div>
<div id="295" class="line"><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.print_html_field_list( table_fields )</font></br></div>
<div id="296" class="line"><font class="Normal"> table_fields </font><font class="Operator">=</font><font class="Normal"> []</font></br></div>
<div id="297" class="line"></br></div>
<div id="298" class="line"><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.print_html_items( field.items )</font></br></div>
<div id="299" class="line"></br></div>
<div id="300" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> table_fields:</font></br></div>
<div id="301" class="line"><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.print_html_field_list( table_fields )</font></br></div>
<div id="302" class="line"></br></div>
<div id="303" class="line"><font class="Normal"> </font><font class="Comment">#</font></br></div>
<div id="304" class="line"><font class="Normal"> </font><font class="Comment"># Formatting the index</font></br></div>
<div id="305" class="line"><font class="Normal"> </font><font class="Comment">#</font></br></div>
<div id="306" class="line"></br></div>
<div id="307" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> index_enter( </font><font class="Variable">self</font><font class="Normal"> ):</font></br></div>
<div id="308" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.html_header</font></br></div>
<div id="309" class="line"><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.index_items </font><font class="Operator">=</font><font class="Normal"> {}</font></br></div>
<div id="310" class="line"></br></div>
<div id="311" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> index_name_enter( </font><font class="Variable">self</font><font class="Normal">, name ):</font></br></div>
<div id="312" class="line"><font class="Normal"> block </font><font class="Operator">=</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.identifiers[ name ]</font></br></div>
<div id="313" class="line"><font class="Normal"> url </font><font class="Operator">=</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.make_block_url( block )</font></br></div>
<div id="314" class="line"><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.index_items[ name ] </font><font class="Operator">=</font><font class="Normal"> url</font></br></div>
<div id="315" class="line"></br></div>
<div id="316" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> index_exit( </font><font class="Variable">self</font><font class="Normal"> ):</font></br></div>
<div id="317" class="line"></br></div>
<div id="318" class="line"><font class="Normal"> </font><font class="Comment"># block_index already contains the sorted list of index names</font></br></div>
<div id="319" class="line"><font class="Normal"> count </font><font class="Operator">=</font><font class="Normal"> </font><font class="BuiltIn">len</font><font class="Normal">( </font><font class="Variable">self</font><font class="Normal">.block_index )</font></br></div>
<div id="320" class="line"><font class="Normal"> rows </font><font class="Operator">=</font><font class="Normal"> (count </font><font class="Operator">+</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.columns </font><font class="Operator">-</font><font class="Normal"> </font><font class="Float">1</font><font class="Normal">)</font><font class="Operator">/</font><font class="Variable">self</font><font class="Normal">.columns</font></br></div>
<div id="321" class="line"></br></div>
<div id="322" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"<center><table border=0 cellpadding=0 cellspacing=0>"</font></br></div>
<div id="323" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> r </font><font class="Keyword">in</font><font class="Normal"> </font><font class="BuiltIn">range</font><font class="Normal">(rows):</font></br></div>
<div id="324" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"<tr>"</font></br></div>
<div id="325" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> c </font><font class="Keyword">in</font><font class="Normal"> </font><font class="BuiltIn">range</font><font class="Normal">(</font><font class="Variable">self</font><font class="Normal">.columns):</font></br></div>
<div id="326" class="line"><font class="Normal"> i </font><font class="Operator">=</font><font class="Normal"> r </font><font class="Operator">+</font><font class="Normal"> c</font><font class="Operator">*</font><font class="Normal">rows</font></br></div>
<div id="327" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> i </font><font class="Operator"><</font><font class="Normal"> count:</font></br></div>
<div id="328" class="line"><font class="Normal"> bname </font><font class="Operator">=</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.block_index[ r </font><font class="Operator">+</font><font class="Normal"> c</font><font class="Operator">*</font><font class="Normal">rows ]</font></br></div>
<div id="329" class="line"><font class="Normal"> url </font><font class="Operator">=</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.index_items[ bname ]</font></br></div>
<div id="330" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> line </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'<td><a href="'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> url </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'">'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> bname </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'</a></td>'</font></br></div>
<div id="331" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal">:</font></br></div>
<div id="332" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> line </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'<td></td>'</font></br></div>
<div id="333" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> line </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">"</tr>"</font></br></div>
<div id="334" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> line</font></br></div>
<div id="335" class="line"></br></div>
<div id="336" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"</table></center>"</font></br></div>
<div id="337" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.html_footer</font></br></div>
<div id="338" class="line"><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.index_items </font><font class="Operator">=</font><font class="Normal"> {}</font></br></div>
<div id="339" class="line"></br></div>
<div id="340" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> index_dump( </font><font class="Variable">self</font><font class="Normal">, index_filename </font><font class="Operator">=</font><font class="Normal"> </font><font class="Variable">None</font><font class="Normal"> ):</font></br></div>
<div id="341" class="line"></br></div>
<div id="342" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> index_filename </font><font class="Operator">==</font><font class="Normal"> </font><font class="Variable">None</font><font class="Normal">:</font></br></div>
<div id="343" class="line"><font class="Normal"> index_filename </font><font class="Operator">=</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.file_prefix </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">"index.html"</font></br></div>
<div id="344" class="line"></br></div>
<div id="345" class="line"><font class="Normal"> Formatter.index_dump( </font><font class="Variable">self</font><font class="Normal">, index_filename )</font></br></div>
<div id="346" class="line"></br></div>
<div id="347" class="line"><font class="Normal"> </font><font class="Comment">#</font></br></div>
<div id="348" class="line"><font class="Normal"> </font><font class="Comment"># Formatting the table of content</font></br></div>
<div id="349" class="line"><font class="Normal"> </font><font class="Comment">#</font></br></div>
<div id="350" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> toc_enter( </font><font class="Variable">self</font><font class="Normal"> ):</font></br></div>
<div id="351" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.html_header</font></br></div>
<div id="352" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"<center><h1>Table of Contents</h1></center>"</font></br></div>
<div id="353" class="line"></br></div>
<div id="354" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> toc_chapter_enter( </font><font class="Variable">self</font><font class="Normal">, chapter ):</font></br></div>
<div id="355" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> chapter_header </font><font class="Operator">+</font><font class="Normal"> string.join(chapter.title) </font><font class="Operator">+</font><font class="Normal"> chapter_inter</font></br></div>
<div id="356" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"<table cellpadding=5>"</font></br></div>
<div id="357" class="line"></br></div>
<div id="358" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> toc_section_enter( </font><font class="Variable">self</font><font class="Normal">, section ):</font></br></div>
<div id="359" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"<tr valign=top><td>"</font></br></div>
<div id="360" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">'<a href="'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.make_section_url( section ) </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'">'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> </font><font class="Operator">\</font></br></div>
<div id="361" class="line"><font class="Normal"> section.title </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'</a></td><td>'</font></br></div>
<div id="362" class="line"></br></div>
<div id="363" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.make_html_para( section.abstract )</font></br></div>
<div id="364" class="line"></br></div>
<div id="365" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> toc_section_exit( </font><font class="Variable">self</font><font class="Normal">, section ):</font></br></div>
<div id="366" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"</td></tr>"</font></br></div>
<div id="367" class="line"></br></div>
<div id="368" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> toc_chapter_exit( </font><font class="Variable">self</font><font class="Normal">, chapter ):</font></br></div>
<div id="369" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"</table>"</font></br></div>
<div id="370" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> chapter_footer</font></br></div>
<div id="371" class="line"></br></div>
<div id="372" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> toc_index( </font><font class="Variable">self</font><font class="Normal">, index_filename ):</font></br></div>
<div id="373" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> chapter_header </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'<a href="'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> index_filename </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'">Global Index</a>'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> chapter_inter </font><font class="Operator">+</font><font class="Normal"> chapter_footer</font></br></div>
<div id="374" class="line"></br></div>
<div id="375" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> toc_exit( </font><font class="Variable">self</font><font class="Normal"> ):</font></br></div>
<div id="376" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"</table></center>"</font></br></div>
<div id="377" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.html_footer</font></br></div>
<div id="378" class="line"></br></div>
<div id="379" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> toc_dump( </font><font class="Variable">self</font><font class="Normal">, toc_filename </font><font class="Operator">=</font><font class="Normal"> </font><font class="Variable">None</font><font class="Normal">, index_filename </font><font class="Operator">=</font><font class="Normal"> </font><font class="Variable">None</font><font class="Normal"> ):</font></br></div>
<div id="380" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> toc_filename </font><font class="Operator">==</font><font class="Normal"> </font><font class="Variable">None</font><font class="Normal">:</font></br></div>
<div id="381" class="line"><font class="Normal"> toc_filename </font><font class="Operator">=</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.file_prefix </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">"toc.html"</font></br></div>
<div id="382" class="line"></br></div>
<div id="383" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> index_filename </font><font class="Operator">==</font><font class="Normal"> </font><font class="Variable">None</font><font class="Normal">:</font></br></div>
<div id="384" class="line"><font class="Normal"> index_filename </font><font class="Operator">=</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.file_prefix </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">"index.html"</font></br></div>
<div id="385" class="line"></br></div>
<div id="386" class="line"><font class="Normal"> Formatter.toc_dump( </font><font class="Variable">self</font><font class="Normal">, toc_filename, index_filename )</font></br></div>
<div id="387" class="line"></br></div>
<div id="388" class="line"><font class="Normal"> </font><font class="Comment">#</font></br></div>
<div id="389" class="line"><font class="Normal"> </font><font class="Comment"># Formatting sections</font></br></div>
<div id="390" class="line"><font class="Normal"> </font><font class="Comment">#</font></br></div>
<div id="391" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> section_enter( </font><font class="Variable">self</font><font class="Normal">, section ):</font></br></div>
<div id="392" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.html_header</font></br></div>
<div id="393" class="line"></br></div>
<div id="394" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> section_title_header</font></br></div>
<div id="395" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> section.title</font></br></div>
<div id="396" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> section_title_footer</font></br></div>
<div id="397" class="line"></br></div>
<div id="398" class="line"><font class="Normal"> </font><font class="Comment"># print section synopsys</font></br></div>
<div id="399" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> section_synopsis_header</font></br></div>
<div id="400" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"<center><table cellspacing=5 cellpadding=0 border=0>"</font></br></div>
<div id="401" class="line"></br></div>
<div id="402" class="line"><font class="Normal"> maxwidth </font><font class="Operator">=</font><font class="Normal"> </font><font class="Float">0</font></br></div>
<div id="403" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> b </font><font class="Keyword">in</font><font class="Normal"> section.blocks.values():</font></br></div>
<div id="404" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> </font><font class="BuiltIn">len</font><font class="Normal">(b.name) </font><font class="Operator">></font><font class="Normal"> maxwidth:</font></br></div>
<div id="405" class="line"><font class="Normal"> maxwidth </font><font class="Operator">=</font><font class="Normal"> </font><font class="BuiltIn">len</font><font class="Normal">(b.name)</font></br></div>
<div id="406" class="line"></br></div>
<div id="407" class="line"><font class="Normal"> width </font><font class="Operator">=</font><font class="Normal"> </font><font class="Float">70</font><font class="Normal"> </font><font class="Comment"># XXX magic number</font></br></div>
<div id="408" class="line"><font class="Normal"> columns </font><font class="Operator">=</font><font class="Normal"> width </font><font class="Operator">/</font><font class="Normal"> maxwidth</font></br></div>
<div id="409" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> columns </font><font class="Operator"><</font><font class="Normal"> </font><font class="Float">1</font><font class="Normal">:</font></br></div>
<div id="410" class="line"><font class="Normal"> columns </font><font class="Operator">=</font><font class="Normal"> </font><font class="Float">1</font></br></div>
<div id="411" class="line"></br></div>
<div id="412" class="line"><font class="Normal"> count </font><font class="Operator">=</font><font class="Normal"> </font><font class="BuiltIn">len</font><font class="Normal">(section.block_names)</font></br></div>
<div id="413" class="line"><font class="Normal"> rows </font><font class="Operator">=</font><font class="Normal"> (count </font><font class="Operator">+</font><font class="Normal"> columns</font><font class="Operator">-</font><font class="Normal">1)</font><font class="Operator">/</font><font class="Normal">columns</font></br></div>
<div id="414" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> r </font><font class="Keyword">in</font><font class="Normal"> </font><font class="BuiltIn">range</font><font class="Normal">(rows):</font></br></div>
<div id="415" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> </font><font class="String">"<tr>"</font></br></div>
<div id="416" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> c </font><font class="Keyword">in</font><font class="Normal"> </font><font class="BuiltIn">range</font><font class="Normal">(columns):</font></br></div>
<div id="417" class="line"><font class="Normal"> i </font><font class="Operator">=</font><font class="Normal"> r </font><font class="Operator">+</font><font class="Normal"> c</font><font class="Operator">*</font><font class="Normal">rows</font></br></div>
<div id="418" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> line </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'<td></td><td>'</font></br></div>
<div id="419" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> i </font><font class="Operator"><</font><font class="Normal"> count:</font></br></div>
<div id="420" class="line"><font class="Normal"> name </font><font class="Operator">=</font><font class="Normal"> section.block_names[i]</font></br></div>
<div id="421" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> line </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'<a href="#'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> name </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'">'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> name </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'</a>'</font></br></div>
<div id="422" class="line"></br></div>
<div id="423" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> line </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'</td>'</font></br></div>
<div id="424" class="line"><font class="Normal"> line </font><font class="Operator">=</font><font class="Normal"> line </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">"</tr>"</font></br></div>
<div id="425" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> line</font></br></div>
<div id="426" class="line"></br></div>
<div id="427" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"</table></center><br><br>"</font></br></div>
<div id="428" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> section_synopsis_footer</font></br></div>
<div id="429" class="line"></br></div>
<div id="430" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> description_header</font></br></div>
<div id="431" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.make_html_items( section.description )</font></br></div>
<div id="432" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> description_footer</font></br></div>
<div id="433" class="line"></br></div>
<div id="434" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> block_enter( </font><font class="Variable">self</font><font class="Normal">, block ):</font></br></div>
<div id="435" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> block_header</font></br></div>
<div id="436" class="line"></br></div>
<div id="437" class="line"><font class="Normal"> </font><font class="Comment"># place html anchor if needed</font></br></div>
<div id="438" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> block.name:</font></br></div>
<div id="439" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">'<a name="'</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> block.name </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'">'</font></br></div>
<div id="440" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"<h4>"</font><font class="Normal"> </font><font class="Operator">+</font><font class="Normal"> block.name </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">"</h4>"</font></br></div>
<div id="441" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="String">"</a>"</font></br></div>
<div id="442" class="line"></br></div>
<div id="443" class="line"><font class="Normal"> </font><font class="Comment"># dump the block C source lines now</font></br></div>
<div id="444" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> block.code:</font></br></div>
<div id="445" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> source_header</font></br></div>
<div id="446" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> l </font><font class="Keyword">in</font><font class="Normal"> block.code:</font></br></div>
<div id="447" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.html_source_quote( l, block.name )</font></br></div>
<div id="448" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> source_footer</font></br></div>
<div id="449" class="line"></br></div>
<div id="450" class="line"></br></div>
<div id="451" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> markup_enter( </font><font class="Variable">self</font><font class="Normal">, markup, block ):</font></br></div>
<div id="452" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> markup.tag </font><font class="Operator">==</font><font class="Normal"> </font><font class="String">"description"</font><font class="Normal">:</font></br></div>
<div id="453" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> description_header</font></br></div>
<div id="454" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal">:</font></br></div>
<div id="455" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> marker_header </font><font class="Operator">+</font><font class="Normal"> markup.tag </font><font class="Operator">+</font><font class="Normal"> marker_inter</font></br></div>
<div id="456" class="line"></br></div>
<div id="457" class="line"><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.print_html_markup( markup )</font></br></div>
<div id="458" class="line"></br></div>
<div id="459" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> markup_exit( </font><font class="Variable">self</font><font class="Normal">, markup, block ):</font></br></div>
<div id="460" class="line"><font class="Normal"> </font><font class="ControlFlow">if</font><font class="Normal"> markup.tag </font><font class="Operator">==</font><font class="Normal"> </font><font class="String">"description"</font><font class="Normal">:</font></br></div>
<div id="461" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> description_footer</font></br></div>
<div id="462" class="line"><font class="Normal"> </font><font class="ControlFlow">else</font><font class="Normal">:</font></br></div>
<div id="463" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> marker_footer</font></br></div>
<div id="464" class="line"></br></div>
<div id="465" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> block_exit( </font><font class="Variable">self</font><font class="Normal">, block ):</font></br></div>
<div id="466" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> block_footer</font></br></div>
<div id="467" class="line"></br></div>
<div id="468" class="line"></br></div>
<div id="469" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> section_exit( </font><font class="Variable">self</font><font class="Normal">, section ):</font></br></div>
<div id="470" class="line"><font class="Normal"> </font><font class="BuiltIn">print</font><font class="Normal"> html_footer</font></br></div>
<div id="471" class="line"></br></div>
<div id="472" class="line"></br></div>
<div id="473" class="line"><font class="Normal"> </font><font class="Keyword">def</font><font class="Normal"> section_dump_all( </font><font class="Variable">self</font><font class="Normal"> ):</font></br></div>
<div id="474" class="line"><font class="Normal"> </font><font class="ControlFlow">for</font><font class="Normal"> section </font><font class="Keyword">in</font><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.sections:</font></br></div>
<div id="475" class="line"><font class="Normal"> </font><font class="Variable">self</font><font class="Normal">.section_dump( section, </font><font class="Variable">self</font><font class="Normal">.file_prefix </font><font class="Operator">+</font><font class="Normal"> section.name </font><font class="Operator">+</font><font class="Normal"> </font><font class="String">'.html'</font><font class="Normal"> )</font></br></div>
<div id="476" class="line"><font class="Normal"> </font></br></div>
</div>
</body>
</html>