1072 lines
151 KiB
HTML
1072 lines
151 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>Format Methods</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">Inweb Source</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>
|
|
<h2>Example Webs</h2>
|
|
<ul>
|
|
<li><a href="../goldbach/index.html">goldbach</a></li>
|
|
<li><a href="../twinprimes/twinprimes.html">twinprimes</a></li>
|
|
</ul>
|
|
|
|
|
|
</nav>
|
|
<main role="main">
|
|
|
|
<!--Weave of 'Format Methods' generated by 7-->
|
|
<ul class="crumbs"><li><a href="../webs.html">Home</a></li><li><a href="index.html">inweb</a></li><li><a href="index.html#5">Chapter 5: Formats</a></li><li><b>Format Methods</b></li></ul><p class="purpose">To characterise the relevant differences in behaviour between the various weaving formats offered, such as HTML, ePub, or TeX.</p>
|
|
|
|
<ul class="toc"><li><a href="#SP1">§1. Formats</a></li><li><a href="#SP3">§3. Creation</a></li><li><a href="#SP4">§4. Methods</a></li><li><a href="#SP33">§33. Post-processing</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="inwebparagraph"><a id="SP1"></a><b>§1. Formats. </b>Exactly as in the previous chapter, each format expresses its behaviour
|
|
through optional method calls.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">weave_format</span><span class="plain"> {</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">format_name</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">woven_extension</span><span class="plain">;</span>
|
|
<span class="constant">METHOD_CALLS</span>
|
|
<span class="constant">MEMORY_MANAGEMENT</span>
|
|
<span class="plain">} </span><span class="reserved">weave_format</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">weave_format</span><span class="plain"> *</span><span class="functiontext">Formats::create_weave_format<button class="popup" onclick="togglePopup('usagePopup207')">...<span class="popuptext" id="usagePopup207">Usage of <b>Formats::create_weave_format</b>:<br>Plain Text Format - <a href="5-ptf.html#SP1">§1</a><br>TeX Format - <a href="5-tf.html#SP1_1">§1.1</a>, <a href="5-tf.html#SP1_2">§1.2</a>, <a href="5-tf.html#SP1_3">§1.3</a><br>HTML Formats - <a href="5-hf.html#SP1_1">§1.1</a>, <a href="5-hf.html#SP1_2">§1.2</a></span></button></span><span class="plain">(</span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">ext</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="identifier">CREATE</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="element">format_name</span><span class="plain"> = </span><span class="functiontext"><a href="4-sm.html#SP3">Str::duplicate</a></span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
|
|
<span class="identifier">wf</span><span class="plain">-></span><span class="element">woven_extension</span><span class="plain"> = </span><span class="functiontext"><a href="4-sm.html#SP3">Str::duplicate</a></span><span class="plain">(</span><span class="identifier">ext</span><span class="plain">);</span>
|
|
<span class="identifier">ENABLE_METHOD_CALLS</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">wf</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">weave_format</span><span class="plain"> *</span><span class="functiontext">Formats::find_by_name<button class="popup" onclick="togglePopup('usagePopup208')">...<span class="popuptext" id="usagePopup208">Usage of <b>Formats::find_by_name</b>:<br><a href="#SP35">§35</a>, Patterns - <a href="1-ptt.html#SP3_2">§3.2</a></span></button></span><span class="plain">(</span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">name</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="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="reserved">weave_format</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="4-sm.html#SP18">Str::eq_insensitive</a></span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">wf</span><span class="plain">-></span><span class="element">format_name</span><span class="plain">))</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">wf</span><span class="plain">;</span>
|
|
<span class="reserved">return</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 structure weave_format is accessed in 3/ts and here.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b>Note that this is the file extension before any post-processing. For
|
|
example, PDFs are made by weaving a TeX file and then running this through
|
|
<code class="display"><span class="extract">pdftex</span></code>. The extension here will be <code class="display"><span class="extract">.tex</span></code> because that's what the weave
|
|
stage produces, even though we will later end up with a <code class="display"><span class="extract">.pdf</span></code>.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="functiontext">Formats::file_extension<button class="popup" onclick="togglePopup('usagePopup209')">...<span class="popuptext" id="usagePopup209">Usage of <b>Formats::file_extension</b>:<br>The Swarm - <a href="3-ts.html#SP2_2_1">§2.2.1</a><br>The Indexer - <a href="3-ti.html#SP1">§1</a></span></button></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">return</span><span class="plain"> </span><span class="identifier">wf</span><span class="plain">-></span><span class="identifier">woven_extension</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP3"></a><b>§3. Creation. </b>This must be performed very early in Inweb's run.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::create_weave_formats<button class="popup" onclick="togglePopup('usagePopup210')">...<span class="popuptext" id="usagePopup210">Usage of <b>Formats::create_weave_formats</b>:<br>Program Control - <a href="1-pc.html#SP6_1">§6.1</a></span></button></span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
|
<span class="functiontext"><a href="5-tf.html#SP1">TeX::create</a></span><span class="plain">();</span>
|
|
<span class="functiontext"><a href="5-ptf.html#SP1">PlainText::create</a></span><span class="plain">();</span>
|
|
<span class="functiontext"><a href="5-hf.html#SP1">HTMLFormat::create</a></span><span class="plain">();</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4"></a><b>§4. Methods. </b>These two don't allow output to be produced: they're for any setting up and
|
|
putting away that needs tp be done.
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><code class="display"><span class="extract">BEGIN_WEAVING_FOR_MTID</span></code> is called before any output is generated, indeed,
|
|
before even the filename(s) for the output are worked out. Note that it
|
|
can return a <code class="display"><span class="extract">*_SWM</span></code> code to change the swarm behaviour of the weave to come;
|
|
this is helpful for EPUB weaving.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">More simply, <code class="display"><span class="extract">END_WEAVING_FOR_MTID</span></code> is called when all weaving is done.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">BEGIN_WEAVING_FOR_MTID</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">END_WEAVING_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">IMETHOD_TYPE</span><span class="plain">(</span><span class="constant">BEGIN_WEAVING_FOR_MTID</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">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">END_WEAVING_FOR_MTID</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="reserved">int</span><span class="plain"> </span><span class="functiontext">Formats::begin_weaving<button class="popup" onclick="togglePopup('usagePopup211')">...<span class="popuptext" id="usagePopup211">Usage of <b>Formats::begin_weaving</b>:<br>Program Control - <a href="1-pc.html#SP7_4_3">§7.4.3</a></span></button></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="reserved">int</span><span class="plain"> </span><span class="identifier">rv</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
|
<span class="identifier">IMETHOD_CALL</span><span class="plain">(</span><span class="identifier">rv</span><span class="plain">, </span><span class="identifier">pattern</span><span class="plain">-></span><span class="element">pattern_format</span><span class="plain">, </span><span class="constant">BEGIN_WEAVING_FOR_MTID</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">pattern</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rv</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">rv</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="constant">SWARM_OFF_SWM</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::end_weaving<button class="popup" onclick="togglePopup('usagePopup212')">...<span class="popuptext" id="usagePopup212">Usage of <b>Formats::end_weaving</b>:<br>Program Control - <a href="1-pc.html#SP7_4_3">§7.4.3</a></span></button></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">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">pattern</span><span class="plain">-></span><span class="element">pattern_format</span><span class="plain">, </span><span class="constant">END_WEAVING_FOR_MTID</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">pattern</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP5"></a><b>§5. </b>Now the weave output, roughly in order from top to bottom.
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><code class="display"><span class="extract">TOP_FOR_MTID</span></code> has the opportunity to put a header at the top of the woven
|
|
file. The <code class="display"><span class="extract">comment</span></code> will be anodyne text such as "Weave of... generated at...",
|
|
which isn't intended to be read by human eyes, and might become e.g. an
|
|
HTML comment.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">TOP_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">TOP_FOR_MTID</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">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">void</span><span class="plain"> </span><span class="functiontext">Formats::top<button class="popup" onclick="togglePopup('usagePopup213')">...<span class="popuptext" id="usagePopup213">Usage of <b>Formats::top</b>:<br>The Weaver - <a href="3-tw.html#SP1_1">§1.1</a></span></button></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">text_stream</span><span class="plain"> *</span><span class="identifier">comment</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="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">comment</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6"></a><b>§6. </b>The <code class="display"><span class="extract">TOC_FOR_MTID</span></code> method should weave a table of contents at the top of a section.
|
|
It is called with four possible values of <code class="display"><span class="extract">stage</span></code>:
|
|
</p>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<ul class="items"><li>(a) 1 for the introductory text, which is in <code class="display"><span class="extract">text1</span></code>;
|
|
</li><li>(b) 2 for a division between contents items;
|
|
</li><li>(c) 3 for a contents item, with paragraph number <code class="display"><span class="extract">text1</span></code> and heading <code class="display"><span class="extract">text2</span></code>;
|
|
</li><li>(d) 4 for any concluding text, such as a full stop, or skipped line.
|
|
</li></ul>
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">TOC_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">TOC_FOR_MTID</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">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="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::toc<button class="popup" onclick="togglePopup('usagePopup214')">...<span class="popuptext" id="usagePopup214">Usage of <b>Formats::toc</b>:<br>The Weaver - <a href="3-tw.html#SP4">§4</a></span></button></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">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="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">stage</span><span class="plain">, </span><span class="identifier">text1</span><span class="plain">, </span><span class="identifier">text2</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b>When whole chapters are wovem, or all-in-one weaves include multiple
|
|
chapters, the format can add a table of chapter contents, or some similar
|
|
interstitial material. This is how:
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">CHAPTER_TP_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">CHAPTER_TP_FOR_MTID</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">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">chapter</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">)</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::chapter_title_page<button class="popup" onclick="togglePopup('usagePopup215')">...<span class="popuptext" id="usagePopup215">Usage of <b>Formats::chapter_title_page</b>:<br>The Weaver - <a href="3-tw.html#SP1_3_4_1_10">§1.3.4.1.10</a></span></button></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">chapter</span><span class="plain"> *</span><span class="identifier">C</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="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">CHAPTER_TP_FOR_MTID</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">C</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP8"></a><b>§8. </b>The <code class="display"><span class="extract">SUBHEADING_FOR_MTID</span></code> method is expected to produce subheadings of
|
|
two levels of importance, where <code class="display"><span class="extract">level</span></code> is
|
|
</p>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<ul class="items"><li>(a) 1 for extract subheadings used in themed weaves, or
|
|
</li><li>(b) 2 for minor headings such as the "Purpose" at the top of a section,
|
|
or (for old webs which still have them) "Definitions" headings.
|
|
</li></ul>
|
|
<p class="inwebparagraph">Note that paragraph headings (the result of <code class="display"><span class="extract">@h</span></code>) do not fall under this
|
|
method. The <code class="display"><span class="extract">heading</span></code> is the text for it; the <code class="display"><span class="extract">addendum</span></code> if not <code class="display"><span class="extract">NULL</span></code> is
|
|
some supplementary text, used in some cases for running heads.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">SUBHEADING_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">SUBHEADING_FOR_MTID</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">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">heading</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">addendum</span><span class="plain">)</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::subheading<button class="popup" onclick="togglePopup('usagePopup216')">...<span class="popuptext" id="usagePopup216">Usage of <b>Formats::subheading</b>:<br>The Weaver - <a href="3-tw.html#SP1_3_4_1_3">§1.3.4.1.3</a>, <a href="3-tw.html#SP1_3_4_1_6">§1.3.4.1.6</a>, <a href="3-tw.html#SP1_3_4_1_10_3_1">§1.3.4.1.10.3.1</a></span></button></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">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">heading</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">addendum</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="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">level</span><span class="plain">, </span><span class="identifier">heading</span><span class="plain">, </span><span class="identifier">addendum</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP9"></a><b>§9. </b>And now we do paragraph headings. This method has rather a lot of
|
|
arguments, but for most formats, some can be ignored. In particular
|
|
<code class="display"><span class="extract">TeX_macro</span></code>, <code class="display"><span class="extract">chaptermark</span></code>, and <code class="display"><span class="extract">sectionmark</span></code> have been precalculated for
|
|
the benefit of the TeX format, and all other formats can leave them be.
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><code class="display"><span class="extract">weight</span></code> is more significant, and is
|
|
</p>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<ul class="items"><li>(a) 1 for a <code class="display"><span class="extract">@h</span></code> paragraph heading,
|
|
</li><li>(b) 2 for a section heading,
|
|
</li><li>(c) 3 for a chapter heading.
|
|
</li></ul>
|
|
<p class="inwebparagraph">In each case, the text of the heading is (unsurprisingly) in <code class="display"><span class="extract">heading_text</span></code>.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">PARAGRAPH_HEADING_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">PARAGRAPH_HEADING_FOR_MTID</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">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="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::paragraph_heading<button class="popup" onclick="togglePopup('usagePopup217')">...<span class="popuptext" id="usagePopup217">Usage of <b>Formats::paragraph_heading</b>:<br>The Weaver - <a href="3-tw.html#SP1_3_4_1_10">§1.3.4.1.10</a></span></button></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">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="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">TeX_macro</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">,</span>
|
|
<span class="identifier">heading_text</span><span class="plain">, </span><span class="identifier">chaptermark</span><span class="plain">, </span><span class="identifier">sectionmark</span><span class="plain">, </span><span class="identifier">weight</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10"></a><b>§10. </b>The following method is expected to weave a piece of code, which has already
|
|
been syntax-coloured; there can also be some indentation, and perhaps even some
|
|
<code class="display"><span class="extract">prefatory</span></code> text before the line of code, and also potentially a
|
|
<code class="display"><span class="extract">concluding_comment</span></code> at the end of the line.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">SOURCE_CODE_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">SOURCE_CODE_FOR_MTID</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">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">void</span><span class="plain"> </span><span class="functiontext">Formats::source_code<button class="popup" onclick="togglePopup('usagePopup218')">...<span class="popuptext" id="usagePopup218">Usage of <b>Formats::source_code</b>:<br><a href="#SP11">§11</a>, The Weaver - <a href="3-tw.html#SP1_3_4_1_8_4">§1.3.4.1.8.4</a>, <a href="3-tw.html#SP1_3_4_1_9">§1.3.4.1.9</a>, <a href="3-tw.html#SP1_3_4_1_9_6">§1.3.4.1.9.6</a></span></button></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">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">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">,</span>
|
|
<span class="identifier">prefatory</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">, </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="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="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11"></a><b>§11. </b>More primitively, this method weaves a piece of code which has been coloured
|
|
drably in a uniform <code class="display"><span class="extract">EXTRACT_COLOUR</span></code> colour. This is used for weaving words like
|
|
<code class="display"><span class="extract">these_ones</span></code> of code given inside commentary.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">INLINE_CODE_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">INLINE_CODE_FOR_MTID</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">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">pre</span><span class="plain">)</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::source_fragment<button class="popup" onclick="togglePopup('usagePopup219')">...<span class="popuptext" id="usagePopup219">Usage of <b>Formats::source_fragment</b>:<br><a href="#SP27">§27</a></span></button></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">text_stream</span><span class="plain"> *</span><span class="identifier">fragment</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="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">colouring</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"><a href="4-sm.html#SP8">Str::len</a></span><span class="plain">(</span><span class="identifier">fragment</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">, </span><span class="constant">EXTRACT_COLOUR</span><span class="plain">);</span>
|
|
<span class="functiontext"><a href="#SP10">Formats::source_code</a></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">I</span><span class="string">""</span><span class="plain">, </span><span class="identifier">fragment</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="constant">FALSE</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="constant">FALSE</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">);</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP12"></a><b>§12. </b>And this weaves a URL, hyperlinking it where possible.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">URL_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">URL_FOR_MTID</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">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="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::url<button class="popup" onclick="togglePopup('usagePopup220')">...<span class="popuptext" id="usagePopup220">Usage of <b>Formats::url</b>:<br><a href="#SP27_2">§27.2</a>, <a href="#SP27_4_1">§27.4.1</a>, HTML Formats - <a href="5-hf.html#SP10_1">§10.1</a>, <a href="5-hf.html#SP10_2_1">§10.2.1</a></span></button></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">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="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="2-mth.html#SP6">Methods::provided</a></span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">-></span><span class="identifier">methods</span><span class="plain">, </span><span class="constant">URL_FOR_MTID</span><span class="plain">)) {</span>
|
|
<span class="identifier">VMETHOD_CALL</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="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">content</span><span class="plain">, </span><span class="identifier">external</span><span class="plain">);</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">"%S"</span><span class="plain">, </span><span class="identifier">content</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP13"></a><b>§13. </b>And this weaves a footnote cue.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">FOOTNOTE_CUE_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">FOOTNOTE_CUE_FOR_MTID</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">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">void</span><span class="plain"> </span><span class="functiontext">Formats::footnote_cue<button class="popup" onclick="togglePopup('usagePopup221')">...<span class="popuptext" id="usagePopup221">Usage of <b>Formats::footnote_cue</b>:<br><a href="#SP27_3">§27.3</a></span></button></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">text_stream</span><span class="plain"> *</span><span class="identifier">cue</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="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="2-mth.html#SP6">Methods::provided</a></span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">-></span><span class="identifier">methods</span><span class="plain">, </span><span class="constant">FOOTNOTE_CUE_FOR_MTID</span><span class="plain">)) {</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">cue</span><span class="plain">);</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">"[%S]"</span><span class="plain">, </span><span class="identifier">cue</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14"></a><b>§14. </b>And this weaves a footnote text opening...
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">BEGIN_FOOTNOTE_TEXT_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">BEGIN_FOOTNOTE_TEXT_FOR_MTID</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">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">void</span><span class="plain"> </span><span class="functiontext">Formats::begin_footnote_text<button class="popup" onclick="togglePopup('usagePopup222')">...<span class="popuptext" id="usagePopup222">Usage of <b>Formats::begin_footnote_text</b>:<br>The Weaver - <a href="3-tw.html#SP1_3_4_1_8_5">§1.3.4.1.8.5</a></span></button></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">text_stream</span><span class="plain"> *</span><span class="identifier">cue</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="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="2-mth.html#SP6">Methods::provided</a></span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">-></span><span class="identifier">methods</span><span class="plain">, </span><span class="constant">BEGIN_FOOTNOTE_TEXT_FOR_MTID</span><span class="plain">)) {</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">cue</span><span class="plain">);</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">"[%S]. "</span><span class="plain">, </span><span class="identifier">cue</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP15"></a><b>§15. </b>...bookended by a footnote text closing. The weaver ensures that these occur
|
|
in pairs and do not nest.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">END_FOOTNOTE_TEXT_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">END_FOOTNOTE_TEXT_FOR_MTID</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">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">void</span><span class="plain"> </span><span class="functiontext">Formats::end_footnote_text<button class="popup" onclick="togglePopup('usagePopup223')">...<span class="popuptext" id="usagePopup223">Usage of <b>Formats::end_footnote_text</b>:<br>The Weaver - <a href="3-tw.html#SP1_3_4_1_8_5_1">§1.3.4.1.8.5.1</a></span></button></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">text_stream</span><span class="plain"> *</span><span class="identifier">cue</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="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="2-mth.html#SP6">Methods::provided</a></span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">-></span><span class="identifier">methods</span><span class="plain">, </span><span class="constant">END_FOOTNOTE_TEXT_FOR_MTID</span><span class="plain">)) {</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">cue</span><span class="plain">);</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">"\n"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP16"></a><b>§16. </b>This method produces the <code class="display"><span class="extract">>> Example</span></code> bits of example source text, really
|
|
a convenience for Inform 7 code commentary.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">DISPLAY_LINE_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">DISPLAY_LINE_FOR_MTID</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">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="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::display_line<button class="popup" onclick="togglePopup('usagePopup224')">...<span class="popuptext" id="usagePopup224">Usage of <b>Formats::display_line</b>:<br>The Weaver - <a href="3-tw.html#SP1_3_4_1_8_1">§1.3.4.1.8.1</a></span></button></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">text_stream</span><span class="plain"> *</span><span class="identifier">from</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="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">from</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP17"></a><b>§17. </b><code class="display"><span class="extract">ITEM_FOR_MTID</span></code> produces an item marker in a typical (a), (b), (c), ... sort
|
|
of list. <code class="display"><span class="extract">depth</span></code> can be 1 or 2: you can have lists in lists, but not lists in
|
|
lists in lists. <code class="display"><span class="extract">label</span></code> is the marker text, e.g., <code class="display"><span class="extract">a</span></code>, <code class="display"><span class="extract">b</span></code>, <code class="display"><span class="extract">c</span></code>, ...; it can
|
|
also be empty, in which case the method should move to the matching level of
|
|
indentation but not weave any bracketed marker.
|
|
</p>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<ul class="items"><li>(a) This was produced by <code class="display"><span class="extract">depth</span></code> equal to 1, <code class="display"><span class="extract">label</span></code> equal to <code class="display"><span class="extract">a</span></code>.
|
|
<ul class="items"><li>(i) This was produced by <code class="display"><span class="extract">depth</span></code> equal to 2, <code class="display"><span class="extract">label</span></code> equal to <code class="display"><span class="extract">i</span></code>.
|
|
</li><li>(ii) This was produced by <code class="display"><span class="extract">depth</span></code> equal to 2, <code class="display"><span class="extract">label</span></code> equal to <code class="display"><span class="extract">ii</span></code>.
|
|
</li></ul>
|
|
<li> This was produced by <code class="display"><span class="extract">depth</span></code> equal to 1, <code class="display"><span class="extract">label</span></code> empty.
|
|
</li><li>(b) This was produced by <code class="display"><span class="extract">depth</span></code> equal to 1, <code class="display"><span class="extract">label</span></code> equal to <code class="display"><span class="extract">b</span></code>.
|
|
</li></ul>
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">ITEM_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">ITEM_FOR_MTID</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">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="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::item<button class="popup" onclick="togglePopup('usagePopup225')">...<span class="popuptext" id="usagePopup225">Usage of <b>Formats::item</b>:<br>The Weaver - <a href="3-tw.html#SP1_3_4_1_8_3">§1.3.4.1.8.3</a></span></button></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">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="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">depth</span><span class="plain">, </span><span class="identifier">label</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP18"></a><b>§18. </b>The "bar" is a horizontal line across the page, but it's woven only for
|
|
very old webs nowadays. New formats really needn't implement this.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">BAR_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">BAR_FOR_MTID</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">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">void</span><span class="plain"> </span><span class="functiontext">Formats::bar<button class="popup" onclick="togglePopup('usagePopup226')">...<span class="popuptext" id="usagePopup226">Usage of <b>Formats::bar</b>:<br>The Weaver - <a href="3-tw.html#SP1_3_4_1_7">§1.3.4.1.7</a></span></button></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">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP19"></a><b>§19. </b><code class="display"><span class="extract">FIGURE_FOR_MTID</span></code> has to weave a figure, i.e., render an image in some way.
|
|
<code class="display"><span class="extract">figname</span></code> should be (the text of) a leafname within the <code class="display"><span class="extract">Figures</span></code> directory
|
|
of the web.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">FIGURE_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">FIGURE_FOR_MTID</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">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="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::figure<button class="popup" onclick="togglePopup('usagePopup227')">...<span class="popuptext" id="usagePopup227">Usage of <b>Formats::figure</b>:<br>The Weaver - <a href="3-tw.html#SP1_3_4_1_2_1">§1.3.4.1.2.1</a></span></button></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">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="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">figname</span><span class="plain">, </span><span class="identifier">w</span><span class="plain">, </span><span class="identifier">h</span><span class="plain">, </span><span class="identifier">pl</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP20"></a><b>§20. </b><code class="display"><span class="extract">EMBED_FOR_MTID</span></code> has to embed some Internet-sourced content. <code class="display"><span class="extract">service</span></code>
|
|
here is something like <code class="display"><span class="extract">YouTube</span></code> or <code class="display"><span class="extract">Soundcloud</span></code>, and <code class="display"><span class="extract">ID</span></code> is whatever code
|
|
that service uses to identify the video/audio in question.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">EMBED_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">EMBED_FOR_MTID</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">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">void</span><span class="plain"> </span><span class="functiontext">Formats::embed<button class="popup" onclick="togglePopup('usagePopup228')">...<span class="popuptext" id="usagePopup228">Usage of <b>Formats::embed</b>:<br>The Weaver - <a href="3-tw.html#SP1_3_4_1_2_2">§1.3.4.1.2.2</a></span></button></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">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">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">service</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP21"></a><b>§21. </b>This method weaves an angle-bracketed paragraph macro name. <code class="display"><span class="extract">defn</span></code> is set
|
|
if and only if this is the place where the macro is defined — the usual
|
|
thing is to render some sort of equals sign after it, if so.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">PARA_MACRO_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">PARA_MACRO_FOR_MTID</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">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">void</span><span class="plain"> </span><span class="functiontext">Formats::para_macro<button class="popup" onclick="togglePopup('usagePopup229')">...<span class="popuptext" id="usagePopup229">Usage of <b>Formats::para_macro</b>:<br>The Weaver - <a href="3-tw.html#SP1_3_4_1_9_6">§1.3.4.1.9.6</a></span></button></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">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">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">pmac</span><span class="plain">, </span><span class="identifier">defn</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP22"></a><b>§22. </b>For many formats, page breaks are meaningless, and in that case this method
|
|
should not be provided. Inweb uses them only for cosmetic benefit (and rarely
|
|
at that), so no harm is done if there's no visual indication here.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">PAGEBREAK_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">PAGEBREAK_FOR_MTID</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">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">void</span><span class="plain"> </span><span class="functiontext">Formats::pagebreak<button class="popup" onclick="togglePopup('usagePopup230')">...<span class="popuptext" id="usagePopup230">Usage of <b>Formats::pagebreak</b>:<br>The Weaver - <a href="3-tw.html#SP1_3_4_1_2">§1.3.4.1.2</a>, <a href="3-tw.html#SP1_3_4_1_10_1">§1.3.4.1.10.1</a></span></button></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">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP23"></a><b>§23. </b>"Blank line" here might better be called "vertical skip of some kind". The
|
|
following should render some kind of skip, and may want to take note of whether
|
|
this happens in commentary or in code: the <code class="display"><span class="extract">in_comment</span></code> flag provides this
|
|
information.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">BLANK_LINE_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">BLANK_LINE_FOR_MTID</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">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">void</span><span class="plain"> </span><span class="functiontext">Formats::blank_line<button class="popup" onclick="togglePopup('usagePopup231')">...<span class="popuptext" id="usagePopup231">Usage of <b>Formats::blank_line</b>:<br>The Weaver - <a href="3-tw.html#SP1_3_4_1_8_2">§1.3.4.1.8.2</a>, <a href="3-tw.html#SP1_3_4_1_9_2">§1.3.4.1.9.2</a></span></button></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">int</span><span class="plain"> </span><span class="identifier">in_comment</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="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">in_comment</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP24"></a><b>§24. </b>Another opportunity for vertical tidying-up. At the beginning of a code
|
|
line which occurs after a run of <code class="display"><span class="extract">@d</span></code> or <code class="display"><span class="extract">@e</span></code> definitions, this method is
|
|
called. It can then insert a little vertical gap to separate the code from
|
|
the definitions.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">AFTER_DEFINITIONS_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">AFTER_DEFINITIONS_FOR_MTID</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">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">void</span><span class="plain"> </span><span class="functiontext">Formats::after_definitions<button class="popup" onclick="togglePopup('usagePopup232')">...<span class="popuptext" id="usagePopup232">Usage of <b>Formats::after_definitions</b>:<br>The Weaver - <a href="3-tw.html#SP1_3_4_1_9">§1.3.4.1.9</a></span></button></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">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">AFTER_DEFINITIONS_FOR_MTID</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="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP25"></a><b>§25. </b>This method is called when the weaver changes "material" — for example,
|
|
from <code class="display"><span class="extract">REGULAR_MATERIAL</span></code> to <code class="display"><span class="extract">CODE_MATERIAL</span></code>. The flag <code class="display"><span class="extract">content</span></code> is set if
|
|
the line on which this happens contains some content which will then be
|
|
woven; it will be clear for blank lines, or lines intercepted by the
|
|
weaver and turned into something else (such as list items).
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">CHANGE_MATERIAL_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">CHANGE_MATERIAL_FOR_MTID</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">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">void</span><span class="plain"> </span><span class="functiontext">Formats::change_material<button class="popup" onclick="togglePopup('usagePopup233')">...<span class="popuptext" id="usagePopup233">Usage of <b>Formats::change_material</b>:<br>The Weaver - <a href="3-tw.html#SP1_3_4_1_1">§1.3.4.1.1</a>, <a href="3-tw.html#SP1_3_4_1_8_3">§1.3.4.1.8.3</a>, <a href="3-tw.html#SP1_3_4_1_8_4">§1.3.4.1.8.4</a>, <a href="3-tw.html#SP1_3_4_1_9_1">§1.3.4.1.9.1</a>, <a href="3-tw.html#SP1_3_4_2">§1.3.4.2</a></span></button></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">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">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</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="identifier">content</span><span class="plain">, </span><span class="identifier">plainly</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP26"></a><b>§26. </b>This is called on a change of colour. "Colour" is really a shorthand way
|
|
of saying something more like "style", but seemed less ambiguous. In HTML,
|
|
this might trigger a change of CSS span style; in plain text, it would do
|
|
nothing.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">CHANGE_COLOUR_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">CHANGE_COLOUR_FOR_MTID</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">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">void</span><span class="plain"> </span><span class="functiontext">Formats::change_colour<button class="popup" onclick="togglePopup('usagePopup234')">...<span class="popuptext" id="usagePopup234">Usage of <b>Formats::change_colour</b>:<br>TeX Format - <a href="5-tf.html#SP8_2">§8.2</a>, <a href="5-tf.html#SP15">§15</a><br>HTML Formats - <a href="5-hf.html#SP10_3">§10.3</a></span></button></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">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">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">col</span><span class="plain">, </span><span class="identifier">in_code</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP27"></a><b>§27. </b>The following takes text, divides it up at stroke-mark boundaries —
|
|
that is, <code class="display"><span class="extract">this is inside</span></code>, this is outside — and sends contiguous pieces
|
|
of it either to <code class="display"><span class="extract">Formats::source_fragment</span></code> or <code class="display"><span class="extract">Formats::text_fragment</span></code>
|
|
as appropriate.
|
|
</p>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::text<button class="popup" onclick="togglePopup('usagePopup235')">...<span class="popuptext" id="usagePopup235">Usage of <b>Formats::text</b>:<br>Tags - <a href="2-tgs.html#SP7">§7</a>, <a href="2-tgs.html#SP7_1">§7.1</a><br>The Weaver - <a href="3-tw.html#SP1_3_4_1_8">§1.3.4.1.8</a>, <a href="3-tw.html#SP1_3_4_1_8_4">§1.3.4.1.8.4</a>, <a href="3-tw.html#SP1_3_4_1_10_5">§1.3.4.1.10.5</a>, <a href="3-tw.html#SP2_1">§2.1</a>, <a href="3-tw.html#SP2_3">§2.3</a>, <a href="3-tw.html#SP3">§3</a>, <a href="3-tw.html#SP3_1">§3.1</a><br>Plain Text Format - <a href="5-ptf.html#SP3">§3</a><br>TeX Format - <a href="5-tf.html#SP4">§4</a><br>HTML Formats - <a href="5-hf.html#SP7">§7</a></span></button></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">text_stream</span><span class="plain"> *</span><span class="identifier">id</span><span class="plain">) {</span>
|
|
<span class="functiontext"><a href="#SP27">Formats::text_r</a></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">id</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::text_comment<button class="popup" onclick="togglePopup('usagePopup236')">...<span class="popuptext" id="usagePopup236">Usage of <b>Formats::text_comment</b>:<br>TeX Format - <a href="5-tf.html#SP24_2">§24.2</a><br>HTML Formats - <a href="5-hf.html#SP10">§10</a></span></button></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">text_stream</span><span class="plain"> *</span><span class="identifier">id</span><span class="plain">) {</span>
|
|
<span class="functiontext"><a href="#SP27">Formats::text_r</a></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">id</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="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::text_r<button class="popup" onclick="togglePopup('usagePopup237')">...<span class="popuptext" id="usagePopup237">Usage of <b>Formats::text_r</b>:<br><a href="#SP27_1">§27.1</a>, <a href="#SP27_2">§27.2</a>, <a href="#SP27_3">§27.3</a>, <a href="#SP27_4_1">§27.4.1</a></span></button></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">text_stream</span><span class="plain"> *</span><span class="identifier">id</span><span class="plain">,</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">within</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">comments</span><span class="plain">) {</span>
|
|
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">code_in_comments_notation</span><span class="plain"> =</span>
|
|
<span class="functiontext"><a href="8-bdfw.html#SP6">Bibliographic::get_datum</a></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="plain">(</span><span class="identifier">comments</span><span class="plain">)?(</span><span class="identifier">I</span><span class="string">"Code In Code Comments Notation"</span><span class="plain">):(</span><span class="identifier">I</span><span class="string">"Code In Commentary Notation"</span><span class="plain">));</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="4-sm.html#SP18">Str::ne</a></span><span class="plain">(</span><span class="identifier">code_in_comments_notation</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Off"</span><span class="plain">)) </span><<span class="cwebmacro">Split text and code extracts</span> <span class="cwebmacronumber">27.1</span>><span class="plain">;</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">within</span><span class="plain"> == </span><span class="constant">FALSE</span><span class="plain">) </span><<span class="cwebmacro">Recognose hyperlinks</span> <span class="cwebmacronumber">27.2</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"><a href="8-bdfw.html#SP6">Bibliographic::get_datum</a></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"><a href="4-sm.html#SP18">Str::ne</a></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">Recognise cross-references</span> <span class="cwebmacronumber">27.4</span>><span class="plain">;</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">within</span><span class="plain">) {</span>
|
|
<span class="functiontext"><a href="#SP11">Formats::source_fragment</a></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">id</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<<span class="cwebmacro">Detect use of footnotes</span> <span class="cwebmacronumber">27.3</span>><span class="plain">;</span>
|
|
<span class="functiontext"><a href="#SP28">Formats::text_fragment</a></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">id</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP27_1"></a><b>§27.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Split text and code extracts</span> <span class="cwebmacronumber">27.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<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"><a href="4-sm.html#SP8">Str::len</a></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="functiontext"><a href="4-sm.html#SP13">Str::get_at</a></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">i</span><span class="plain"> += </span><span class="functiontext"><a href="4-sm.html#SP8">Str::len</a></span><span class="plain">(</span><span class="identifier">code_in_comments_notation</span><span class="plain">) - </span><span class="constant">1</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"><a href="4-sm.html#SP25">Str::includes_at</a></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="identifier">code_in_comments_notation</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"><a href="4-sm.html#SP16">Str::copy</a></span><span class="plain">(</span><span class="identifier">before</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">); </span><span class="functiontext"><a href="4-sm.html#SP15">Str::truncate</a></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"><a href="4-sm.html#SP25">Str::substr</a></span><span class="plain">(</span><span class="identifier">after</span><span class="plain">, </span><span class="functiontext"><a href="4-sm.html#SP10">Str::at</a></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="functiontext"><a href="4-sm.html#SP8">Str::len</a></span><span class="plain">(</span><span class="identifier">code_in_comments_notation</span><span class="plain">)), </span><span class="functiontext"><a href="4-sm.html#SP10">Str::end</a></span><span class="plain">(</span><span class="identifier">id</span><span class="plain">));</span>
|
|
<span class="functiontext"><a href="#SP27">Formats::text_r</a></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">before</span><span class="plain">, </span><span class="identifier">within</span><span class="plain">, </span><span class="identifier">comments</span><span class="plain">);</span>
|
|
<span class="functiontext"><a href="#SP27">Formats::text_r</a></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">after</span><span class="plain">, (</span><span class="identifier">within</span><span class="plain">)?</span><span class="identifier">FALSE:TRUE</span><span class="plain">, </span><span class="identifier">comments</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="reserved">return</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="#SP27">§27</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP27_2"></a><b>§27.2. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Recognose hyperlinks</span> <span class="cwebmacronumber">27.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<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"><a href="4-sm.html#SP8">Str::len</a></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="functiontext"><a href="4-sm.html#SP25">Str::includes_at</a></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="identifier">I</span><span class="string">"http://"</span><span class="plain">)) ||</span>
|
|
<span class="plain">(</span><span class="functiontext"><a href="4-sm.html#SP25">Str::includes_at</a></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="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"><a href="4-sm.html#SP16">Str::copy</a></span><span class="plain">(</span><span class="identifier">before</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">); </span><span class="functiontext"><a href="4-sm.html#SP15">Str::truncate</a></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"><a href="4-sm.html#SP25">Str::substr</a></span><span class="plain">(</span><span class="identifier">after</span><span class="plain">, </span><span class="functiontext"><a href="4-sm.html#SP10">Str::at</a></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="functiontext"><a href="4-sm.html#SP10">Str::end</a></span><span class="plain">(</span><span class="identifier">id</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"><a href="4-pm.html#SP9">Regexp::create_mr</a></span><span class="plain">();</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="4-pm.html#SP10">Regexp::match</a></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"><a href="#SP27">Formats::text_r</a></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">before</span><span class="plain">, </span><span class="identifier">within</span><span class="plain">, </span><span class="identifier">comments</span><span class="plain">);</span>
|
|
<span class="functiontext"><a href="#SP12">Formats::url</a></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="functiontext"><a href="#SP27">Formats::text_r</a></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">[1], </span><span class="identifier">within</span><span class="plain">, </span><span class="identifier">comments</span><span class="plain">);</span>
|
|
<span class="functiontext"><a href="4-pm.html#SP9">Regexp::dispose_of</a></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"><a href="4-pm.html#SP9">Regexp::dispose_of</a></span><span class="plain">(&</span><span class="identifier">mr</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>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP27">§27</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP27_3"></a><b>§27.3. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Detect use of footnotes</span> <span class="cwebmacronumber">27.3</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">);</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">cue</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="reserved">int</span><span class="plain"> </span><span class="identifier">allow</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="functiontext"><a href="2-tp.html#SP4">Parser::detect_footnote</a></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">id</span><span class="plain">, </span><span class="identifier">before</span><span class="plain">, </span><span class="identifier">cue</span><span class="plain">, </span><span class="identifier">after</span><span class="plain">)) {</span>
|
|
<span class="identifier">allow</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
|
|
<span class="functiontext"><a href="#SP27">Formats::text_r</a></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">before</span><span class="plain">, </span><span class="identifier">within</span><span class="plain">, </span><span class="identifier">comments</span><span class="plain">);</span>
|
|
<span class="functiontext"><a href="#SP13">Formats::footnote_cue</a></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">cue</span><span class="plain">);</span>
|
|
<span class="functiontext"><a href="#SP27">Formats::text_r</a></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">after</span><span class="plain">, </span><span class="identifier">within</span><span class="plain">, </span><span class="identifier">comments</span><span class="plain">);</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">cue</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="reserved">if</span><span class="plain"> (</span><span class="identifier">allow</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP27">§27</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP27_4"></a><b>§27.4. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Recognise cross-references</span> <span class="cwebmacronumber">27.4</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"><a href="4-sm.html#SP8">Str::len</a></span><span class="plain">(</span><span class="identifier">xref_notation</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"><a href="4-sm.html#SP8">Str::len</a></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">within</span><span class="plain"> == </span><span class="constant">FALSE</span><span class="plain">) && (</span><span class="functiontext"><a href="4-sm.html#SP25">Str::includes_at</a></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="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"><a href="4-sm.html#SP8">Str::len</a></span><span class="plain">(</span><span class="identifier">id</span><span class="plain">)) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="4-sm.html#SP25">Str::includes_at</a></span><span class="plain">(</span><span class="identifier">id</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="reserved">int</span><span class="plain"> </span><span class="identifier">allow</span><span class="plain"> = </span><span class="constant">FALSE</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="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">reference</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"><a href="4-sm.html#SP25">Str::substr</a></span><span class="plain">(</span><span class="identifier">before</span><span class="plain">, </span><span class="functiontext"><a href="4-sm.html#SP10">Str::start</a></span><span class="plain">(</span><span class="identifier">id</span><span class="plain">), </span><span class="functiontext"><a href="4-sm.html#SP10">Str::at</a></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="functiontext"><a href="4-sm.html#SP25">Str::substr</a></span><span class="plain">(</span><span class="identifier">reference</span><span class="plain">, </span><span class="functiontext"><a href="4-sm.html#SP10">Str::at</a></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="identifier">N</span><span class="plain">), </span><span class="functiontext"><a href="4-sm.html#SP10">Str::at</a></span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">j</span><span class="plain">));</span>
|
|
<span class="functiontext"><a href="4-sm.html#SP25">Str::substr</a></span><span class="plain">(</span><span class="identifier">after</span><span class="plain">, </span><span class="functiontext"><a href="4-sm.html#SP10">Str::at</a></span><span class="plain">(</span><span class="identifier">id</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="functiontext"><a href="4-sm.html#SP10">Str::end</a></span><span class="plain">(</span><span class="identifier">id</span><span class="plain">));</span>
|
|
<<span class="cwebmacro">Attempt to resolve the cross-reference</span> <span class="cwebmacronumber">27.4.1</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">reference</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="reserved">if</span><span class="plain"> (</span><span class="identifier">allow</span><span class="plain">) </span><span class="reserved">return</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>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP27">§27</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP27_4_1"></a><b>§27.4.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Attempt to resolve the cross-reference</span> <span class="cwebmacronumber">27.4.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"><a href="6-cln.html#SP5">Colonies::resolve_reference_in_weave</a></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">weave_web</span><span class="plain">-></span><span class="element">md</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"><a href="#SP27">Formats::text_r</a></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">before</span><span class="plain">, </span><span class="identifier">within</span><span class="plain">, </span><span class="identifier">comments</span><span class="plain">);</span>
|
|
<span class="functiontext"><a href="#SP12">Formats::url</a></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="functiontext"><a href="#SP27">Formats::text_r</a></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">after</span><span class="plain">, </span><span class="identifier">within</span><span class="plain">, </span><span class="identifier">comments</span><span class="plain">);</span>
|
|
<span class="identifier">allow</span><span class="plain"> = </span><span class="constant">TRUE</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="#SP27_4">§27.4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP28"></a><b>§28. </b><code class="display"><span class="extract">COMMENTARY_TEXT_FOR_MTID</span></code> straightforwardly weaves out a run of contiguous
|
|
text. Ordinarily, any formulae written in TeX notation (i.e., in dollar signs
|
|
used as brackets) will be transmogrified into a plain text paraphrase, but
|
|
the <code class="display"><span class="extract">PRESERVE_MATH_MODE_FOR_MTID</span></code> can prevent this. (And of course the TeX
|
|
format does, because it wants to keep the formulae in all their glory.)
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">COMMENTARY_TEXT_FOR_MTID</span>
|
|
<span class="definitionkeyword">enum</span> <span class="constant">PRESERVE_MATH_MODE_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">IMETHOD_TYPE</span><span class="plain">(</span><span class="constant">PRESERVE_MATH_MODE_FOR_MTID</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">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">id</span><span class="plain">)</span>
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">COMMENTARY_TEXT_FOR_MTID</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">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">matter</span><span class="plain">)</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::text_fragment<button class="popup" onclick="togglePopup('usagePopup238')">...<span class="popuptext" id="usagePopup238">Usage of <b>Formats::text_fragment</b>:<br><a href="#SP27">§27</a></span></button></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">text_stream</span><span class="plain"> *</span><span class="identifier">fragment</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="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">);</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">rv</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"><a href="4-sm.html#SP21">Str::eq_wide_string</a></span><span class="plain">(</span>
|
|
<span class="functiontext"><a href="8-bdfw.html#SP6">Bibliographic::get_datum</a></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 Notation"</span><span class="plain">), </span><span class="identifier">L</span><span class="string">"On"</span><span class="plain">)) {</span>
|
|
<span class="identifier">rv</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
|
<span class="identifier">IMETHOD_CALL</span><span class="plain">(</span><span class="identifier">rv</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="identifier">wv</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">fragment</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rv</span><span class="plain"> == </span><span class="constant">FALSE</span><span class="plain">) </span><span class="functiontext"><a href="5-tf.html#SP28">TeX::remove_math_mode</a></span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">fragment</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"><a href="4-sm.html#SP8">Str::len</a></span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">) == </span><span class="constant">0</span><span class="plain">) </span><span class="functiontext"><a href="4-sm.html#SP16">Str::copy</a></span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">fragment</span><span class="plain">);</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP29"></a><b>§29. </b>The weaver has special typographical support for the stand-alone Inform
|
|
document of Preform grammar, and this is the hook for it. Most formats
|
|
should ignore it.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">PREFORM_DOCUMENT_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">IMETHOD_TYPE</span><span class="plain">(</span><span class="constant">PREFORM_DOCUMENT_FOR_MTID</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">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">web</span><span class="plain"> *</span><span class="identifier">W</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="reserved">section</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">, </span><span class="reserved">source_line</span><span class="plain"> *</span><span class="identifier">L</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">concluding_comment</span><span class="plain">)</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Formats::preform_document<button class="popup" onclick="togglePopup('usagePopup239')">...<span class="popuptext" id="usagePopup239">Usage of <b>Formats::preform_document</b>:<br>InC Support - <a href="4-is.html#SP16">§16</a></span></button></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">web</span><span class="plain"> *</span><span class="identifier">W</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="reserved">section</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">, </span><span class="reserved">source_line</span><span class="plain"> *</span><span class="identifier">L</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">concluding_comment</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="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">rv</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
|
<span class="identifier">IMETHOD_CALL</span><span class="plain">(</span><span class="identifier">rv</span><span class="plain">, </span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">PREFORM_DOCUMENT_FOR_MTID</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">W</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">,</span>
|
|
<span class="identifier">concluding_comment</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">rv</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP30"></a><b>§30. </b>When the weaver adds one of its endnotes — "This function is used in...",
|
|
or some such — it calls this method twice, once before the start, with
|
|
<code class="display"><span class="extract">end</span></code> set to 1, and once after the end, with <code class="display"><span class="extract">end</span></code> set to 2.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">ENDNOTE_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">ENDNOTE_FOR_MTID</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">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">void</span><span class="plain"> </span><span class="functiontext">Formats::endnote<button class="popup" onclick="togglePopup('usagePopup240')">...<span class="popuptext" id="usagePopup240">Usage of <b>Formats::endnote</b>:<br>Tags - <a href="2-tgs.html#SP7">§7</a>, <a href="2-tgs.html#SP7_1">§7.1</a><br>The Weaver - <a href="3-tw.html#SP2_1">§2.1</a>, <a href="3-tw.html#SP2_2">§2.2</a>, <a href="3-tw.html#SP2_3">§2.3</a></span></button></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">int</span><span class="plain"> </span><span class="identifier">end</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="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">end</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP31"></a><b>§31. </b>"Locale" here isn't used in the Unix sense. It means text which describes
|
|
a range of numbered paragraphs, from <code class="display"><span class="extract">par1</span></code> to <code class="display"><span class="extract">par2</span></code>, though <code class="display"><span class="extract">par2</span></code> can
|
|
instead be null, in which case the description is of just one para. (This
|
|
is often used in endnotes.)
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">LOCALE_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">LOCALE_FOR_MTID</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">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="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::locale<button class="popup" onclick="togglePopup('usagePopup241')">...<span class="popuptext" id="usagePopup241">Usage of <b>Formats::locale</b>:<br>The Weaver - <a href="3-tw.html#SP2_1">§2.1</a>, <a href="3-tw.html#SP3_1">§3.1</a><br>Plain Text Format - <a href="5-ptf.html#SP6">§6</a></span></button></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">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="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</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">par2</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP32"></a><b>§32. </b>And finally: the bottom of the woven file. The <code class="display"><span class="extract">comment</span></code> is, again, not
|
|
intended for human eyes, and will be some sort of "End of weave" remark.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">TAIL_FOR_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">TAIL_FOR_MTID</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">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">S</span><span class="plain">)</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::tail<button class="popup" onclick="togglePopup('usagePopup242')">...<span class="popuptext" id="usagePopup242">Usage of <b>Formats::tail</b>:<br>The Weaver - <a href="3-tw.html#SP1_5">§1.5</a></span></button></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">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">S</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="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
|
<span class="identifier">VMETHOD_CALL</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="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">comment</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP33"></a><b>§33. Post-processing. </b>Consider what happens when Inweb makes a PDF, via TeX. The initial weave is
|
|
to a TeX file; it's then "post-processing" which will turn this into a PDF.
|
|
The following method calls allow such two-stage formats to function; in
|
|
this case, it would be the PDF format which provides the necessary methods
|
|
to turn TeX into PDF. The important method is this one:
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">POST_PROCESS_POS_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">POST_PROCESS_POS_MTID</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">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">open_afterwards</span><span class="plain">)</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::post_process_weave<button class="popup" onclick="togglePopup('usagePopup243')">...<span class="popuptext" id="usagePopup243">Usage of <b>Formats::post_process_weave</b>:<br>The Swarm - <a href="3-ts.html#SP2">§2</a></span></button></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">open_afterwards</span><span class="plain">) {</span>
|
|
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">, </span><span class="constant">POST_PROCESS_POS_MTID</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">open_afterwards</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP34"></a><b>§34. </b>Optionally, a fancy report can be printed out, to describe what has been
|
|
done:
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">POST_PROCESS_REPORT_POS_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">POST_PROCESS_REPORT_POS_MTID</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">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">)</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::report_on_post_processing<button class="popup" onclick="togglePopup('usagePopup244')">...<span class="popuptext" id="usagePopup244">Usage of <b>Formats::report_on_post_processing</b>:<br>The Swarm - <a href="3-ts.html#SP2_3">§2.3</a></span></button></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="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">, </span><span class="constant">POST_PROCESS_REPORT_POS_MTID</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP35"></a><b>§35. </b>After post-processing, an index file is sometimes needed. For example, if a
|
|
big web is woven to a swarm of PDFs, one for each section, then we also want
|
|
to make an index page in HTML which provides annotated links to those PDFs.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">INDEX_PDFS_POS_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">IMETHOD_TYPE</span><span class="plain">(</span><span class="constant">INDEX_PDFS_POS_MTID</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">int</span><span class="plain"> </span><span class="functiontext">Formats::index_pdfs<button class="popup" onclick="togglePopup('usagePopup245')">...<span class="popuptext" id="usagePopup245">Usage of <b>Formats::index_pdfs</b>:<br>none</span></button></span><span class="plain">(</span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">format</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="functiontext"><a href="#SP1">Formats::find_by_name</a></span><span class="plain">(</span><span class="identifier">format</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">wf</span><span class="plain"> == </span><span class="identifier">NULL</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">rv</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
|
<span class="identifier">IMETHOD_CALLV</span><span class="plain">(</span><span class="identifier">rv</span><span class="plain">, </span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">INDEX_PDFS_POS_MTID</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">rv</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP36"></a><b>§36. </b>And in that index file, we may want to substitute in values for placeholder
|
|
text like <code class="display"><span class="extract">[[PDF Size]]</span></code> in the template file. This is the <code class="display"><span class="extract">detail</span></code>.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">enum</span> <span class="constant">POST_PROCESS_SUBSTITUTE_POS_MTID</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="identifier">IMETHOD_TYPE</span><span class="plain">(</span><span class="constant">POST_PROCESS_SUBSTITUTE_POS_MTID</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">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">detail</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="reserved">int</span><span class="plain"> </span><span class="functiontext">Formats::substitute_post_processing_data<button class="popup" onclick="togglePopup('usagePopup246')">...<span class="popuptext" id="usagePopup246">Usage of <b>Formats::substitute_post_processing_data</b>:<br>The Indexer - <a href="3-ti.html#SP5_1_8_2">§5.1.8.2</a>, <a href="3-ti.html#SP5_1_8_3">§5.1.8.3</a>, <a href="3-ti.html#SP5_1_8_4">§5.1.8.4</a></span></button></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">text_stream</span><span class="plain"> *</span><span class="identifier">detail</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="reserved">int</span><span class="plain"> </span><span class="identifier">rv</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
|
<span class="identifier">IMETHOD_CALL</span><span class="plain">(</span><span class="identifier">rv</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">, </span><span class="constant">POST_PROCESS_SUBSTITUTE_POS_MTID</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">detail</span><span class="plain">, </span><span class="identifier">pattern</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">rv</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><i>(This section begins Chapter 5: Formats.)</i></li><li><a href="5-ptf.html">Continue with 'Plain Text Format'</a></li></ul><hr class="tocbar">
|
|
<!--End of weave-->
|
|
<script>
|
|
function togglePopup(material_id) {
|
|
var popup = document.getElementById(material_id);
|
|
popup.classList.toggle("show");
|
|
}
|
|
</script>
|
|
|
|
<link href="Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
</main>
|
|
</body>
|
|
</html>
|
|
|