1168 lines
182 KiB
HTML
1168 lines
182 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>HTML Formats</title>
|
|
<meta name="viewport" content="width=device-width initial-scale=1">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<meta http-equiv="Content-Language" content="en-gb">
|
|
<link href="../inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
|
|
</head>
|
|
<body>
|
|
<nav role="navigation">
|
|
<h1><a href="../webs.html">Sources</a></h1>
|
|
<ul>
|
|
<li><a href="../inweb/index.html">inweb</a></li>
|
|
</ul>
|
|
<h2>Foundation</h2>
|
|
<ul>
|
|
<li><a href="../foundation-module/index.html">foundation-module</a></li>
|
|
<li><a href="../foundation-test/index.html">foundation-test</a></li>
|
|
</ul>
|
|
|
|
|
|
</nav>
|
|
<main role="main">
|
|
|
|
<!--Weave of 'HTML Formats' generated by 7-->
|
|
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="index.html">inweb</a></li><li><a href="index.html#5">Chapter 5: Formats</a></li><li><b>HTML Formats</b></li></ul><p class="purpose">To provide for weaving into HTML and into EPUB books.</p>
|
|
|
|
<ul class="toc"><li><a href="#SP2">§2. Current state</a></li><li><a href="#SP6">§6. Methods</a></li><li><a href="#SP32">§32. EPUB-only methods</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="inwebparagraph"><a id="SP1"></a><b>§1. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::create</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
|
<<span class="cwebmacro">Create HTML</span> <span class="cwebmacronumber">1.1</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Create EPUB</span> <span class="cwebmacronumber">1.2</span>><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::create is used in 5/fm (<a href="5-fm.html#SP3">§3</a>).</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP1_1"></a><b>§1.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Create HTML</span> <span class="cwebmacronumber">1.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="functiontext">Formats::create_weave_format</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"HTML"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">".html"</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">TOP_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::top</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">PRESERVE_MATH_MODE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::preserve_math_mode</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Make this format basically HTML</span> <span class="cwebmacronumber">1.1.1</span>><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP1">§1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP1_2"></a><b>§1.2. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Create EPUB</span> <span class="cwebmacronumber">1.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="functiontext">Formats::create_weave_format</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"ePub"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">".html"</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">TOP_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::top_EPUB</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Make this format basically HTML</span> <span class="cwebmacronumber">1.1.1</span>><span class="plain">;</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">BEGIN_WEAVING_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::begin_weaving_EPUB</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">END_WEAVING_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::end_weaving_EPUB</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP1">§1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP1_1_1"></a><b>§1.1.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Make this format basically HTML</span> <span class="cwebmacronumber">1.1.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">SUBHEADING_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::subheading</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">TOC_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::toc</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">PARAGRAPH_HEADING_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::paragraph_heading</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">SOURCE_CODE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::source_code</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">INLINE_CODE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::inline_code</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">URL_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::url</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">FOOTNOTE_CUE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::footnote_cue</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">BEGIN_FOOTNOTE_TEXT_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::begin_footnote_text</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">END_FOOTNOTE_TEXT_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::end_footnote_text</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">DISPLAY_LINE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::display_line</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">ITEM_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::item</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">BAR_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::bar</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">FIGURE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::figure</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">EMBED_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::embed</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">PARA_MACRO_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::para_macro</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">PAGEBREAK_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::pagebreak</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">BLANK_LINE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::blank_line</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">CHANGE_MATERIAL_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::change_material</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">CHANGE_COLOUR_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::change_colour</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">ENDNOTE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::endnote</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">COMMENTARY_TEXT_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::commentary_text</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">LOCALE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::locale</span><span class="plain">);</span>
|
|
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">TAIL_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::tail</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP1_1">§1.1</a>, <a href="#SP1_2">§1.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. Current state. </b>To keep track of what we're writing, across many intermittent calls to the
|
|
routines below, we store a crude sort of state in two global variables.
|
|
(This isn't thread-safe and means we can only write one file at a time,
|
|
but in fact that's fine here.)
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">define</span> <span class="constant">HTML_OUT</span><span class="plain"> </span><span class="constant">0</span><span class="plain"> </span><span class="comment"> write position in HTML file is currently outside of p, pre, li</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">HTML_IN_P</span><span class="plain"> </span><span class="constant">1</span><span class="plain"> </span><span class="comment"> write position in HTML file is currently outside p</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">HTML_IN_PRE</span><span class="plain"> </span><span class="constant">2</span><span class="plain"> </span><span class="comment"> write position in HTML file is currently outside pre</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">HTML_IN_LI</span><span class="plain"> </span><span class="constant">3</span><span class="plain"> </span><span class="comment"> write position in HTML file is currently outside li</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_OUT</span><span class="plain">; </span><span class="comment"> one of the above</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">item_depth</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">; </span><span class="comment"> for <code class="display"><span class="extract">HTML_IN_LI</span></code> only: how many lists we're nested inside</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">class</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">class</span><span class="plain">) </span><span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">, </span><span class="string">"class=\"%s\""</span><span class="plain">, </span><span class="identifier">class</span><span class="plain">)</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">);</span>
|
|
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_IN_P</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::cp</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">); </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_OUT</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">class</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">class</span><span class="plain">) </span><span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"pre"</span><span class="plain">, </span><span class="string">"class=\"%s\""</span><span class="plain">, </span><span class="identifier">class</span><span class="plain">)</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"pre"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">); </span><span class="constant">INDENT</span><span class="plain">;</span>
|
|
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_IN_PRE</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::cpre</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">) {</span>
|
|
<span class="constant">OUTDENT</span><span class="plain">; </span><span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"pre"</span><span class="plain">); </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_OUT</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::p is used in <a href="#SP7">§7</a>, <a href="#SP9">§9</a>, <a href="#SP11">§11</a>, <a href="#SP16">§16</a>, <a href="#SP23">§23</a>, <a href="#SP24">§24</a>, <a href="#SP26">§26</a>, <a href="#SP27">§27</a>.</p>
|
|
|
|
<p class="endnote">The function HTMLFormat::cp is used in <a href="#SP4">§4</a>, <a href="#SP7">§7</a>, <a href="#SP16">§16</a>, <a href="#SP26">§26</a>.</p>
|
|
|
|
<p class="endnote">The function HTMLFormat::pre is used in <a href="#SP24">§24</a>.</p>
|
|
|
|
<p class="endnote">The function HTMLFormat::cpre is used in <a href="#SP4">§4</a>, <a href="#SP24">§24</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>Depth 1 means "inside a list entry"; depth 2, "inside an entry of a list
|
|
which is itself inside a list entry"; and so on.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::go_to_depth</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">depth</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">html_in_para</span><span class="plain"> != </span><span class="constant">HTML_IN_LI</span><span class="plain">) </span><span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">item_depth</span><span class="plain"> == </span><span class="identifier">depth</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">item_depth</span><span class="plain"> < </span><span class="identifier">depth</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">, </span><span class="string">"class=\"items\""</span><span class="plain">); </span><span class="identifier">item_depth</span><span class="plain">++;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">item_depth</span><span class="plain"> > </span><span class="identifier">depth</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">); </span><span class="identifier">item_depth</span><span class="plain">--;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">depth</span><span class="plain"> > </span><span class="constant">0</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
|
|
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_IN_LI</span><span class="plain">;</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_OUT</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::go_to_depth is used in <a href="#SP4">§4</a>, <a href="#SP17">§17</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>The following generically gets us out of whatever we're currently into:
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">) {</span>
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">html_in_para</span><span class="plain">) {</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">HTML_IN_P:</span><span class="plain"> </span><span class="functiontext">HTMLFormat::cp</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">HTML_IN_PRE:</span><span class="plain"> </span><span class="functiontext">HTMLFormat::cpre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">HTML_IN_LI:</span><span class="plain"> </span><span class="functiontext">HTMLFormat::go_to_depth</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="constant">0</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::exit_current_paragraph is used in <a href="#SP3">§3</a>, <a href="#SP7">§7</a>, <a href="#SP8">§8</a>, <a href="#SP9">§9</a>, <a href="#SP16">§16</a>, <a href="#SP18">§18</a>, <a href="#SP19">§19</a>, <a href="#SP20">§20</a>, <a href="#SP22">§22</a>, <a href="#SP23">§23</a>, <a href="#SP24">§24</a>, <a href="#SP26">§26</a>, <a href="#SP30">§30</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP5"></a><b>§5. </b>"Breadcrumbs" are the chain of links in a horizontal list at the top of
|
|
the page, and this drops one.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">link</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">link</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::begin_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">link</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::end_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"b"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"b"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::breadcrumb is used in <a href="#SP9">§9</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6"></a><b>§6. Methods. </b>For documentation, see "Weave Fornats".
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::top</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">comment</span><span class="plain">) {</span>
|
|
<span class="functiontext">HTML::declare_as_HTML</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">);</span>
|
|
<span class="functiontext">Indexer::cover_sheet_maker</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">WEAVE_FIRST_HALF</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">self_contained</span><span class="plain"> == </span><span class="constant">FALSE</span><span class="plain">) {</span>
|
|
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">CSS</span><span class="plain"> = </span><span class="functiontext">Patterns::obtain_filename</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">pattern</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"inweb.css"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">pattern</span><span class="plain">-></span><span class="element">hierarchical</span><span class="plain">)</span>
|
|
<span class="functiontext">Patterns::copy_up_file_into_weave</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">CSS</span><span class="plain">);</span>
|
|
<span class="reserved">else</span>
|
|
<span class="functiontext">Patterns::copy_file_into_weave</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">CSS</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="functiontext">HTML::comment</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">comment</span><span class="plain">);</span>
|
|
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_OUT</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">HTMLFormat::preserve_math_mode</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">matter</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">) {</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">plugin_name</span><span class="plain"> =</span>
|
|
<span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"TeX Mathematics Plugin"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::eq_insensitive</span><span class="plain">(</span><span class="identifier">plugin_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"None"</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="constant">FALSE</span><span class="plain">;</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">math_mode</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">mode_exists</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">text</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">++) {</span>
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">)) {</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="character">'$'</span><span class="plain">:</span>
|
|
<span class="identifier">mode_exists</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+1) == </span><span class="character">'$'</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="string">"$$"</span><span class="plain">);</span>
|
|
<span class="identifier">i</span><span class="plain">++; </span><span class="reserved">continue</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">math_mode</span><span class="plain"> = (</span><span class="identifier">math_mode</span><span class="plain">)?</span><span class="identifier">FALSE:TRUE</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">math_mode</span><span class="plain">) </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="string">"\\("</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="string">"\\)"</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="identifier">default:</span>
|
|
<span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">));</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">mode_exists</span><span class="plain">) </span><span class="functiontext">Swarm::ensure_plugin</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">plugin_name</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="constant">TRUE</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::top_EPUB</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">comment</span><span class="plain">) {</span>
|
|
<span class="functiontext">HTML::declare_as_HTML</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
|
|
<span class="functiontext">Epub::note_page</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">as_ebook</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_to</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">booklet_title</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">);</span>
|
|
<span class="functiontext">Indexer::cover_sheet_maker</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">WEAVE_FIRST_HALF</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::comment</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">comment</span><span class="plain">);</span>
|
|
<span class="identifier">html_in_para</span><span class="plain"> = </span><span class="constant">HTML_OUT</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::top is used in <a href="#SP1_1">§1.1</a>.</p>
|
|
|
|
<p class="endnote">The function HTMLFormat::preserve_math_mode is used in <a href="#SP1_1">§1.1</a>.</p>
|
|
|
|
<p class="endnote">The function HTMLFormat::top_EPUB is used in <a href="#SP1_2">§1.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::subheading</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">level</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">comment</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">head</span><span class="plain">) {</span>
|
|
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">level</span><span class="plain">) {</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">1</span><span class="plain">: </span><span class="functiontext">HTML::heading</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"h3"</span><span class="plain">, </span><span class="identifier">comment</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">2</span><span class="plain">: </span><span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"purpose"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">comment</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">head</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">": "</span><span class="plain">);</span>
|
|
<span class="functiontext">Formats::text</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">head</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="functiontext">HTMLFormat::cp</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::subheading is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP8"></a><b>§8. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::toc</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">stage</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">text1</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">text2</span><span class="plain">, </span><span class="reserved">paragraph</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">) {</span>
|
|
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">stage</span><span class="plain">) {</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">1</span><span class="plain">:</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">, </span><span class="string">"class=\"toc\""</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">2</span><span class="plain">:</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">3</span><span class="plain">: {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">)</span>
|
|
<span class="functiontext">HTMLFormat::xref</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::begin_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">)</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%s%S"</span><span class="plain">, (</span><span class="functiontext">Str::get_first_char</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-></span><span class="element">ornament</span><span class="plain">) == </span><span class="character">'S'</span><span class="plain">)?</span><span class="string">"&#167;"</span><span class="plain">:</span><span class="string">"&para;"</span><span class="plain">,</span>
|
|
<span class="identifier">P</span><span class="plain">-></span><span class="element">paragraph_number</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">". %S"</span><span class="plain">, </span><span class="identifier">text2</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::end_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">4</span><span class="plain">:</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::hr</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"tocbar"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::toc is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP9"></a><b>§9. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">section</span><span class="plain"> *</span><span class="identifier">page_section</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">crumbs_dropped</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::paragraph_heading</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">,</span>
|
|
<span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">TeX_macro</span><span class="plain">, </span><span class="reserved">section</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">, </span><span class="reserved">paragraph</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">,</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">heading_text</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">chaptermark</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">sectionmark</span><span class="plain">,</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">weight</span><span class="plain">) {</span>
|
|
<span class="identifier">page_section</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">weight</span><span class="plain"> == </span><span class="constant">3</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">; </span><span class="comment"> Skip chapter headings</span>
|
|
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain">) {</span>
|
|
<span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"inwebparagraph"</span><span class="plain">);</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">)</span>
|
|
<span class="functiontext">HTMLFormat::xref</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::anchor</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">)</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"b"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%s%S"</span><span class="plain">, (</span><span class="functiontext">Str::get_first_char</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">-></span><span class="element">ornament</span><span class="plain">) == </span><span class="character">'S'</span><span class="plain">)?</span><span class="string">"&#167;"</span><span class="plain">:</span><span class="string">"&para;"</span><span class="plain">,</span>
|
|
<span class="identifier">P</span><span class="plain">-></span><span class="element">paragraph_number</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">". %S%s "</span><span class="plain">, </span><span class="identifier">heading_text</span><span class="plain">, (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">heading_text</span><span class="plain">) > </span><span class="constant">0</span><span class="plain">)?</span><span class="string">"."</span><span class="plain">:</span><span class="string">""</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"b"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">self_contained</span><span class="plain"> == </span><span class="constant">FALSE</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">crumbs_dropped</span><span class="plain"> == </span><span class="constant">FALSE</span><span class="plain">) {</span>
|
|
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain"> = </span><span class="functiontext">Patterns::obtain_filename</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">pattern</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"crumbs.gif"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">pattern</span><span class="plain">-></span><span class="element">hierarchical</span><span class="plain">)</span>
|
|
<span class="functiontext">Patterns::copy_up_file_into_weave</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
|
|
<span class="reserved">else</span>
|
|
<span class="functiontext">Patterns::copy_file_into_weave</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
|
|
<span class="identifier">crumbs_dropped</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">, </span><span class="string">"class=\"crumbs\""</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFormat::drop_initial_breadcrumbs</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">breadcrumbs</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">docs_mode</span><span class="plain">);</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">bct</span><span class="plain"> = </span><span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Title"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Short Title"</span><span class="plain">)) > </span><span class="constant">0</span><span class="plain">) {</span>
|
|
<span class="identifier">bct</span><span class="plain"> = </span><span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Short Title"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">bct</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"index.html"</span><span class="plain">);</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">md</span><span class="plain">-></span><span class="element">chaptered</span><span class="plain">) {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">chapter_link</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">chapter_link</span><span class="plain">, </span><span class="string">"index.html#%s%S"</span><span class="plain">, (</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">as_ebook</span><span class="plain">)?</span><span class="string">"C"</span><span class="plain">:</span><span class="string">""</span><span class="plain">,</span>
|
|
<span class="identifier">S</span><span class="plain">-></span><span class="element">owning_chapter</span><span class="plain">-></span><span class="element">md</span><span class="plain">-></span><span class="element">ch_range</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">-></span><span class="element">owning_chapter</span><span class="plain">-></span><span class="element">md</span><span class="plain">-></span><span class="element">ch_title</span><span class="plain">, </span><span class="identifier">chapter_link</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">chapter_link</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">heading_text</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">, </span><span class="string">"class=\"crumbs\""</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">heading_text</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::drop_initial_breadcrumbs</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">linked_list</span><span class="plain"> *</span><span class="identifier">crumbs</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">docs_mode</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">LinkedLists::len</span><span class="plain">(</span><span class="identifier">crumbs</span><span class="plain">) > </span><span class="constant">0</span><span class="plain">) {</span>
|
|
<span class="reserved">breadcrumb_request</span><span class="plain"> *</span><span class="identifier">BR</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">BR</span><span class="plain">, </span><span class="reserved">breadcrumb_request</span><span class="plain">, </span><span class="identifier">crumbs</span><span class="plain">) {</span>
|
|
<span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">BR</span><span class="plain">-></span><span class="element">breadcrumb_text</span><span class="plain">, </span><span class="identifier">BR</span><span class="plain">-></span><span class="element">breadcrumb_link</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">docs_mode</span><span class="plain">)</span>
|
|
<span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"&#9733;"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"../webs.html"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::paragraph_heading is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="endnote">The function HTMLFormat::drop_initial_breadcrumbs is used in 3/ti (<a href="3-ti.html#SP5_1_8">§5.1.8</a>).</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10"></a><b>§10. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::source_code</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">prefatory</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">matter</span><span class="plain">,</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">colouring</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">concluding_comment</span><span class="plain">,</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">linked</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">starts</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">prefatory</span><span class="plain">) > </span><span class="constant">0</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">, </span><span class="string">"class=\"definitionkeyword\""</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">prefatory</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" "</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::eq</span><span class="plain">(</span><span class="identifier">prefatory</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"enum"</span><span class="plain">)) {</span>
|
|
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="functiontext">Regexp::create_mr</span><span class="plain">();</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Regexp::match</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(%c*) from (%C+) *"</span><span class="plain">)) {</span>
|
|
<span class="functiontext">HTMLFormat::source_code</span><span class="plain">(</span><span class="identifier">self</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">0</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">colouring</span><span class="plain">,</span>
|
|
<span class="identifier">concluding_comment</span><span class="plain">, </span><span class="identifier">starts</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="identifier">linked</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">, </span><span class="string">"class=\"definitionkeyword\""</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" from "</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFormat::source_code</span><span class="plain">(</span><span class="identifier">self</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">0</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[1], </span><span class="identifier">colouring</span><span class="plain">,</span>
|
|
<span class="identifier">concluding_comment</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">finishes</span><span class="plain">, </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="identifier">linked</span><span class="plain">);</span>
|
|
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">} </span><span class="reserved">else</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="identifier">tab_stops_of_indentation</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++)</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" "</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">current_colour</span><span class="plain"> = -1, </span><span class="identifier">colour_wanted</span><span class="plain"> = </span><span class="constant">PLAIN_COLOUR</span><span class="plain">;</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"> < </span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">++) {</span>
|
|
<span class="identifier">colour_wanted</span><span class="plain"> = </span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">); </span><<span class="cwebmacro">Adjust code colour as necessary</span> <span class="cwebmacronumber">10.3</span>><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">linked</span><span class="plain">) {</span>
|
|
<<span class="cwebmacro">Pick up hyperlinking at the eleventh hour</span> <span class="cwebmacronumber">10.1</span>><span class="plain">;</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">xref_notation</span><span class="plain"> = </span><span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">md</span><span class="plain">,</span>
|
|
<span class="identifier">I</span><span class="string">"Cross-References Notation"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::ne</span><span class="plain">(</span><span class="identifier">xref_notation</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Off"</span><span class="plain">))</span>
|
|
<<span class="cwebmacro">Pick up cross-references at the eleventh hour</span> <span class="cwebmacronumber">10.2</span>><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">'<'</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&lt;"</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">'>'</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&gt;"</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">'&'</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&amp;"</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%c"</span><span class="plain">, </span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">));</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_colour</span><span class="plain"> >= </span><span class="constant">0</span><span class="plain">) </span><span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
|
|
<span class="identifier">current_colour</span><span class="plain"> = -1;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">finishes</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">concluding_comment</span><span class="plain">) > </span><span class="constant">0</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (!</span><span class="identifier">starts</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" "</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">, </span><span class="string">"class=\"comment\""</span><span class="plain">);</span>
|
|
<span class="functiontext">Formats::text_comment</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">concluding_comment</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::source_code is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_1"></a><b>§10.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Pick up hyperlinking at the eleventh hour</span> <span class="cwebmacronumber">10.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">Str::includes_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"http://"</span><span class="plain">)) ||</span>
|
|
<span class="plain">(</span><span class="functiontext">Str::includes_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"https://"</span><span class="plain">))) {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">);</span>
|
|
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">); </span><span class="functiontext">Str::truncate</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">);</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">after</span><span class="plain">);</span>
|
|
<span class="functiontext">Str::substr</span><span class="plain">(</span><span class="identifier">after</span><span class="plain">, </span><span class="functiontext">Str::at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">), </span><span class="functiontext">Str::end</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">));</span>
|
|
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="functiontext">Regexp::create_mr</span><span class="plain">();</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Regexp::match</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">after</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(https*://%C+)(%c*)"</span><span class="plain">)) {</span>
|
|
<span class="functiontext">Formats::url</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="constant">TRUE</span><span class="plain">);</span>
|
|
<span class="identifier">i</span><span class="plain"> += </span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0]);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">after</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10">§10</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_2"></a><b>§10.2. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Pick up cross-references at the eleventh hour</span> <span class="cwebmacronumber">10.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">N</span><span class="plain"> = </span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">xref_notation</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">Str::includes_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">, </span><span class="identifier">xref_notation</span><span class="plain">))) {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">j</span><span class="plain"> = </span><span class="identifier">i</span><span class="plain"> + </span><span class="identifier">N</span><span class="plain">+1;</span>
|
|
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">j</span><span class="plain"> < </span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">)) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::includes_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">j</span><span class="plain">, </span><span class="identifier">xref_notation</span><span class="plain">)) {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">reference</span><span class="plain">);</span>
|
|
<span class="functiontext">Str::substr</span><span class="plain">(</span><span class="identifier">reference</span><span class="plain">, </span><span class="functiontext">Str::at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain"> + </span><span class="identifier">N</span><span class="plain">), </span><span class="functiontext">Str::at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">j</span><span class="plain">));</span>
|
|
<<span class="cwebmacro">Attempt to resolve the cross-reference</span> <span class="cwebmacronumber">10.2.1</span>><span class="plain">;</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">reference</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">j</span><span class="plain">++;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10">§10</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_2_1"></a><b>§10.2.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Attempt to resolve the cross-reference</span> <span class="cwebmacronumber">10.2.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">url</span><span class="plain">);</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">title</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Formats::resolve_reference_in_weave</span><span class="plain">(</span><span class="identifier">url</span><span class="plain">, </span><span class="identifier">title</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">reference</span><span class="plain">,</span>
|
|
<span class="identifier">wv</span><span class="plain">-></span><span class="element">current_weave_line</span><span class="plain">)) {</span>
|
|
<span class="functiontext">Formats::url</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">url</span><span class="plain">, </span><span class="identifier">title</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">);</span>
|
|
<span class="identifier">i</span><span class="plain"> = </span><span class="identifier">j</span><span class="plain"> + </span><span class="identifier">N</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">url</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">title</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10_2">§10.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_3"></a><b>§10.3. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Adjust code colour as necessary</span> <span class="cwebmacronumber">10.3</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">colour_wanted</span><span class="plain"> != </span><span class="identifier">current_colour</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_colour</span><span class="plain"> >= </span><span class="constant">0</span><span class="plain">) </span><span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
|
|
<span class="functiontext">Formats::change_colour</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">colour_wanted</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
|
|
<span class="identifier">current_colour</span><span class="plain"> = </span><span class="identifier">colour_wanted</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10">§10</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11"></a><b>§11. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::inline_code</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">enter</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">enter</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">html_in_para</span><span class="plain"> == </span><span class="constant">HTML_OUT</span><span class="plain">) </span><span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"inwebparagraph"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"code"</span><span class="plain">, </span><span class="string">"class=\"display\""</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"code"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::inline_code is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP12"></a><b>§12. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::url</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">url</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">content</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">external</span><span class="plain">) {</span>
|
|
<span class="functiontext">HTML::begin_link_with_class</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, (</span><span class="identifier">external</span><span class="plain">)?</span><span class="identifier">I</span><span class="string">"external"</span><span class="plain">:</span><span class="identifier">I</span><span class="string">"internal"</span><span class="plain">, </span><span class="identifier">url</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">content</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::end_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::url is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP13"></a><b>§13. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::footnote_cue</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">cue</span><span class="plain">) {</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">fn_plugin_name</span><span class="plain"> =</span>
|
|
<span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Footnotes Plugin"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::ne_insensitive</span><span class="plain">(</span><span class="identifier">fn_plugin_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"None"</span><span class="plain">))</span>
|
|
<span class="functiontext">Swarm::ensure_plugin</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">fn_plugin_name</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<sup id=\"fnref:%S\"><a href=\"#fn:%S\" rel=\"footnote\">%S</a></sup>"</span><span class="plain">,</span>
|
|
<span class="identifier">cue</span><span class="plain">, </span><span class="identifier">cue</span><span class="plain">, </span><span class="identifier">cue</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::footnote_cue is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14"></a><b>§14. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::begin_footnote_text</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">cue</span><span class="plain">) {</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">fn_plugin_name</span><span class="plain"> =</span>
|
|
<span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Footnotes Plugin"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::ne_insensitive</span><span class="plain">(</span><span class="identifier">fn_plugin_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"None"</span><span class="plain">))</span>
|
|
<span class="functiontext">Swarm::ensure_plugin</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">fn_plugin_name</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<li class=\"footnote\" id=\"fn:%S\"><p>"</span><span class="plain">, </span><span class="identifier">cue</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::begin_footnote_text is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP15"></a><b>§15. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::end_footnote_text</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">cue</span><span class="plain">) {</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">fn_plugin_name</span><span class="plain"> =</span>
|
|
<span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Footnotes Plugin"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::ne_insensitive</span><span class="plain">(</span><span class="identifier">fn_plugin_name</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"None"</span><span class="plain">))</span>
|
|
<span class="functiontext">Swarm::ensure_plugin</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">fn_plugin_name</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<a href=\"#fnref:%S\" title=\"return to text\"> &#x21A9;</a></p></li>"</span><span class="plain">, </span><span class="identifier">cue</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::end_footnote_text is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP16"></a><b>§16. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::display_line</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">) {</span>
|
|
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"blockquote"</span><span class="plain">); </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">); </span><span class="constant">INDENT</span><span class="plain">;</span>
|
|
<span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">from</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFormat::cp</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="constant">OUTDENT</span><span class="plain">; </span><span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"blockquote"</span><span class="plain">); </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::display_line is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP17"></a><b>§17. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::item</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">depth</span><span class="plain">,</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">label</span><span class="plain">) {</span>
|
|
<span class="functiontext">HTMLFormat::go_to_depth</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">depth</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">label</span><span class="plain">) > </span><span class="constant">0</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"(%S) "</span><span class="plain">, </span><span class="identifier">label</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" "</span><span class="plain">);</span>
|
|
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::item is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP18"></a><b>§18. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::bar</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">) {</span>
|
|
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::hr</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::bar is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP19"></a><b>§19. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::figure</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">figname</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">w</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">h</span><span class="plain">, </span><span class="reserved">programming_language</span><span class="plain"> *</span><span class="identifier">pl</span><span class="plain">) {</span>
|
|
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="functiontext">Filenames::in_folder</span><span class="plain">(</span>
|
|
<span class="functiontext">Pathnames::subfolder</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">md</span><span class="plain">-></span><span class="element">path_to_web</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Figures"</span><span class="plain">),</span>
|
|
<span class="identifier">figname</span><span class="plain">);</span>
|
|
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">RF</span><span class="plain"> = </span><span class="functiontext">Filenames::from_text</span><span class="plain">(</span><span class="identifier">figname</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"center"</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::image</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">RF</span><span class="plain">);</span>
|
|
<span class="functiontext">Patterns::copy_file_into_weave</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">F</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"center"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::figure is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP20"></a><b>§20. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::embed</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">service</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">ID</span><span class="plain">) {</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">CH</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"405"</span><span class="plain">;</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">CW</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"720"</span><span class="plain">;</span>
|
|
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="functiontext">Regexp::create_mr</span><span class="plain">();</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Regexp::match</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(%c+) at (%c+) by (%c+)"</span><span class="plain">)) {</span>
|
|
<span class="identifier">CW</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[1]);</span>
|
|
<span class="identifier">CH</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[2]);</span>
|
|
<span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0];</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Regexp::match</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(%c+) at (%c+)"</span><span class="plain">)) {</span>
|
|
<span class="identifier">CH</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[1]);</span>
|
|
<span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0];</span>
|
|
<span class="plain">}</span>
|
|
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">embed_leaf</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">embed_leaf</span><span class="plain">, </span><span class="string">"%S.html"</span><span class="plain">, </span><span class="identifier">service</span><span class="plain">);</span>
|
|
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="functiontext">Filenames::in_folder</span><span class="plain">(</span>
|
|
<span class="functiontext">Pathnames::subfolder</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">md</span><span class="plain">-></span><span class="element">path_to_web</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Embedding"</span><span class="plain">), </span><span class="identifier">embed_leaf</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">TextFiles::exists</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">) == </span><span class="constant">FALSE</span><span class="plain">)</span>
|
|
<span class="identifier">F</span><span class="plain"> = </span><span class="functiontext">Filenames::in_folder</span><span class="plain">(</span>
|
|
<span class="functiontext">Pathnames::subfolder</span><span class="plain">(</span><span class="identifier">path_to_inweb</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Embedding"</span><span class="plain">), </span><span class="identifier">embed_leaf</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">embed_leaf</span><span class="plain">);</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">TextFiles::exists</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">) == </span><span class="constant">FALSE</span><span class="plain">) {</span>
|
|
<span class="functiontext">Main::error_in_web</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"This is not a supported service"</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">current_weave_line</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="functiontext">Bibliographic::set_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Content ID"</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">);</span>
|
|
<span class="functiontext">Bibliographic::set_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Content Width"</span><span class="plain">, </span><span class="identifier">CW</span><span class="plain">);</span>
|
|
<span class="functiontext">Bibliographic::set_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Content Height"</span><span class="plain">, </span><span class="identifier">CH</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"center"</span><span class="plain">);</span>
|
|
<span class="functiontext">Indexer::run</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">pattern</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"center"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::embed is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP21"></a><b>§21. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::para_macro</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">para_macro</span><span class="plain"> *</span><span class="identifier">pmac</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">defn</span><span class="plain">) {</span>
|
|
<span class="reserved">paragraph</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">pmac</span><span class="plain">-></span><span class="element">defining_paragraph</span><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&lt;"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">, </span><span class="string">"class=\"%s\""</span><span class="plain">, (</span><span class="identifier">defn</span><span class="plain">)?</span><span class="string">"cwebmacrodefn"</span><span class="plain">:</span><span class="string">"cwebmacro"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">pmac</span><span class="plain">-></span><span class="element">macro_name</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" "</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">, </span><span class="string">"class=\"cwebmacronumber\""</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-></span><span class="element">paragraph_number</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&gt;%s"</span><span class="plain">, (</span><span class="identifier">defn</span><span class="plain">)?</span><span class="string">" ="</span><span class="plain">:</span><span class="string">""</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::para_macro is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP22"></a><b>§22. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::pagebreak</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">) {</span>
|
|
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::pagebreak is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP23"></a><b>§23. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::blank_line</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">in_comment</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">html_in_para</span><span class="plain"> == </span><span class="constant">HTML_IN_PRE</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">old_state</span><span class="plain"> = </span><span class="identifier">html_in_para</span><span class="plain">, </span><span class="identifier">old_depth</span><span class="plain"> = </span><span class="identifier">item_depth</span><span class="plain">;</span>
|
|
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">old_state</span><span class="plain"> == </span><span class="constant">HTML_IN_P</span><span class="plain">) || ((</span><span class="identifier">old_state</span><span class="plain"> == </span><span class="constant">HTML_IN_LI</span><span class="plain">) && (</span><span class="identifier">old_depth</span><span class="plain"> > </span><span class="constant">1</span><span class="plain">)))</span>
|
|
<span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">,</span><span class="string">"inwebparagraph"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::blank_line is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP24"></a><b>§24. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::change_material</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">old_material</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">new_material</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">content</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">plainly</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">old_material</span><span class="plain"> != </span><span class="identifier">new_material</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">old_material</span><span class="plain"> == </span><span class="constant">MACRO_MATERIAL</span><span class="plain">) </span><span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"code"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">content</span><span class="plain">) || (</span><span class="identifier">new_material</span><span class="plain"> != </span><span class="constant">MACRO_MATERIAL</span><span class="plain">))</span>
|
|
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">old_material</span><span class="plain">) {</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CODE_MATERIAL:</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">REGULAR_MATERIAL:</span>
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">new_material</span><span class="plain">) {</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CODE_MATERIAL:</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">plainly</span><span class="plain">) </span><span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"undisplay"</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"display"</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">DEFINITION_MATERIAL:</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"definitions"</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">MACRO_MATERIAL:</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">content</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">,</span><span class="string">"macrodefinition"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"code"</span><span class="plain">, </span><span class="string">"class=\"display\""</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">REGULAR_MATERIAL:</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">content</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">,</span><span class="string">"inwebparagraph"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">MACRO_MATERIAL:</span>
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">new_material</span><span class="plain">) {</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CODE_MATERIAL:</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"displaydefn"</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">DEFINITION_MATERIAL:</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"definitions"</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">DEFINITION_MATERIAL:</span>
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">new_material</span><span class="plain">) {</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CODE_MATERIAL:</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">plainly</span><span class="plain">) </span><span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"undisplay"</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="functiontext">HTMLFormat::pre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"display"</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">MACRO_MATERIAL:</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"macrodefinition"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"code"</span><span class="plain">, </span><span class="string">"class=\"display\""</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="identifier">default:</span>
|
|
<span class="functiontext">HTMLFormat::cpre</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::change_material is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP25"></a><b>§25. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::change_colour</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">col</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">in_code</span><span class="plain">) {</span>
|
|
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"plain"</span><span class="plain">;</span>
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">col</span><span class="plain">) {</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">DEFINITION_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"cwebmacrotext"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">FUNCTION_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"functiontext"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">IDENTIFIER_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"identifier"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">ELEMENT_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"element"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">RESERVED_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"reserved"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">STRING_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"string"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CHAR_LITERAL_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"character"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">CONSTANT_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"constant"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">PLAIN_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"plain"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">EXTRACT_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"extract"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">COMMENT_COLOUR:</span><span class="plain"> </span><span class="identifier">cl</span><span class="plain"> = </span><span class="string">"comment"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="identifier">default:</span><span class="plain"> </span><span class="identifier">PRINT</span><span class="plain">(</span><span class="string">"col: %d\n"</span><span class="plain">, </span><span class="identifier">col</span><span class="plain">); </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad colour"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">, </span><span class="string">"class=\"%s\""</span><span class="plain">, </span><span class="identifier">cl</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::change_colour is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP26"></a><b>§26. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::endnote</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">end</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">end</span><span class="plain"> == </span><span class="constant">1</span><span class="plain">) {</span>
|
|
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"endnote"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="functiontext">HTMLFormat::cp</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::endnote is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP27"></a><b>§27. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::commentary_text</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">id</span><span class="plain">) {</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"> < </span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">++) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">html_in_para</span><span class="plain"> == </span><span class="constant">HTML_OUT</span><span class="plain">) </span><span class="functiontext">HTMLFormat::p</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"inwebparagraph"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">'&'</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&amp;"</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">'<'</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&lt;"</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">'>'</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&gt;"</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">i</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) && (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">'-'</span><span class="plain">) &&</span>
|
|
<span class="plain">(</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+1) == </span><span class="character">'-'</span><span class="plain">) &&</span>
|
|
<span class="plain">((</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+2) == </span><span class="character">' '</span><span class="plain">) || (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+2) == </span><span class="constant">0</span><span class="plain">))) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&mdash;"</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">++;</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">' '</span><span class="plain">) && (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+1) == </span><span class="character">'-'</span><span class="plain">) &&</span>
|
|
<span class="plain">(</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+2) == </span><span class="character">'-'</span><span class="plain">) &&</span>
|
|
<span class="plain">((</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+3) == </span><span class="character">' '</span><span class="plain">) || (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+3) == </span><span class="character">'\n'</span><span class="plain">) ||</span>
|
|
<span class="plain">(</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">+3) == </span><span class="constant">0</span><span class="plain">))) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" &mdash;"</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">+=2;</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">PUT</span><span class="plain">(</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">));</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::commentary_text is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP28"></a><b>§28. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::locale</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">paragraph</span><span class="plain"> *</span><span class="identifier">par1</span><span class="plain">, </span><span class="reserved">paragraph</span><span class="plain"> *</span><span class="identifier">par2</span><span class="plain">) {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">)</span>
|
|
<span class="functiontext">HTMLFormat::xref</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">par1</span><span class="plain">, </span><span class="identifier">page_section</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::begin_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">)</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%s%S"</span><span class="plain">,</span>
|
|
<span class="plain">(</span><span class="functiontext">Str::get_first_char</span><span class="plain">(</span><span class="identifier">par1</span><span class="plain">-></span><span class="element">ornament</span><span class="plain">) == </span><span class="character">'S'</span><span class="plain">)?</span><span class="string">"&#167;"</span><span class="plain">:</span><span class="string">"&para;"</span><span class="plain">,</span>
|
|
<span class="identifier">par1</span><span class="plain">-></span><span class="element">paragraph_number</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">par2</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"-%S"</span><span class="plain">, </span><span class="identifier">par2</span><span class="plain">-></span><span class="element">paragraph_number</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::end_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::locale is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP29"></a><b>§29. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::section_URL</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">section</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">) {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">linkto</span><span class="plain">);</span>
|
|
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="identifier">linkto</span><span class="plain">, </span><span class="identifier">from</span><span class="plain">-></span><span class="element">sect_range</span><span class="plain">);</span>
|
|
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="identifier">linkto</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">) == </span><span class="character">'/'</span><span class="plain">) || (</span><span class="functiontext">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">) == </span><span class="character">' '</span><span class="plain">))</span>
|
|
<span class="functiontext">Str::put</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="character">'-'</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">linkto</span><span class="plain">, </span><span class="string">".html"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">linkto</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::xref</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">paragraph</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">section</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">,</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">a_link</span><span class="plain">) {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">linkto</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">from</span><span class="plain">) && (</span><span class="identifier">P</span><span class="plain">-></span><span class="element">under_section</span><span class="plain"> != </span><span class="identifier">from</span><span class="plain">)) {</span>
|
|
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="identifier">linkto</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-></span><span class="element">under_section</span><span class="plain">-></span><span class="element">sect_range</span><span class="plain">);</span>
|
|
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="identifier">linkto</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">) == </span><span class="character">'/'</span><span class="plain">) || (</span><span class="functiontext">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">) == </span><span class="character">' '</span><span class="plain">))</span>
|
|
<span class="functiontext">Str::put</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="character">'-'</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">linkto</span><span class="plain">, </span><span class="string">".html"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">linkto</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%s%S"</span><span class="plain">, (</span><span class="identifier">a_link</span><span class="plain">)?</span><span class="string">"#"</span><span class="plain">:</span><span class="string">""</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-></span><span class="element">ornament</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">linkto</span><span class="plain">);</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"P"</span><span class="plain">);</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">-></span><span class="element">paragraph_number</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">) == </span><span class="character">'.'</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"_"</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">PUT</span><span class="plain">(</span><span class="functiontext">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">));</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::section_URL is used in 5/fm (<a href="5-fm.html#SP28">§28</a>).</p>
|
|
|
|
<p class="endnote">The function HTMLFormat::xref is used in <a href="#SP8">§8</a>, <a href="#SP9">§9</a>, <a href="#SP28">§28</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP30"></a><b>§30. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::tail</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">comment</span><span class="plain">, </span><span class="reserved">section</span><span class="plain"> *</span><span class="identifier">this_S</span><span class="plain">) {</span>
|
|
<span class="functiontext">HTMLFormat::exit_current_paragraph</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">docs_mode</span><span class="plain">) {</span>
|
|
<span class="reserved">chapter</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain"> = </span><span class="identifier">this_S</span><span class="plain">-></span><span class="element">owning_chapter</span><span class="plain">;</span>
|
|
<span class="reserved">section</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">, *</span><span class="identifier">last_S</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">, *</span><span class="identifier">prev_S</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">, *</span><span class="identifier">next_S</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="reserved">section</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-></span><span class="element">sections</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> == </span><span class="identifier">this_S</span><span class="plain">) </span><span class="identifier">prev_S</span><span class="plain"> = </span><span class="identifier">last_S</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">last_S</span><span class="plain"> == </span><span class="identifier">this_S</span><span class="plain">) </span><span class="identifier">next_S</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">;</span>
|
|
<span class="identifier">last_S</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">prev_S</span><span class="plain">) || (</span><span class="identifier">next_S</span><span class="plain">)) {</span>
|
|
<span class="functiontext">HTML::hr</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"tocbar"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">, </span><span class="string">"class=\"toc\""</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">prev_S</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<i>(This section begins %S.)</i>"</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-></span><span class="element">md</span><span class="plain">-></span><span class="element">ch_title</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFormat::sref</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">prev_S</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::begin_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"Back to '%S'"</span><span class="plain">, </span><span class="identifier">prev_S</span><span class="plain">-></span><span class="element">md</span><span class="plain">-></span><span class="element">sect_title</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::end_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">next_S</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<i>(This section ends %S.)</i>"</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-></span><span class="element">md</span><span class="plain">-></span><span class="element">ch_title</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFormat::sref</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">next_S</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::begin_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"Continue with '%S'"</span><span class="plain">, </span><span class="identifier">next_S</span><span class="plain">-></span><span class="element">md</span><span class="plain">-></span><span class="element">sect_title</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::end_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"li"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="functiontext">HTML::hr</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="string">"tocbar"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="functiontext">HTML::comment</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">comment</span><span class="plain">);</span>
|
|
<span class="functiontext">HTML::completed</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="functiontext">Bibliographic::set_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">-></span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Booklet Title"</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">booklet_title</span><span class="plain">);</span>
|
|
<span class="functiontext">Indexer::cover_sheet_maker</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">weave_web</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"template"</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">WEAVE_SECOND_HALF</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::tail is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP31"></a><b>§31. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::sref</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">section</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"unwoven section"</span><span class="plain">);</span>
|
|
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">-></span><span class="element">sect_range</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">) == </span><span class="character">'/'</span><span class="plain">)</span>
|
|
<span class="identifier">PUT</span><span class="plain">(</span><span class="character">'-'</span><span class="plain">);</span>
|
|
<span class="reserved">else</span>
|
|
<span class="identifier">PUT</span><span class="plain">(</span><span class="functiontext">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">));</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">".html"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::sref is used in <a href="#SP30">§30</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP32"></a><b>§32. EPUB-only methods. </b></p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">HTMLFormat::begin_weaving_EPUB</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain">, </span><span class="reserved">web</span><span class="plain"> *</span><span class="identifier">W</span><span class="plain">, </span><span class="reserved">weave_pattern</span><span class="plain"> *</span><span class="identifier">pattern</span><span class="plain">) {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">)</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="string">"%S"</span><span class="plain">, </span><span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">-></span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Title"</span><span class="plain">));</span>
|
|
<span class="identifier">W</span><span class="plain">-></span><span class="element">as_ebook</span><span class="plain"> = </span><span class="functiontext">Epub::new</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="string">"P"</span><span class="plain">);</span>
|
|
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">CSS</span><span class="plain"> = </span><span class="functiontext">Patterns::obtain_filename</span><span class="plain">(</span><span class="identifier">pattern</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"inweb.css"</span><span class="plain">);</span>
|
|
<span class="functiontext">Epub::use_CSS_throughout</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">-></span><span class="element">as_ebook</span><span class="plain">, </span><span class="identifier">CSS</span><span class="plain">);</span>
|
|
<span class="functiontext">Epub::attach_metadata</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">-></span><span class="element">as_ebook</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"identifier"</span><span class="plain">, </span><span class="identifier">T</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">)</span>
|
|
|
|
<span class="reserved">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Reader::woven_folder</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">);</span>
|
|
<span class="identifier">W</span><span class="plain">-></span><span class="element">redirect_weaves_to</span><span class="plain"> = </span><span class="functiontext">Epub::begin_construction</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">-></span><span class="element">as_ebook</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
|
<span class="functiontext">Shell::copy</span><span class="plain">(</span><span class="identifier">CSS</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">-></span><span class="element">redirect_weaves_to</span><span class="plain">, </span><span class="string">""</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="constant">SWARM_SECTIONS_SWM</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::end_weaving_EPUB</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain">, </span><span class="reserved">web</span><span class="plain"> *</span><span class="identifier">W</span><span class="plain">, </span><span class="reserved">weave_pattern</span><span class="plain"> *</span><span class="identifier">pattern</span><span class="plain">) {</span>
|
|
<span class="functiontext">Epub::end_construction</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">-></span><span class="element">as_ebook</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function HTMLFormat::begin_weaving_EPUB is used in <a href="#SP1_2">§1.2</a>.</p>
|
|
|
|
<p class="endnote">The function HTMLFormat::end_weaving_EPUB is used in <a href="#SP1_2">§1.2</a>.</p>
|
|
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><a href="5-tf.html">Back to 'TeX Format'</a></li><li><a href="5-wp.html">Continue with 'Weave Plugins'</a></li></ul><hr class="tocbar">
|
|
<!--End of weave-->
|
|
</main>
|
|
</body>
|
|
</html>
|
|
|