mirror of
https://github.com/ganelson/inform.git
synced 2024-06-26 04:00:43 +03:00
Restructured html module
This commit is contained in:
parent
dd8233116c
commit
e630531226
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
v10.1.0-alpha.1+6Q43 'Krypton' (9 May 2020)
|
||||
v10.1.0-alpha.1+6Q44 'Krypton' (10 May 2020)
|
||||
|
||||
## About Inform 7
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: alpha.1
|
||||
Build Date: 9 May 2020
|
||||
Build Number: 6Q43
|
||||
Build Date: 10 May 2020
|
||||
Build Number: 6Q44
|
||||
|
|
|
@ -82,44 +82,13 @@ which use this module:
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ArchModule::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-am.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Register this module's memory allocation reasons</span><span class="named-paragraph-number">3.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-am.html#SP3_2" class="named-paragraph-link"><span class="named-paragraph">Register this module's stream writers</span><span class="named-paragraph-number">3.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-am.html#SP3_3" class="named-paragraph-link"><span class="named-paragraph">Register this module's debugging log aspects</span><span class="named-paragraph-number">3.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-am.html#SP3_4" class="named-paragraph-link"><span class="named-paragraph">Register this module's debugging log writers</span><span class="named-paragraph-number">3.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-arc.html#SP3" class="function-link"><span class="function-syntax">Architectures::create</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tvm.html#SP3" class="function-link"><span class="function-syntax">TargetVMs::create</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ArchModule::end</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3_1"></a><b>§3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Register this module's memory allocation reasons</span><span class="named-paragraph-number">3.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> ;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-am.html#SP3">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_2"></a><b>§3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Register this module's stream writers</span><span class="named-paragraph-number">3.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> ;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-am.html#SP3">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_3"></a><b>§3.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Register this module's debugging log aspects</span><span class="named-paragraph-number">3.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> ;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-am.html#SP3">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_4"></a><b>§3.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Register this module's debugging log writers</span><span class="named-paragraph-number">3.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> ;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-am.html#SP3">§3</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="P-wtmd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresscurrent">am</li><li class="progresschapter"><a href="2-arc.html">2</a></li><li class="progressnext"><a href="2-arc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -166,7 +166,7 @@ but we won't assume that. Remember, <a href="../supervisor-module/index.html" cl
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">build_folder</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Problems.html"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::Issue::start_problems_report</span><span class="plain-syntax">(</span><span class="identifier-syntax">PF</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::set_link_abbreviation_path</span><span class="plain-syntax">(</span><span class="identifier-syntax">Projects::path</span><span class="plain-syntax">(</span><span class="identifier-syntax">project</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::set_link_abbreviation_path</span><span class="plain-syntax">(</span><span class="identifier-syntax">Projects::path</span><span class="plain-syntax">(</span><span class="identifier-syntax">project</span><span class="plain-syntax">));</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-mr.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_4"></a><b>§1.4. </b>Telemetry is not as sinister as it sounds: the app isn't sending data out
|
||||
|
|
|
@ -106,7 +106,7 @@ higher up, but kinds with priority 0 do not appear in the index at all.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="13-ki.html#SP1_5" class="named-paragraph-link"><span class="named-paragraph">Write table row for this kind</span><span class="named-paragraph-number">1.5</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">:</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="13-ki.html#SP1_7" class="named-paragraph-link"><span class="named-paragraph">Write heading for the detailed index entry for this kind</span><span class="named-paragraph-number">1.7</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="13-ki.html#SP1_9" class="named-paragraph-link"><span class="named-paragraph">Index kinds of kinds matched by this kind</span><span class="named-paragraph-number">1.9</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="13-ki.html#SP1_11" class="named-paragraph-link"><span class="named-paragraph">Index explanatory text supplied for a kind</span><span class="named-paragraph-number">1.11</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="13-ki.html#SP1_8" class="named-paragraph-link"><span class="named-paragraph">Index literal patterns which can specify this kind</span><span class="named-paragraph-number">1.8</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -277,7 +277,7 @@ row.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"halftight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"halftight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::anchor_numbered</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">); </span><span class="comment-syntax"> ...the anchor to which the grey icon in the table led</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<b>"</span><span class="plain-syntax">); </span><a href="13-ki.html#SP6" class="function-link"><span class="function-syntax">Kinds::Index::index_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</b>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" (<i>plural</i> "</span><span class="plain-syntax">); </span><a href="13-ki.html#SP6" class="function-link"><span class="function-syntax">Kinds::Index::index_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">")"</span><span class="plain-syntax">);</span>
|
||||
|
@ -285,7 +285,7 @@ row.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::DocReferences::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Kinds::Behaviour::get_documentation_reference</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)); </span><span class="comment-syntax"> blue help icon, if any</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::is_proper_constructor</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">a</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::Constructors::arity</span><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">a</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Constructors::variance</span><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="constant-syntax">0</span><span class="plain-syntax">) ==</span>
|
||||
|
|
|
@ -229,10 +229,10 @@ used in sorting algorithms.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cco</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax"> comparison count: used to make the debugging log vaguely searchable</span>
|
||||
<span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">""</span><span class="plain-syntax">; </span><span class="comment-syntax"> name of the law being applied, which caused this to be called</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> name of the law being applied, which caused this to be called</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Specifications::compare_specificity</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Specifications::compare_specificity</span></span>:<br/>Phrase Runtime Context Data - <a href="22-prcd.html#SP8_3">§8.3</a><br/>Phrase Type Data - <a href="22-ptd.html#SP21_5_2">§21.5.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec2</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wont_mix</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">SPECIFICITIES</span><span class="plain-syntax">, </span><span class="string-syntax">"Law %s (test %d): comparing $P with $P\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">SPECIFICITIES</span><span class="plain-syntax">, </span><span class="string-syntax">"Law %S (test %d): comparing $P with $P\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax">, </span><span class="identifier-syntax">cco</span><span class="plain-syntax">++, </span><span class="identifier-syntax">spec1</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec2</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="14-sp.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Existence is itself something specific</span><span class="named-paragraph-number">7.1</span></a></span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -560,7 +560,7 @@ state of being boolean, and the given certainty levels:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prnbar</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">S</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax"> != </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">k</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"; "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"not "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
|
||||
|
@ -576,7 +576,7 @@ state of being boolean, and the given certainty levels:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="16-in.html#SP14" class="function-link"><span class="function-syntax">World::Inferences::get_prop_state_without_inheritance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, &</span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">S</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">ParseTree::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">)))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W: "</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"000080"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ParseTree::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">));</span>
|
||||
|
|
|
@ -575,12 +575,12 @@ text to assert a change:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="string-syntax">"%+W response (%c)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">, </span><span class="character-syntax">'A'</span><span class="plain-syntax"> + </span><span class="identifier-syntax">marker</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;<i>name</i>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="string-syntax">"The %+W response (%c) is \"New text.\"."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;<i>set</i>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -1706,7 +1706,7 @@ Helvetica-style lower case "x", but life is full of compromises.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="string-syntax">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">t</span><span class="plain-syntax">-></span><span class="element-syntax">first_column_by_definition</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="string-syntax">" entry"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -12,6 +12,14 @@
|
|||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
@ -58,9 +66,11 @@
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#2">Chapter 2: Bridge to Problems Module</a></li><li><b>Using Problems</b></li></ul></div>
|
||||
<p class="purpose">Interface to the Problems module.</p>
|
||||
|
||||
<ul class="toc"><li><a href="2-up.html#SP3">§3. Outcome images</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">PROBLEMS_HTML_EMITTER</span><span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::char_out</span>
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">PROBLEMS_HTML_EMITTER</span><span class="plain-syntax"> </span><span class="identifier-syntax">HTML::put</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>Inform tops and tails its output of problem messages, and it also prints
|
||||
non-problem messages when everything was fine. That all happens here:
|
||||
|
@ -73,7 +83,9 @@ non-problem messages when everything was fine. That all happens here:
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Using::start_problems_report</span><span class="plain-syntax">(</span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">STREAM_OPEN_TO_FILE</span><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">UTF8_ENC</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::Fatal::filename_related</span><span class="plain-syntax">(</span><span class="string-syntax">"Can't open problem log"</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::html_header</span><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Translating the Source"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::header</span><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Translating the Source"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Supervisor::file_from_installation</span><span class="plain-syntax">(</span><span class="identifier-syntax">CSS_FOR_STANDARD_PAGES_IRES</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Supervisor::file_from_installation</span><span class="plain-syntax">(</span><span class="identifier-syntax">JAVASCRIPT_FOR_STANDARD_PAGES_IRES</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Using::final_report</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">disaster_struck</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">problems_count</span><span class="plain-syntax">) {</span>
|
||||
|
@ -88,7 +100,7 @@ non-problem messages when everything was fine. That all happens here:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::Buffer::redirect_problem_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rooms</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">things</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::html_outcome_image</span><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="string-syntax">"ni_succeeded"</span><span class="plain-syntax">, </span><span class="string-syntax">"Succeeded"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">Problems::Using::html_outcome_image</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="string-syntax">"ni_succeeded"</span><span class="plain-syntax">, </span><span class="string-syntax">"Succeeded"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Spatial::get_world_size</span><span class="plain-syntax">(&</span><span class="identifier-syntax">rooms</span><span class="plain-syntax">, &</span><span class="identifier-syntax">things</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
|
@ -143,7 +155,7 @@ ingratitude of some — oh, all right.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"Problems occurring in translation prevented the game "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"from being properly created. (Correct the source text to "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"remove these problems and click on Go once again.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::outcome_image_tail</span><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">Problems::Using::outcome_image_tail</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">STATUS</span><span class="plain-syntax"> = </span><a href="1-pp.html#SP2" class="function-link"><span class="function-syntax">ProgressBar::begin_outcome</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">STATUS</span><span class="plain-syntax">) {</span>
|
||||
|
@ -181,7 +193,7 @@ command line — deserves the truth.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"into a world with %1 %2 and %3 %4, and the index has been "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"brought up to date."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::outcome_image_tail</span><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">Problems::Using::outcome_image_tail</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">telemetry_recording</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Telemetry::ensure_telemetry_file</span><span class="plain-syntax">();</span>
|
||||
|
@ -215,6 +227,75 @@ command line — deserves the truth.
|
|||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-up.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. Outcome images. </b>These are the two images used on the Problems page to visually indicate
|
||||
success or failure. We also use special images on special occasions.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">CENTRED_OUTCOME_IMAGE_STYLE</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">SIDE_OUTCOME_IMAGE_STYLE</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">outcome_image_style</span><span class="plain-syntax"> = </span><span class="constant-syntax">SIDE_OUTCOME_IMAGE_STYLE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b>This callback function is called just as the <a href="../problems-module/index.html" class="internal">problems</a> module is about
|
||||
to issue its first problem of the run:
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">FIRST_PROBLEM_CALLBACK</span><span class="plain-syntax"> </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">Problems::Using::html_outcome_failed</span></a>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Using::html_outcome_failed</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Problems::Issue::internal_errors_have_occurred</span><span class="plain-syntax">())</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">Problems::Using::html_outcome_image</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="string-syntax">"ni_failed_badly"</span><span class="plain-syntax">, </span><span class="string-syntax">"Failed"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP4" class="function-link"><span class="function-syntax">Problems::Using::html_outcome_image</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="string-syntax">"ni_failed"</span><span class="plain-syntax">, </span><span class="string-syntax">"Failed"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Using::html_outcome_image</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Problems::Using::html_outcome_image</span></span>:<br/><a href="2-up.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">image</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">verdict</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vn</span><span class="plain-syntax"> = </span><span class="string-syntax">""</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">be_festive</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Problems::Issue::internal_errors_have_occurred</span><span class="plain-syntax">() == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">be_festive</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">be_festive</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Time::feast</span><span class="plain-syntax">()) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CHRISTMAS_FEAST:</span><span class="plain-syntax"> </span><span class="identifier-syntax">vn</span><span class="plain-syntax"> = </span><span class="string-syntax">"_2"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">EASTER_FEAST:</span><span class="plain-syntax"> </span><span class="identifier-syntax">vn</span><span class="plain-syntax"> = </span><span class="string-syntax">"_3"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">vn</span><span class="plain-syntax">[0]) </span><span class="identifier-syntax">outcome_image_style</span><span class="plain-syntax"> = </span><span class="constant-syntax">CENTRED_OUTCOME_IMAGE_STYLE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::Issue::issue_problems_banner</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">verdict</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">outcome_image_style</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CENTRED_OUTCOME_IMAGE_STYLE:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"center"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"src=inform:/outcome_images/%s%s.png border=0"</span><span class="plain-syntax">, </span><span class="identifier-syntax">image</span><span class="plain-syntax">, </span><span class="identifier-syntax">vn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"center"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SIDE_OUTCOME_IMAGE_STYLE:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::first_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">110</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"src=inform:/outcome_images/%s%s@2x.png border=1 width=100 height=100"</span><span class="plain-syntax">, </span><span class="identifier-syntax">image</span><span class="plain-syntax">, </span><span class="identifier-syntax">vn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"HEADNOTE"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">, </span><span class="string-syntax">"style=\"margin-top:0;\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"(Each time <b>Go</b> or <b>Replay</b> is clicked, Inform tries to "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"translate the source text into a working story, and updates this report.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"PROBLEMS BEGIN"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Using::outcome_image_tail</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Problems::Using::outcome_image_tail</span></span>:<br/><a href="2-up.html#SP2_2">§2.2</a>, <a href="2-up.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">outcome_image_style</span><span class="plain-syntax"> == </span><span class="constant-syntax">SIDE_OUTCOME_IMAGE_STYLE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"PROBLEMS END"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_row</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"FOOTNOTE"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-pp.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">up</li><li class="progresssection"><a href="2-sq.html">sq</a></li><li class="progresssection"><a href="2-si.html">si</a></li><li class="progresssection"><a href="2-pwst.html">pwst</a></li><li class="progresschapter"><a href="3-nl.html">3</a></li><li class="progresschapter"><a href="4-its.html">4</a></li><li class="progresschapter"><a href="5-lp.html">5</a></li><li class="progresschapter"><a href="6-bp.html">6</a></li><li class="progresschapter"><a href="7-ptu.html">7</a></li><li class="progresschapter"><a href="8-ef.html">8</a></li><li class="progresschapter"><a href="9-ita.html">9</a></li><li class="progresschapter"><a href="10-aots.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="2-sq.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -811,7 +811,7 @@ values, of the kind to which the activity applies.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">acr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">av</span><span class="plain-syntax">-></span><span class="element-syntax">cross_references</span><span class="plain-syntax">; </span><span class="identifier-syntax">acr</span><span class="plain-syntax">; </span><span class="identifier-syntax">acr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">acr</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">phrase</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">acr</span><span class="plain-syntax">-></span><span class="element-syntax">rule_dependent</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="element-syntax">declaration_node</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">ParseTree::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="element-syntax">declaration_node</span><span class="plain-syntax">)))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"NB: %W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ParseTree::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="element-syntax">declaration_node</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">ParseTree::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-></span><span class="element-syntax">declaration_node</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -501,7 +501,7 @@ can be used in a void context as a sort of return-from-rule phrase.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">rulebook_outcome</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ro</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ro</span><span class="plain-syntax"> = </span><span class="identifier-syntax">outs</span><span class="plain-syntax">-></span><span class="element-syntax">named_outcomes</span><span class="plain-syntax">; </span><span class="identifier-syntax">ro</span><span class="plain-syntax">; </span><span class="identifier-syntax">ro</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ro</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">named_rulebook_outcome</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rbno</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ro</span><span class="plain-syntax">-></span><span class="element-syntax">outcome_name</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<i>outcome</i>&nbsp;&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">outs</span><span class="plain-syntax">-></span><span class="element-syntax">default_named_outcome</span><span class="plain-syntax"> == </span><span class="identifier-syntax">ro</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<b>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Nouns::nominative</span><span class="plain-syntax">(</span><span class="identifier-syntax">rbno</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">));</span>
|
||||
|
@ -519,7 +519,7 @@ can be used in a void context as a sort of return-from-rule phrase.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">outs</span><span class="plain-syntax">-></span><span class="element-syntax">default_named_outcome</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">outs</span><span class="plain-syntax">-></span><span class="element-syntax">default_rule_outcome</span><span class="plain-syntax"> != </span><span class="constant-syntax">NO_OUTCOME</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">suppress_outcome</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<i>default outcome is</i> "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">outs</span><span class="plain-syntax">-></span><span class="element-syntax">default_rule_outcome</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SUCCESS_OUTCOME:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"success"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -98,8 +98,8 @@ whether it's to appear at the front, middle, or back of the rulebook:
|
|||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax"> used only to show how the page was added to its rulebook, for the index:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">next_rule_specificity</span><span class="plain-syntax">; </span><span class="comment-syntax"> </span>\(1\)<span class="comment-syntax"> more specific than following, </span>\(0\)<span class="comment-syntax"> equal, </span>\(-1\)<span class="comment-syntax"> less</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_rule_specificity_law</span><span class="plain-syntax">; </span><span class="comment-syntax"> description of reason</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_rule_specificity_lawname</span><span class="plain-syntax">; </span><span class="comment-syntax"> name of Law used to sort</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_rule_specificity_law</span><span class="plain-syntax">; </span><span class="comment-syntax"> description of reason</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_rule_specificity_lawname</span><span class="plain-syntax">; </span><span class="comment-syntax"> name of Law used to sort</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">booking</span><span class="plain-syntax">;</span>
|
||||
|
@ -705,7 +705,7 @@ want this, so:
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::Bookings::br_start_index_line</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Rules::Bookings::br_start_index_line</span></span>:<br/><a href="21-rb.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prev</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">billing</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">billing</span><span class="plain-syntax">[0]) && (</span><span class="identifier-syntax">show_index_links</span><span class="plain-syntax">)) </span><a href="21-rb.html#SP20" class="function-link"><span class="function-syntax">Rules::Bookings::br_show_linkage_icon</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">billing</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;&nbsp;&nbsp;&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
|
@ -717,19 +717,20 @@ want this, so:
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::Bookings::br_show_linkage_icon</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Rules::Bookings::br_show_linkage_icon</span></span>:<br/><a href="21-rb.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">booking</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prev</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">icon_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> redundant assignment to appease </span><span class="extract"><span class="extract-syntax">gcc -O2</span></span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">icon_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> redundant assignment to appease </span><span class="extract"><span class="extract-syntax">gcc -O2</span></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prev</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="identifier-syntax">next_rule_specificity_law</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::html_icon_with_tooltip</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"rulenone.png"</span><span class="plain-syntax">, </span><span class="string-syntax">"start of rulebook"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::icon_with_tooltip</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"inform:/doc_images/rulenone.png"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"start of rulebook"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> -1: </span><span class="identifier-syntax">icon_name</span><span class="plain-syntax"> = </span><span class="string-syntax">"ruleless.png"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">: </span><span class="identifier-syntax">icon_name</span><span class="plain-syntax"> = </span><span class="string-syntax">"ruleequal.png"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="identifier-syntax">icon_name</span><span class="plain-syntax"> = </span><span class="string-syntax">"rulemore.png"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> -1: </span><span class="identifier-syntax">icon_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"inform:/doc_images/ruleless.png"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">: </span><span class="identifier-syntax">icon_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"inform:/doc_images/ruleequal.png"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="identifier-syntax">icon_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"inform:/doc_images/rulemore.png"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unknown rule specificity"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::html_icon_with_tooltip</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">icon_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity_law</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity_lawname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::icon_with_tooltip</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">icon_name</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity_law</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity_lawname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP21"></a><b>§21. Calculating the specificities. </b>And this is where the fields describing how the list was ordered are put
|
||||
|
@ -764,13 +765,11 @@ measurement of the final outcome.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule</span><span class="plain-syntax">-></span><span class="element-syntax">placement</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MIDDLE_PLACEMENT:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity_law</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the rule above was listed as 'first' so precedes this "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"one, which wasn't"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"the rule above was listed as 'first' so precedes this one, which wasn't"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LAST_PLACEMENT:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity_law</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the rule above was listed as 'first' so precedes this "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"one, which was listed as 'last'"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"the rule above was listed as 'first' so precedes this one, which was listed as 'last'"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span>
|
||||
<span class="plain-syntax"> </span><a href="21-rb.html#SP16" class="function-link"><span class="function-syntax">Rules::Bookings::list_log</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list_head</span><span class="plain-syntax">);</span>
|
||||
|
@ -782,8 +781,7 @@ measurement of the final outcome.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule</span><span class="plain-syntax">-></span><span class="element-syntax">placement</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LAST_PLACEMENT:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity_law</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the rule below was listed as 'last' so comes after the "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"rule above, which wasn't"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"the rule below was listed as 'last' so comes after the rule above, which wasn't"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span>
|
||||
<span class="plain-syntax"> </span><a href="21-rb.html#SP16" class="function-link"><span class="function-syntax">Rules::Bookings::list_log</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">list_head</span><span class="plain-syntax">);</span>
|
||||
|
@ -807,27 +805,23 @@ measurement of the final outcome.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">FIRST_PLACEMENT:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity_law</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"these rules were both listed as 'first', so they appear in "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"reverse order of listing"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"these rules were both listed as 'first', so they appear in reverse order of listing"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MIDDLE_PLACEMENT:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax"> = </span><a href="21-rb.html#SP10" class="function-link"><span class="function-syntax">Rules::Bookings::compare_specificity_of_br</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">, </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity</span><span class="plain-syntax"> = </span><span class="identifier-syntax">r</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">r</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity_law</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"these rules are equally ranked, so their order is determined by "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"which was defined first (or by explicit 'listed in' sentences)"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"these rules are equally ranked, so their order is determined by which was defined first (or by explicit 'listed in' sentences)"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity_law</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the arrow points from a more specific rule to a more general one, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"as decided by Law"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"the arrow points from a more specific rule to a more general one, as decided by Law"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity_lawname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LAST_PLACEMENT:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity_law</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"these rules were both listed as 'last', so they appear in order "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"of listing"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"these rules were both listed as 'last', so they appear in order of listing"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
|
@ -858,11 +852,11 @@ reason we add plenty of commentary.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="string-syntax">" ---"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::comment</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity_lawname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity_lawname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">-></span><span class="element-syntax">next_rule_specificity</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> -1: </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="string-syntax">" <<< %s <<<"</span><span class="plain-syntax">, </span><span class="identifier-syntax">law</span><span class="plain-syntax">); </span><span class="identifier-syntax">Produce::comment</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">C</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> -1: </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="string-syntax">" <<< %S <<<"</span><span class="plain-syntax">, </span><span class="identifier-syntax">law</span><span class="plain-syntax">); </span><span class="identifier-syntax">Produce::comment</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">C</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="string-syntax">" === equally specific with ==="</span><span class="plain-syntax">); </span><span class="identifier-syntax">Produce::comment</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">C</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="string-syntax">" >>> %s >>>"</span><span class="plain-syntax">, </span><span class="identifier-syntax">law</span><span class="plain-syntax">); </span><span class="identifier-syntax">Produce::comment</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">C</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="string-syntax">" >>> %S >>>"</span><span class="plain-syntax">, </span><span class="identifier-syntax">law</span><span class="plain-syntax">); </span><span class="identifier-syntax">Produce::comment</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">C</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -476,7 +476,7 @@ used in sorting algorithms.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ph2</span><span class="plain-syntax">) </span><span class="identifier-syntax">phrcd2</span><span class="plain-syntax"> = &(</span><span class="identifier-syntax">ph2</span><span class="plain-syntax">-></span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="22-prcd.html#SP8" class="function-link"><span class="function-syntax">Phrases::Context::compare_specificity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd1</span><span class="plain-syntax">, </span><span class="identifier-syntax">phrcd2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">dflag</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Decided by Law %s that "</span><span class="plain-syntax">, </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Decided by Law %S that "</span><span class="plain-syntax">, </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Decided that "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">rv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> -1: </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"(2) is more specific than (1)\n"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -937,12 +937,12 @@ I wonder how useful this really is, but it was much requested at one time.
|
|||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="string-syntax">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;<i>name</i> "</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="string-syntax">"The %W is not listed in the %W rulebook.\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">-></span><span class="element-syntax">primary_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;<i>unlist</i>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
|
||||
|
|
|
@ -1371,7 +1371,7 @@ popular rulebooks, showing their contents in logical order.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::put</span><span class="plain-syntax">(</span><span class="identifier-syntax">start</span><span class="plain-syntax">, </span><span class="identifier-syntax">Characters::tolower</span><span class="plain-syntax">(</span><span class="identifier-syntax">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">start</span><span class="plain-syntax">)));</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">hide_behind_plus</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">indent</span><span class="plain-syntax">+1, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">indent</span><span class="plain-syntax">+1, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::extra_link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">xtra_no</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">n</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTML::begin_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"808080"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">textual_name</span><span class="plain-syntax">);</span>
|
||||
|
@ -1382,7 +1382,7 @@ popular rulebooks, showing their contents in logical order.
|
|||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::extra_div_open</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">xtra_no</span><span class="plain-syntax">, </span><span class="identifier-syntax">indent</span><span class="plain-syntax">+1, </span><span class="identifier-syntax">col</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">indent</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">indent</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_coloured_box</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">col</span><span class="plain-syntax">, </span><span class="identifier-syntax">ROUND_BOX_TOP</span><span class="plain-syntax">+</span><span class="identifier-syntax">ROUND_BOX_BOTTOM</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
|
@ -1390,30 +1390,30 @@ popular rulebooks, showing their contents in logical order.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::first_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<b>%S</b>"</span><span class="plain-syntax">, </span><span class="identifier-syntax">textual_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-rl2.html#SP24_1" class="named-paragraph-link"><span class="named-paragraph">Write the titling line of an index rules box</span><span class="named-paragraph-number">24.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column_right_justified</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">av</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">skeleton</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">skeleton</span><span class="plain-syntax">, </span><span class="string-syntax">"Before %S:"</span><span class="plain-syntax">, </span><span class="identifier-syntax">textual_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">skeleton</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">skeleton</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;<i>b</i> "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">skeleton</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">skeleton</span><span class="plain-syntax">, </span><span class="string-syntax">"Rule for %S:"</span><span class="plain-syntax">, </span><span class="identifier-syntax">textual_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">skeleton</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">skeleton</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;<i>f</i> "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">skeleton</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">skeleton</span><span class="plain-syntax">, </span><span class="string-syntax">"After %S:"</span><span class="plain-syntax">, </span><span class="identifier-syntax">textual_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">skeleton</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">skeleton</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;<i>a</i>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">skeleton</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">textual_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">textual_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;<i>name</i>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
|
@ -1425,7 +1425,7 @@ popular rulebooks, showing their contents in logical order.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) && (</span><a href="21-rl2.html#SP12" class="function-link"><span class="function-syntax">Rulebooks::is_empty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><a href="21-rl2.html#SP15" class="function-link"><span class="function-syntax">Rulebooks::no_rule_context</span></a><span class="plain-syntax">())))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text</span><span class="plain-syntax"> = </span><span class="string-syntax">"There are no rules in this rulebook."</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -234,7 +234,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">stacked_variable_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stvl</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stvl</span><span class="plain-syntax">=</span><span class="identifier-syntax">stvo</span><span class="plain-syntax">-></span><span class="element-syntax">list_of_stvs</span><span class="plain-syntax">; </span><span class="identifier-syntax">stvl</span><span class="plain-syntax">; </span><span class="identifier-syntax">stvl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">stvl</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">stvl</span><span class="plain-syntax">-></span><span class="element-syntax">the_stv</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">stvl</span><span class="plain-syntax">-></span><span class="element-syntax">the_stv</span><span class="plain-syntax">-></span><span class="element-syntax">underlying_var</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-nv.html#SP28" class="function-link"><span class="function-syntax">NonlocalVariables::index_single</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">stvl</span><span class="plain-syntax">-></span><span class="element-syntax">the_stv</span><span class="plain-syntax">-></span><span class="element-syntax">underlying_var</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -363,7 +363,7 @@ This is the routine which prints those details.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="22-ph.html#SP10" class="function-link"><span class="function-syntax">Phrases::write_HTML_representation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">, </span><span class="constant-syntax">PASTE_PHRASE_FORMAT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
|
@ -396,7 +396,7 @@ of course.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<b>In equations:</b> write as "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_W</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_W</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;%+W()"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
|
@ -410,7 +410,7 @@ of course.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<b>Name:</b> "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_W</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_W</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
|
|
|
@ -149,7 +149,7 @@ these are relatively rare in Inform source text.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">phod</span><span class="plain-syntax">-></span><span class="element-syntax">multiple_options_permitted</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<i>and/or</i> "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<i>or</i> "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_W</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">po</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_W</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">po</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">po</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax"> < </span><span class="identifier-syntax">phod</span><span class="plain-syntax">-></span><span class="element-syntax">no_options_permitted</span><span class="plain-syntax">-1) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">","</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -315,7 +315,7 @@ all of them fail to decide, we return 0.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"I - Number of aspects constrained"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"I - Number of aspects constrained"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">rct2</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PL::Actions::Patterns::count_aspects</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">);</span>
|
||||
|
@ -350,7 +350,7 @@ all of them fail to decide, we return 0.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"III - When/while requirement"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III - When/while requirement"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">AL1W</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">AL2W</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">AL1W</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">AL2W</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">AL1W</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -368,7 +368,7 @@ all of them fail to decide, we return 0.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"IV - Action requirement"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"IV - Action requirement"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PL::Actions::Patterns::compare_specificity</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||
|
@ -382,7 +382,7 @@ all of them fail to decide, we return 0.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"V - Scene requirement"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"V - Scene requirement"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">sc1</span><span class="plain-syntax"> != </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">sc2</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">sc1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">sc2</span><span class="plain-syntax"> != </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||
|
|
|
@ -403,7 +403,7 @@ with the following.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">da</span><span class="plain-syntax">-></span><span class="identifier-syntax">unhyphenated_name</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">is</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">is</span><span class="plain-syntax">, </span><span class="string-syntax">"Include %S in the debugging log."</span><span class="plain-syntax">, </span><span class="identifier-syntax">da</span><span class="plain-syntax">-></span><span class="identifier-syntax">unhyphenated_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">is</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">is</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">is</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">is</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -590,7 +590,7 @@ source code: see the DM4 for details.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">nt</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Whereas these are not in force:"</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">use_option</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-></span><span class="element-syntax">source_file_scoped</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-></span><span class="element-syntax">option_used</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-></span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -609,7 +609,7 @@ source code: see the DM4 for details.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">, </span><span class="string-syntax">"style=\"white-space:nowrap\";"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="string-syntax">"Use %+W."</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">);</span>
|
||||
|
@ -643,7 +643,7 @@ source code: see the DM4 for details.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"808080"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Set from "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">category</span><span class="plain-syntax">) {</span>
|
||||
|
@ -667,7 +667,7 @@ source code: see the DM4 for details.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Use %+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-></span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" of at least %d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-></span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-></span><span class="element-syntax">where_used</span><span class="plain-syntax">) </span><span class="identifier-syntax">Index::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">ParseTree::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-></span><span class="element-syntax">where_used</span><span class="plain-syntax">)));</span>
|
||||
|
@ -675,7 +675,7 @@ source code: see the DM4 for details.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="string-syntax">"Use %+W of at least %d."</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">*(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-></span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;<i>Double this</i>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -717,7 +717,7 @@ kinds, including "object", the connection is always blank.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Projects::draws_from_source_file</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::project</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">sf</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">k</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<i>mentioned in rules:</i> "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"; "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">ParseTree::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">at</span><span class="plain-syntax">)));</span>
|
||||
|
|
|
@ -279,7 +279,7 @@ table of Kinds.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tabulating_kinds_index</span><span class="plain-syntax">) </span><a href="13-ki.html#SP3" class="function-link"><span class="function-syntax">Kinds::Index::begin_chart_row</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">details</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="string-syntax">"halftight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="string-syntax">"halftight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> != </span><span class="identifier-syntax">indexing_room</span><span class="plain-syntax">)) </span><span class="identifier-syntax">Index::anchor</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="5-un.html#SP1" class="function-link"><span class="function-syntax">UseNouns::identifier</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nt</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
|
@ -412,7 +412,7 @@ table of Kinds.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) </span><a href="16-in.html#SP15" class="function-link"><span class="function-syntax">World::Inferences::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="5-ins.html#SP13" class="function-link"><span class="function-syntax">Instances::as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="16-in.html#SP15" class="function-link"><span class="function-syntax">World::Inferences::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="13-kak.html#SP1" class="function-link"><span class="function-syntax">Kinds::Knowledge::as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
|
@ -425,7 +425,7 @@ table of Kinds.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IK</span><span class="plain-syntax"> = </span><a href="5-ins.html#SP18" class="function-link"><span class="function-syntax">Instances::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">IK</span><span class="plain-syntax"> != </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">IK</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -459,7 +459,7 @@ table of Kinds.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Data::Objects::index_instances</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Data::Objects::index_instances</span></span>:<br/><a href="5-ipw.html#SP3_7">§3.7</a><br/>Kinds Index - <a href="13-ki.html#SP1_10">§1.10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">depth</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">) </span><span class="identifier-syntax">c</span><span class="plain-syntax">++;</span>
|
||||
|
|
|
@ -2143,7 +2143,7 @@ note that the following uses the raw text of the word.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::char_out</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">lp</span><span class="plain-syntax">-></span><span class="identifier-syntax">lp_tokens</span><span class="plain-syntax">[</span><span class="identifier-syntax">tc</span><span class="plain-syntax">].</span><span class="element-syntax">token_char</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::put</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">lp</span><span class="plain-syntax">-></span><span class="element-syntax">lp_tokens</span><span class="plain-syntax">[</span><span class="identifier-syntax">tc</span><span class="plain-syntax">].</span><span class="element-syntax">token_char</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-lp.html#SP25">§25</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP25_3"></a><b>§25.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index an element token within a literal pattern</span><span class="named-paragraph-number">25.3</span></span><span class="comment-syntax"> =</span>
|
||||
|
|
|
@ -1368,7 +1368,7 @@ usages to the debugging log.
|
|||
<span class="plain-syntax"> && (</span><span class="identifier-syntax">VerbUsages::get_tense_used</span><span class="plain-syntax">(</span><span class="identifier-syntax">vu</span><span class="plain-syntax">) == </span><span class="identifier-syntax">tense</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">vocabulary_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lastword</span><span class="plain-syntax"> = </span><span class="identifier-syntax">WordAssemblages::last_word</span><span class="plain-syntax">(&(</span><span class="identifier-syntax">vu</span><span class="plain-syntax">-></span><span class="identifier-syntax">vu_text</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">f</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<i>%s:</i>&nbsp;"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tensename</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"; "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wide::cmp</span><span class="plain-syntax">(</span><span class="identifier-syntax">Vocabulary::get_exemplar</span><span class="plain-syntax">(</span><span class="identifier-syntax">lastword</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">L</span><span class="string-syntax">"by"</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"B "</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -612,7 +612,7 @@ in practice strews distractingly many orange berries across the page.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Nouns::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">nt</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax">++ == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ind_used</span><span class="plain-syntax">+1, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ind_used</span><span class="plain-syntax">+1, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"808080"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<i>%+W</i>"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -343,7 +343,7 @@ giving only minimal entries about them.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">owner</span><span class="plain-syntax"> != </span><span class="identifier-syntax">from</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">show_head</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"808080"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Included "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Extensions::is_standard</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"automatically by Inform"</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -58,56 +58,26 @@
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Shared Modules</a></li><li><a href="index.html">html</a></li><li><a href="index.html#1">Chapter 1: Starting Up</a></li><li><b>HTML Module</b></li></ul></div>
|
||||
<p class="purpose">Setting up the use of this module.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. </b>This section simoly sets up the module in ways expected by <a href="../../../inweb/docs/foundation-module/index.html" class="internal">foundation</a>, and
|
||||
contains no code of interest. The following constant exists only in tools
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. </b>This section simoly sets up the module in ways expected by <a href="../../../inweb/docs/foundation-module/index.html" class="internal">foundation</a>,
|
||||
and contains no code of interest. The following constant exists only in tools
|
||||
which use this module:
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">HTML_MODULE</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>Like all modules, this one must define a <span class="extract"><span class="extract-syntax">start</span></span> and <span class="extract"><span class="extract-syntax">end</span></span> function:
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>Like all modules, this one must define a <span class="extract"><span class="extract-syntax">start</span></span> and <span class="extract"><span class="extract-syntax">end</span></span> function; the
|
||||
following have been thoroughly debugged and only rarely give trouble —
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTMLModule::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-hm.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Register this module's memory allocation reasons</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-hm.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Register this module's stream writers</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-hm.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Register this module's debugging log aspects</span><span class="named-paragraph-number">2.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-hm.html#SP2_4" class="named-paragraph-link"><span class="named-paragraph">Register this module's debugging log writers</span><span class="named-paragraph-number">2.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTMLModule::end</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2_1"></a><b>§2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Register this module's memory allocation reasons</span><span class="named-paragraph-number">2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> ;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-hm.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2"></a><b>§2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Register this module's stream writers</span><span class="named-paragraph-number">2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> ;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-hm.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_3"></a><b>§2.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Register this module's debugging log aspects</span><span class="named-paragraph-number">2.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> ;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-hm.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_4"></a><b>§2.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Register this module's debugging log writers</span><span class="named-paragraph-number">2.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> ;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-hm.html#SP2">§2</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprevoff">❮</li><li class="progresscurrentchapter">1</li><li class="progresscurrent">hm</li><li class="progresschapter"><a href="2-hf.html">2</a></li><li class="progressnext"><a href="2-hf.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="P-wtmd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresscurrent">hm</li><li class="progresschapter"><a href="2-sl.html">2</a></li><li class="progressnext"><a href="2-sl.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>HTML Documentation</title>
|
||||
<title>Documentation Renderer</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
|
@ -76,23 +76,18 @@ function togglePopup(material_id) {
|
|||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'HTML Documentation' generated by Inweb-->
|
||||
<!--Weave of 'Documentation Renderer' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Shared Modules</a></li><li><a href="index.html">html</a></li><li><a href="index.html#2">Chapter 2: HTML</a></li><li><b>HTML Documentation</b></li></ul></div>
|
||||
<p class="purpose">To translate a passage of source text into HTML-format documentation, for use in the automatically generated documentation pages on each installed extension.</p>
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Shared Modules</a></li><li><a href="index.html">html</a></li><li><a href="index.html#2">Chapter 2: Intranet</a></li><li><b>Documentation Renderer</b></li></ul></div>
|
||||
<p class="purpose">To render a passage of extension documentation as HTML.</p>
|
||||
|
||||
<ul class="toc"><li><a href="2-hd.html#SP2">§2. Links and leafnames</a></li><li><a href="2-hd.html#SP7">§7. The table of contents</a></li><li><a href="2-hd.html#SP9">§9. Setting the body text</a></li><li><a href="2-hd.html#SP9_1">§9.1. Typesetting the standard matter</a></li><li><a href="2-hd.html#SP9_6">§9.6. Typesetting the headings</a></li><li><a href="2-hd.html#SP9_4_2_1">§9.4.2.1. Typesetting I7 tables in displayed source text</a></li><li><a href="2-hd.html#SP9_8">§9.8. Typesetting the body of an example</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="2-dr.html#SP1">§1. Disclaimer</a></li><li><a href="2-dr.html#SP2">§2. Links and leafnames</a></li><li><a href="2-dr.html#SP7">§7. The table of contents</a></li><li><a href="2-dr.html#SP9">§9. Setting the body text</a></li><li><a href="2-dr.html#SP9_1">§9.1. Typesetting the standard matter</a></li><li><a href="2-dr.html#SP9_6">§9.6. Typesetting the headings</a></li><li><a href="2-dr.html#SP9_4_2_1">§9.4.2.1. Typesetting I7 tables in displayed source text</a></li><li><a href="2-dr.html#SP9_8">§9.8. Typesetting the body of an example</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. </b>This is a port of a simplified version of the Inform documentation tool
|
||||
<span class="extract"><span class="extract-syntax">indoc</span></span>, and like all Perl scripts ported to C, it bears a few scars.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Documentation is extracted from extensions by lexing them (ignoring all
|
||||
of the actual source text and picking up only after the divider line)
|
||||
and then running the code below on the word range for the lexed
|
||||
documentation. Our task is therefore to print out this documentation
|
||||
in an HTML format which matches the look and feel of pages produced
|
||||
by <span class="extract"><span class="extract-syntax">indoc</span></span> for the manuals.
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. Disclaimer. </b>The following code originated as a port of a simplified version of an early
|
||||
form of the Inform documentation tool <a href="../indoc/index.html" class="internal">indoc</a>: in general, that will do a
|
||||
better all-round job, but this cut-down version is adequate for what we use
|
||||
it for, which is to make extension documentation pages. Those use a much
|
||||
simplified range of syntax compared to the full gamut known to <a href="../indoc/index.html" class="internal">indoc</a>.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. Links and leafnames. </b>Matters are complicated because an extension typically has not only a
|
||||
|
@ -125,7 +120,7 @@ by a number. I believe I can live with the guilt.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTML::Documentation::href_of_example</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">HTML::Documentation::href_of_example</span></span>:<br/><a href="2-hd.html#SP7_2">§7.2</a>, <a href="2-hd.html#SP9_7_2">§9.7.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">DocumentationRenderer::href_of_example</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">DocumentationRenderer::href_of_example</span></span>:<br/><a href="2-dr.html#SP7_2">§7.2</a>, <a href="2-dr.html#SP9_7_2">§9.7.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">to_example_variant</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">to_example_anchor</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0, </span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="identifier-syntax">L</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Str::includes_wide_string_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"-eg"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">)) &&</span>
|
||||
|
@ -152,14 +147,14 @@ to see if it might be a heading. For instance, a paragraph consisting of
|
|||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><extension-documentation-heading></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">chapter</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">:</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 1</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">section</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">:</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 2</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">chapter</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">:</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 1</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">section</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">:</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 2</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">HTML::Documentation::extension_documentation_heading</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">HTML::Documentation::extension_documentation_heading</span></span>:<br/><a href="2-hd.html#SP7">§7</a>, <a href="2-hd.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">level</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">HW</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">DocumentationRenderer::extension_documentation_heading</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">DocumentationRenderer::extension_documentation_heading</span></span>:<br/><a href="2-dr.html#SP7">§7</a>, <a href="2-dr.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">level</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">HW</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><extension-documentation-heading></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::length</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">) > </span><span class="constant-syntax">10</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="comment-syntax"> not enough space: this runs into the end-of-file padding</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">level</span><span class="plain-syntax"> = </span><span class="function-syntax"><<r>></span><span class="plain-syntax">;</span>
|
||||
|
@ -185,29 +180,35 @@ more exacting specification: a paragraph in the shape
|
|||
an asterisk count of 3, and the rubric being "A Tale of the Texas Oilmen".
|
||||
</p>
|
||||
|
||||
<p class="commentary">Note the unusual use of the Preform escape character <span class="extract"><span class="extract-syntax">\</span></span> below: this is
|
||||
because <span class="extract"><span class="extract-syntax">***</span></span> is a reserved token in Preform, whereas we want the literal
|
||||
text of three asterisks in a row.
|
||||
</p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><extension-example-header></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">example</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">:</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><row-of-asterisks></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">-</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> R[1]</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">example</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">:</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">-</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 0</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">example</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">:</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><row-of-asterisks></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">-</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> R[1]</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">example</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">:</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">-</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 0</span>
|
||||
|
||||
<span class="Preform-function-syntax"><row-of-asterisks></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">*</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 1</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">*</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 1</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">**</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 2</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">\***</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 3</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">****</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 4</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">\***</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 3</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">****</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> 4</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">HTML::Documentation::extension_documentation_example</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">HTML::Documentation::extension_documentation_example</span></span>:<br/><a href="2-hd.html#SP7">§7</a>, <a href="2-hd.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">DocumentationRenderer::extension_documentation_example</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">DocumentationRenderer::extension_documentation_example</span></span>:<br/><a href="2-dr.html#SP7">§7</a>, <a href="2-dr.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">asterisks</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">egn</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">egr</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::length</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">) > </span><span class="constant-syntax">10</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="comment-syntax"> not enough space: this runs into the end-of-file padding</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::length</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">) > </span><span class="constant-syntax">10</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="comment-syntax"> not enough space</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><extension-example-header></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">NW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><extension-example-header></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">RW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><extension-example-header></span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">r2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">RW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">r2</span><span class="plain-syntax"> <= </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) && ((</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">r2</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PARBREAK_V</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">r2</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">r2</span><span class="plain-syntax"> <= </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">r2</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PARBREAK_V</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="identifier-syntax">r2</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">r2</span><span class="plain-syntax"> >= </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">r2</span><span class="plain-syntax">--;</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax"> a successful match has now been made</span>
|
||||
|
@ -217,35 +218,36 @@ an asterisk count of 3, and the rubric being "A Tale of the Texas Oilmen".
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7"></a><b>§7. The table of contents. </b>The user sees chapters as A subheadings, numbered upwards from 1, and
|
||||
sees sections as B subheadings, numbered from 1 within each chapter.
|
||||
It is legal to have only A subheadings; only B subheadings; or a mixture
|
||||
of the two.
|
||||
<p class="commentary firstcommentary"><a id="SP7"></a><b>§7. The table of contents. </b>The user sees chapters as A subheadings, numbered upwards from 1, and sees
|
||||
sections as B subheadings, numbered from 1 within each chapter. It is legal to
|
||||
have only A subheadings; only B subheadings; or a mixture of the two.
|
||||
</p>
|
||||
|
||||
<p class="commentary">If a scan can find any headings at all then we will wish to typeset
|
||||
a table of contents up front. The following routine looks for what material
|
||||
might go into a TOC, and sets one if it finds anything: otherwise, it sets
|
||||
nothing and has no effect. Because of the compulsory paragraph break
|
||||
following the divider line in the extension, we can safely assume that
|
||||
every headng will follow a paragraph break word, even one right at the
|
||||
top of the extension's documentation.
|
||||
<p class="commentary">If a scan can find any headings at all then we will wish to typeset a table of
|
||||
contents up front. The following routine looks for what material might go into
|
||||
a TOC, and sets one if it finds anything: otherwise, it sets nothing and has
|
||||
no effect. Because of the compulsory paragraph break following the divider
|
||||
line in the extension, we can safely assume that every headng will follow a
|
||||
paragraph break word, even one right at the top of the extension's
|
||||
documentation.
|
||||
</p>
|
||||
|
||||
<p class="commentary">(Examples are included in the table of contents only if they occur after
|
||||
the first heading, which I think is reasonable enough: there can be at most
|
||||
26 per extension, enabling them to be lettered as Example A to Example Z.)
|
||||
<p class="commentary">(Examples are included in the table of contents only if they occur after the
|
||||
first heading, which I think is reasonable enough: there can be at most 26 per
|
||||
extension, enabling them to be lettered as Example A to Example Z.)
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTML::Documentation::set_table_of_contents</span><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">DocumentationRenderer::table_of_contents</span><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">heading_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">chapter_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">section_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">example_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_WORDING</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">edhl</span><span class="plain-syntax">, </span><span class="identifier-syntax">asterisks</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">NW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">RUBW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PARBREAK_V</span><span class="plain-syntax">) { </span><span class="comment-syntax"> the lexer records this to mean a paragraph break</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PARBREAK_V</span><span class="plain-syntax">) </span><span class="identifier-syntax">i</span><span class="plain-syntax">++; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">></span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-hd.html#SP4" class="function-link"><span class="function-syntax">HTML::Documentation::extension_documentation_heading</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::from</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">), &</span><span class="identifier-syntax">edhl</span><span class="plain-syntax">, &</span><span class="identifier-syntax">NW</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PARBREAK_V</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PARBREAK_V</span><span class="plain-syntax">) </span><span class="identifier-syntax">i</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">></span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-dr.html#SP4" class="function-link"><span class="function-syntax">DocumentationRenderer::extension_documentation_heading</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Wordings::from</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">), &</span><span class="identifier-syntax">edhl</span><span class="plain-syntax">, &</span><span class="identifier-syntax">NW</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">heading_count</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">heading_count</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
|
@ -254,14 +256,14 @@ the first heading, which I think is reasonable enough: there can be at most
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">edhl</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">chapter_count</span><span class="plain-syntax">++; </span><span class="identifier-syntax">section_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">chapter_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">); </span><span class="comment-syntax"> skip a line between chapters in TOC</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">chapter_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">); </span><span class="comment-syntax"> skip a line between chapters</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">edhl</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="identifier-syntax">section_count</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Typeset the table of contents entry for this heading</span><span class="named-paragraph-number">7.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Typeset the table of contents entry for this heading</span><span class="named-paragraph-number">7.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">NW</span><span class="plain-syntax">); </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">heading_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">example_count</span><span class="plain-syntax"> < </span><span class="constant-syntax">26</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="2-hd.html#SP6" class="function-link"><span class="function-syntax">HTML::Documentation::extension_documentation_example</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> (</span><a href="2-dr.html#SP6" class="function-link"><span class="function-syntax">DocumentationRenderer::extension_documentation_example</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Wordings::from</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">), &</span><span class="identifier-syntax">asterisks</span><span class="plain-syntax">, &</span><span class="identifier-syntax">NW</span><span class="plain-syntax">, &</span><span class="identifier-syntax">RUBW</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (++</span><span class="identifier-syntax">example_count</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
|
||||
|
@ -270,7 +272,7 @@ the first heading, which I think is reasonable enough: there can be at most
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"b"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP7_2" class="named-paragraph-link"><span class="named-paragraph">Typeset the table of contents entry for this example</span><span class="named-paragraph-number">7.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP7_2" class="named-paragraph-link"><span class="named-paragraph">Typeset the table of contents entry for this example</span><span class="named-paragraph-number">7.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">RUBW</span><span class="plain-syntax">); </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -295,7 +297,8 @@ These are the destinations of links from heading lines in the TOC.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">edhl</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"b"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"style=\"text-decoration: none\" href=#docsec%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">heading_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"style=\"text-decoration: none\" href=#docsec%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">heading_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"000000"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Chapter %d: "</span><span class="plain-syntax">, </span><span class="identifier-syntax">chapter_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
|
@ -317,10 +320,10 @@ These are the destinations of links from heading lines in the TOC.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unable to set this heading level in extension TOC"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hd.html#SP9" class="function-link"><span class="function-syntax">HTML::Documentation::set_body_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NW</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">EDOC_FRAGMENT_ONLY</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-dr.html#SP9" class="function-link"><span class="function-syntax">DocumentationRenderer::set_body_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NW</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">EDOC_FRAGMENT_ONLY</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP7">§7</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7_2"></a><b>§7.2. </b>The TOC entries for examples are similar. Here the link is to the variant
|
||||
page in the current family which has the given example open, and moreover,
|
||||
to the anchor in that page corresponding to the top of the example: thus as
|
||||
|
@ -334,17 +337,17 @@ far as the user is concerned it opens the example and goes there.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;&nbsp;&nbsp;"</span><span class="plain-syntax">); </span><span class="comment-syntax"> always indent TOC entries for examples</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">, </span><span class="string-syntax">"style=\"text-decoration: none\" href=\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hd.html#SP2" class="function-link"><span class="function-syntax">HTML::Documentation::href_of_example</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">, </span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">, </span><span class="identifier-syntax">example_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">example_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-dr.html#SP2" class="function-link"><span class="function-syntax">DocumentationRenderer::href_of_example</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">, </span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">, </span><span class="identifier-syntax">example_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">example_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">, </span><span class="string-syntax">"\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">link</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"000000"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">(</span><span class="character-syntax">'A'</span><span class="plain-syntax">+</span><span class="identifier-syntax">example_count</span><span class="plain-syntax">-1); /* </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">letter</span><span class="plain-syntax"> </span><span class="identifier-syntax">A</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">Z</span><span class="plain-syntax"> */</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hd.html#SP9" class="function-link"><span class="function-syntax">HTML::Documentation::set_body_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NW</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">EDOC_FRAGMENT_ONLY</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-dr.html#SP9" class="function-link"><span class="function-syntax">DocumentationRenderer::set_body_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NW</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">EDOC_FRAGMENT_ONLY</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP7">§7</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8"></a><b>§8. </b></p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
|
@ -358,7 +361,7 @@ far as the user is concerned it opens the example and goes there.
|
|||
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">EDOC_FRAGMENT_ONLY</span><span class="Preform-plain-syntax"> -2 </span><span class="Preform-comment-syntax"> must differ from this and from all example variant numbers</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">HTML::Documentation::set_body_text</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">HTML::Documentation::set_body_text</span></span>:<br/><a href="2-hd.html#SP7_1">§7.1</a>, <a href="2-hd.html#SP7_2">§7.2</a>, <a href="2-hd.html#SP9_6">§9.6</a>, <a href="2-hd.html#SP9_7">§9.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">DocumentationRenderer::set_body_text</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">DocumentationRenderer::set_body_text</span></span>:<br/><a href="2-dr.html#SP7_1">§7.1</a>, <a href="2-dr.html#SP7_2">§7.2</a>, <a href="2-dr.html#SP9_6">§9.6</a>, <a href="2-dr.html#SP9_7">§9.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">example_which_is_open</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">heading_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">chapter_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">section_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">example_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">mid_example</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">skipping_text_of_an_example</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">,</span>
|
||||
|
@ -369,11 +372,11 @@ far as the user is concerned it opens the example and goes there.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">edhl</span><span class="plain-syntax">, </span><span class="identifier-syntax">asterisks</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">NW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">, </span><span class="identifier-syntax">RUBW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PARBREAK_V</span><span class="plain-syntax">) { </span><span class="comment-syntax"> the lexer records this to mean a paragraph break</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_1" class="named-paragraph-link"><span class="named-paragraph">Handle a paragraph break</span><span class="named-paragraph-number">9.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_1" class="named-paragraph-link"><span class="named-paragraph">Handle a paragraph break</span><span class="named-paragraph-number">9.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PARBREAK_V</span><span class="plain-syntax">) </span><span class="identifier-syntax">i</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">></span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) </span><span class="reserved-syntax">break</span><span class="plain-syntax">; </span><span class="comment-syntax"> treat multiple paragraph breaks as one</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_2" class="named-paragraph-link"><span class="named-paragraph">Determine indentation of new paragraph</span><span class="named-paragraph-number">9.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-hd.html#SP4" class="function-link"><span class="function-syntax">HTML::Documentation::extension_documentation_heading</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::from</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">), &</span><span class="identifier-syntax">edhl</span><span class="plain-syntax">, &</span><span class="identifier-syntax">NW</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_2" class="named-paragraph-link"><span class="named-paragraph">Determine indentation of new paragraph</span><span class="named-paragraph-number">9.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-dr.html#SP4" class="function-link"><span class="function-syntax">DocumentationRenderer::extension_documentation_heading</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::from</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">), &</span><span class="identifier-syntax">edhl</span><span class="plain-syntax">, &</span><span class="identifier-syntax">NW</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">heading_count</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">edhl</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">chapter_count</span><span class="plain-syntax">++; </span><span class="identifier-syntax">section_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
@ -383,18 +386,18 @@ far as the user is concerned it opens the example and goes there.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">edhl</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="identifier-syntax">section_count</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_6" class="named-paragraph-link"><span class="named-paragraph">Typeset the heading of this chapter or section</span><span class="named-paragraph-number">9.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_6" class="named-paragraph-link"><span class="named-paragraph">Typeset the heading of this chapter or section</span><span class="named-paragraph-number">9.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">NW</span><span class="plain-syntax">); </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">example_count</span><span class="plain-syntax"> < </span><span class="constant-syntax">26</span><span class="plain-syntax">) && (</span><a href="2-hd.html#SP6" class="function-link"><span class="function-syntax">HTML::Documentation::extension_documentation_example</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">example_count</span><span class="plain-syntax"> < </span><span class="constant-syntax">26</span><span class="plain-syntax">) && (</span><a href="2-dr.html#SP6" class="function-link"><span class="function-syntax">DocumentationRenderer::extension_documentation_example</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Wordings::from</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">), &</span><span class="identifier-syntax">asterisks</span><span class="plain-syntax">, &</span><span class="identifier-syntax">NW</span><span class="plain-syntax">, &</span><span class="identifier-syntax">RUBW</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">skipping_text_of_an_example</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mid_example</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_9" class="named-paragraph-link"><span class="named-paragraph">Close the previous example's text</span><span class="named-paragraph-number">9.9</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mid_example</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_9" class="named-paragraph-link"><span class="named-paragraph">Close the previous example's text</span><span class="named-paragraph-number">9.9</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">mid_example</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">example_count</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_7" class="named-paragraph-link"><span class="named-paragraph">Typeset the heading of this example</span><span class="named-paragraph-number">9.7</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_7" class="named-paragraph-link"><span class="named-paragraph">Typeset the heading of this example</span><span class="named-paragraph-number">9.7</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">example_count</span><span class="plain-syntax"> == </span><span class="identifier-syntax">example_which_is_open</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_8" class="named-paragraph-link"><span class="named-paragraph">Open the new example's text</span><span class="named-paragraph-number">9.8</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_8" class="named-paragraph-link"><span class="named-paragraph">Open the new example's text</span><span class="named-paragraph-number">9.8</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">mid_example</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">skipping_text_of_an_example</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">RUBW</span><span class="plain-syntax">); </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
|
@ -402,12 +405,12 @@ far as the user is concerned it opens the example and goes there.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">skipping_text_of_an_example</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_4" class="named-paragraph-link"><span class="named-paragraph">Handle a line or column break, if there is one</span><span class="named-paragraph-number">9.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_5" class="named-paragraph-link"><span class="named-paragraph">Transcribe an ordinary word of the documentation</span><span class="named-paragraph-number">9.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_4" class="named-paragraph-link"><span class="named-paragraph">Handle a line or column break, if there is one</span><span class="named-paragraph-number">9.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_5" class="named-paragraph-link"><span class="named-paragraph">Transcribe an ordinary word of the documentation</span><span class="named-paragraph-number">9.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">close_I6_position</span><span class="plain-syntax"> == </span><span class="identifier-syntax">i</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" -)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mid_example</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_9" class="named-paragraph-link"><span class="named-paragraph">Close the previous example's text</span><span class="named-paragraph-number">9.9</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">example_which_is_open</span><span class="plain-syntax"> != </span><span class="constant-syntax">EDOC_FRAGMENT_ONLY</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_1" class="named-paragraph-link"><span class="named-paragraph">Handle a paragraph break</span><span class="named-paragraph-number">9.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mid_example</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_9" class="named-paragraph-link"><span class="named-paragraph">Close the previous example's text</span><span class="named-paragraph-number">9.9</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">example_which_is_open</span><span class="plain-syntax"> != </span><span class="constant-syntax">EDOC_FRAGMENT_ONLY</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_1" class="named-paragraph-link"><span class="named-paragraph">Handle a paragraph break</span><span class="named-paragraph-number">9.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">example_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -423,7 +426,7 @@ break, and a chance to restore our tired variables.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mid_displayed_source_text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mid_I7_table</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_1_1" class="named-paragraph-link"><span class="named-paragraph">End I7 table in extension documentation</span><span class="named-paragraph-number">9.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mid_I7_table</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_1_1" class="named-paragraph-link"><span class="named-paragraph">End I7 table in extension documentation</span><span class="named-paragraph-number">9.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"blockquote"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
|
@ -432,7 +435,7 @@ break, and a chance to restore our tired variables.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">mid_displayed_source_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="identifier-syntax">mid_I7_table</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9">§9</a> (twice).</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9">§9</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_2"></a><b>§9.2. </b>The indentation setting is made here because a tab anywhere else does
|
||||
not mean a paragraph has been indented. Here <span class="extract"><span class="extract-syntax">i</span></span> is at the number of the
|
||||
first word after the paragraph break; the break character corresponding
|
||||
|
@ -447,7 +450,7 @@ paragraph.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">indentation</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::break_before</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">'\t'</span><span class="plain-syntax">) </span><span class="identifier-syntax">indentation</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9">§9</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_3"></a><b>§9.3. </b>Positions for paste icons in extension documentation are marked with
|
||||
asterisk and colon:
|
||||
</p>
|
||||
|
@ -469,21 +472,21 @@ can move on to the subsequent word.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::indentation_level</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">indentation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lexer::indentation_level</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">indentation</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_4_2" class="named-paragraph-link"><span class="named-paragraph">Handle the start of a line which is indented</span><span class="named-paragraph-number">9.4.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">indentation</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_4_2" class="named-paragraph-link"><span class="named-paragraph">Handle the start of a line which is indented</span><span class="named-paragraph-number">9.4.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><extension-documentation-paste-marker></span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::from</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><extension-documentation-paste-marker></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_4_1" class="named-paragraph-link"><span class="named-paragraph">Incorporate an icon linking to a Javascript function to paste the text which follows</span><span class="named-paragraph-number">9.4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_4_1" class="named-paragraph-link"><span class="named-paragraph">Incorporate an icon linking to a Javascript function to paste the text which follows</span><span class="named-paragraph-number">9.4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">++; </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">indentation</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">mid_I7_table</span><span class="plain-syntax">) && ((</span><span class="identifier-syntax">Lexer::break_before</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">'\t'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Lexer::indentation_level</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="constant-syntax">1</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">row_of_table_is_empty</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_4_3" class="named-paragraph-link"><span class="named-paragraph">End table cell for I7 table in extension documentation</span><span class="named-paragraph-number">9.4.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_4_4" class="named-paragraph-link"><span class="named-paragraph">Begin table cell for I7 table in extension documentation</span><span class="named-paragraph-number">9.4.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_4_3" class="named-paragraph-link"><span class="named-paragraph">End table cell for I7 table in extension documentation</span><span class="named-paragraph-number">9.4.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_4_4" class="named-paragraph-link"><span class="named-paragraph">Begin table cell for I7 table in extension documentation</span><span class="named-paragraph-number">9.4.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">row_of_table_is_empty</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9">§9</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_5"></a><b>§9.5. </b>See Javascript Pastes for further explanation of the general method here.
|
||||
</p>
|
||||
|
||||
|
@ -497,10 +500,10 @@ can move on to the subsequent word.
|
|||
<span class="plain-syntax"> || (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[0] == </span><span class="character-syntax">'('</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[0] == </span><span class="character-syntax">'{'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[0] == </span><span class="character-syntax">'}'</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> && (</span><span class="identifier-syntax">compare_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">-1, </span><span class="identifier-syntax">OPENBRACKET_V</span><span class="plain-syntax">)==</span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" "</span><span class="plain-syntax">); </span><span class="comment-syntax"> restore normal spacing around punctuation</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">]; </span><span class="identifier-syntax">j</span><span class="plain-syntax">++) </span><a href="2-hf.html#SP8" class="function-link"><span class="function-syntax">HTMLFiles::char_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">]); </span><span class="comment-syntax"> set the actual word</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">]; </span><span class="identifier-syntax">j</span><span class="plain-syntax">++) </span><span class="identifier-syntax">HTML::put</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">]); </span><span class="comment-syntax"> set the actual word</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="identifier-syntax">OPENI6_V</span><span class="plain-syntax">) </span><span class="identifier-syntax">close_I6_position</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">+1; </span><span class="comment-syntax"> ensure I6 literals are closed</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9">§9</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_4_1"></a><b>§9.4.1. </b>A paste causes the same material to be set twice: once in the argument to
|
||||
the Javascript paste function (which is passed to the application when the
|
||||
user clicks on the paste icon, and thus ends up in the Source panel), and
|
||||
|
@ -522,9 +525,9 @@ but does not advance <span class="extract"><span class="extract-syntax">i</span>
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">j</span><span class="plain-syntax"><</span><span class="identifier-syntax">y</span><span class="plain-syntax">) && ((</span><span class="identifier-syntax">Lexer::break_before</span><span class="plain-syntax">(</span><span class="identifier-syntax">j</span><span class="plain-syntax">) == </span><span class="character-syntax">'\t'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Lexer::indentation_level</span><span class="plain-syntax">(</span><span class="identifier-syntax">j</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">))) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">y</span><span class="plain-syntax"> = </span><span class="identifier-syntax">possible_end</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="2-jp.html#SP4" class="function-link"><span class="function-syntax">HTML::Javascript::paste_W</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">x</span><span class="plain-syntax">, </span><span class="identifier-syntax">y</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pb.html#SP3" class="function-link"><span class="function-syntax">PasteButtons::paste_W</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">x</span><span class="plain-syntax">, </span><span class="identifier-syntax">y</span><span class="plain-syntax">));</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9_4">§9.4</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9_4">§9.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_4_2"></a><b>§9.4.2. </b>The first step of indentation is handled using the <span class="extract"><span class="extract-syntax"><blockquote></span></span> tag;
|
||||
within that, further tab stops are simulated by printing a row of four
|
||||
non-breaking spaces for each indentation level above 1. A paragraph
|
||||
|
@ -543,9 +546,9 @@ need to achieve with an HTML <span class="extract"><span class="extract-syntax">
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">start_table_next_line</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">start_table_next_line</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">mid_I7_table</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_4_2_1" class="named-paragraph-link"><span class="named-paragraph">Begin I7 table in extension documentation</span><span class="named-paragraph-number">9.4.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_4_2_1" class="named-paragraph-link"><span class="named-paragraph">Begin I7 table in extension documentation</span><span class="named-paragraph-number">9.4.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mid_I7_table</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_4_2_2" class="named-paragraph-link"><span class="named-paragraph">Begin new row of I7 table in extension documentation</span><span class="named-paragraph-number">9.4.2.2</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mid_I7_table</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_4_2_2" class="named-paragraph-link"><span class="named-paragraph">Begin new row of I7 table in extension documentation</span><span class="named-paragraph-number">9.4.2.2</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mid_I7_table</span><span class="plain-syntax">) </span><span class="identifier-syntax">row_of_table_is_empty</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
@ -559,7 +562,7 @@ need to achieve with an HTML <span class="extract"><span class="extract-syntax">
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">indentation</span><span class="plain-syntax">--;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">j</span><span class="plain-syntax"><</span><span class="identifier-syntax">indentation</span><span class="plain-syntax">; </span><span class="identifier-syntax">j</span><span class="plain-syntax">++) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;&nbsp;&nbsp;&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9_4">§9.4</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9_4">§9.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_6"></a><b>§9.6. Typesetting the headings. </b>That is thankfully all for the tormented logic of all those changes of state:
|
||||
from here to the rest of the section, all we do is to generate pretty HTML,
|
||||
and without altering any variables or causing any side-effects at all.
|
||||
|
@ -586,11 +589,11 @@ anchor <span class="extract"><span class="extract-syntax">#docsecN</span></span>
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%d: "</span><span class="plain-syntax">, </span><span class="identifier-syntax">section_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hd.html#SP9" class="function-link"><span class="function-syntax">HTML::Documentation::set_body_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NW</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">EDOC_FRAGMENT_ONLY</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-dr.html#SP9" class="function-link"><span class="function-syntax">DocumentationRenderer::set_body_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NW</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">EDOC_FRAGMENT_ONLY</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"b"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9">§9</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_7"></a><b>§9.7. </b>An example is set with a two-table header, and followed optionally by a
|
||||
table of its inset copy, shaded to distinguish it from the rest of the
|
||||
page. The heading is constructed with a main table of one row of two cells,
|
||||
|
@ -610,12 +613,12 @@ in the next section.
|
|||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax"> Left hand cell: the oval icon</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"td"</span><span class="plain-syntax">, </span><span class="string-syntax">"halign=\"left\" valign=\"top\" cellpadding=0 cellspacing=0 width=38px"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_7_1" class="named-paragraph-link"><span class="named-paragraph">Typeset the lettered oval example icon</span><span class="named-paragraph-number">9.7.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_7_1" class="named-paragraph-link"><span class="named-paragraph">Typeset the lettered oval example icon</span><span class="named-paragraph-number">9.7.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"td"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax"> Right hand cell: the asterisks and title, with rubric underneath</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"td"</span><span class="plain-syntax">, </span><span class="string-syntax">"cellpadding=0 cellspacing=0 halign=\"left\" valign=\"top\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_7_2" class="named-paragraph-link"><span class="named-paragraph">Incorporate link to the example opened up</span><span class="named-paragraph-number">9.7.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_7_2" class="named-paragraph-link"><span class="named-paragraph">Incorporate link to the example opened up</span><span class="named-paragraph-number">9.7.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">asterisks</span><span class="plain-syntax">-- > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=\"0\" src='inform:/doc_images/asterisk.png'"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"b"</span><span class="plain-syntax">);</span>
|
||||
|
@ -623,12 +626,12 @@ in the next section.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;Example&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"000000"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hd.html#SP9" class="function-link"><span class="function-syntax">HTML::Documentation::set_body_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NW</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">EDOC_FRAGMENT_ONLY</span><span class="plain-syntax">, </span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-dr.html#SP9" class="function-link"><span class="function-syntax">DocumentationRenderer::set_body_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NW</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">EDOC_FRAGMENT_ONLY</span><span class="plain-syntax">, </span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"b"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">); </span><span class="comment-syntax"> end the textual link</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hd.html#SP9" class="function-link"><span class="function-syntax">HTML::Documentation::set_body_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">RUBW</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">EDOC_FRAGMENT_ONLY</span><span class="plain-syntax">, </span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-dr.html#SP9" class="function-link"><span class="function-syntax">DocumentationRenderer::set_body_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">RUBW</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">EDOC_FRAGMENT_ONLY</span><span class="plain-syntax">, </span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"td"</span><span class="plain-syntax">);</span>
|
||||
|
@ -636,7 +639,7 @@ in the next section.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9">§9</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_7_1"></a><b>§9.7.1. </b>The little oval icon with its superimposed boldface letter is much harder to
|
||||
get right on all browsers than it looks, and the following is the result of
|
||||
some pretty grim experimentation. Basically, we make a tight, borderless,
|
||||
|
@ -653,7 +656,7 @@ had its infamous PNG transparency bug.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_plain_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"tr"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"oval\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"td"</span><span class="plain-syntax">, </span><span class="string-syntax">"width=38px height=30px align=\"left\" valign=\"center\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-hd.html#SP9_7_2" class="named-paragraph-link"><span class="named-paragraph">Incorporate link to the example opened up</span><span class="named-paragraph-number">9.7.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-dr.html#SP9_7_2" class="named-paragraph-link"><span class="named-paragraph">Incorporate link to the example opened up</span><span class="named-paragraph-number">9.7.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"class=\"paragraph Body\" style=\"line-height: 1px; margin-bottom: 0px; "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"margin-top: 0px; padding-bottom: 0pt; padding-top: 0px; text-align: center; "</span>
|
||||
|
@ -667,7 +670,7 @@ had its infamous PNG transparency bug.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"tr"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9_7">§9.7</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9_7">§9.7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_7_2"></a><b>§9.7.2. </b>Clicking on the example banner opens it up, if it's currently closed, or
|
||||
closes it up, if it's currently open.
|
||||
</p>
|
||||
|
@ -679,14 +682,14 @@ closes it up, if it's currently open.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="string-syntax">"href=\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">example_count</span><span class="plain-syntax"> == </span><span class="identifier-syntax">example_which_is_open</span><span class="plain-syntax">) </span><span class="comment-syntax"> this example currently open</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hd.html#SP2" class="function-link"><span class="function-syntax">HTML::Documentation::href_of_example</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">, </span><span class="constant-syntax">EDOC_ALL_EXAMPLES_CLOSED</span><span class="plain-syntax">, </span><span class="identifier-syntax">example_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-dr.html#SP2" class="function-link"><span class="function-syntax">DocumentationRenderer::href_of_example</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">, </span><span class="constant-syntax">EDOC_ALL_EXAMPLES_CLOSED</span><span class="plain-syntax">, </span><span class="identifier-syntax">example_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="comment-syntax"> this example not yet open</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hd.html#SP2" class="function-link"><span class="function-syntax">HTML::Documentation::href_of_example</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">, </span><span class="identifier-syntax">example_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">example_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-dr.html#SP2" class="function-link"><span class="function-syntax">DocumentationRenderer::href_of_example</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">base_leafname</span><span class="plain-syntax">, </span><span class="identifier-syntax">example_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">example_count</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="string-syntax">"\" style=\"text-decoration: none\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9_7">§9.7</a>, <a href="2-hd.html#SP9_7_1">§9.7.1</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9_7">§9.7</a>, <a href="2-dr.html#SP9_7_1">§9.7.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_4_2_1"></a><b>§9.4.2.1. Typesetting I7 tables in displayed source text. </b>Unsurprisingly, I7 tables are set (after their titling lines) as HTML tables,
|
||||
and this is fiddly but elementary in the usual way of HTML tables:
|
||||
</p>
|
||||
|
@ -700,50 +703,38 @@ and this is fiddly but elementary in the usual way of HTML tables:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_plain_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::first_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9_4_2">§9.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_4_3"></a><b>§9.4.3. </b>Drinka.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">End table cell for I7 table in extension documentation</span><span class="named-paragraph-number">9.4.3</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9_4_2">§9.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_4_3"></a><b>§9.4.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">End table cell for I7 table in extension documentation</span><span class="named-paragraph-number">9.4.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9_4">§9.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_4_4"></a><b>§9.4.4. </b>Pinta.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Begin table cell for I7 table in extension documentation</span><span class="named-paragraph-number">9.4.4</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9_4">§9.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_4_4"></a><b>§9.4.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Begin table cell for I7 table in extension documentation</span><span class="named-paragraph-number">9.4.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"000080"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9_4">§9.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_4_2_2"></a><b>§9.4.2.2. </b>Milka.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Begin new row of I7 table in extension documentation</span><span class="named-paragraph-number">9.4.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9_4">§9.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_4_2_2"></a><b>§9.4.2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Begin new row of I7 table in extension documentation</span><span class="named-paragraph-number">9.4.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_row</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::first_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9_4_2">§9.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_1_1"></a><b>§9.1.1. </b>Day.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">End I7 table in extension documentation</span><span class="named-paragraph-number">9.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9_4_2">§9.4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_1_1"></a><b>§9.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">End I7 table in extension documentation</span><span class="named-paragraph-number">9.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_row</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9_1">§9.1</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9_1">§9.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_8"></a><b>§9.8. Typesetting the body of an example. </b>This is done just the way all other extension documentation material is
|
||||
handled, except that it is inside an inset box: which is provided by
|
||||
a shaded HTML table, containing just one row, which contains just one
|
||||
|
@ -758,7 +749,7 @@ cell. Here the inset table begins:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::first_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9">§9</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_9"></a><b>§9.9. </b>And here the inset table ends:
|
||||
</p>
|
||||
|
||||
|
@ -770,9 +761,9 @@ cell. Here the inset table begins:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-hd.html#SP9">§9</a> (twice).</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP9">§9</a> (twice).</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-jp.html">❮</a></li><li class="progresschapter"><a href="1-hm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hf.html">hf</a></li><li class="progresssection"><a href="2-jp.html">jp</a></li><li class="progresscurrent">hd</li><li class="progressnextoff">❯</li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-pb.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-hm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-sl.html">sl</a></li><li class="progresssection"><a href="2-pb.html">pb</a></li><li class="progresscurrent">dr</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
|
@ -1,411 +0,0 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>HTML Files</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<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="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Shared Modules</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="index.html"><span class="selectedlink">html</span></a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'HTML Files' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Shared Modules</a></li><li><a href="index.html">html</a></li><li><a href="index.html#2">Chapter 2: HTML</a></li><li><b>HTML Files</b></li></ul></div>
|
||||
<p class="purpose">To provide utilities for writing HTML files such as the problems report, the extension documentation, the index files and so forth.</p>
|
||||
|
||||
<ul class="toc"><li><a href="2-hf.html#SP2">§2. The "inform:" URL scheme</a></li><li><a href="2-hf.html#SP3">§3. The "source:" URL scheme</a></li><li><a href="2-hf.html#SP4">§4. Icons with and without tooltips</a></li><li><a href="2-hf.html#SP5">§5. Outcome images</a></li><li><a href="2-hf.html#SP6">§6. Header and footer</a></li><li><a href="2-hf.html#SP7">§7. HTML paragraphs with indentation</a></li><li><a href="2-hf.html#SP8">§8. Writing HTML characters</a></li><li><a href="2-hf.html#SP9">§9. Writing streams in XML-escaped form</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. </b>Inform documentation — its HTML text and the images, etc., used within
|
||||
it — is stored in two areas: "built-in" and "external". The built-in
|
||||
area is expected to be within the Inform 7 application itself. For
|
||||
instance, on OS X, this is at:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">...wherever.../Inform.app/Contents/Resources/</span></span> and/or
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">...wherever.../Inform.app/Contents/Resources/English.lproj/</span></span>
|
||||
</p>
|
||||
|
||||
<p class="commentary">(The duplication is a complication to do with localisation which we
|
||||
can ignore here.) The material stored in this built-in area is fixed: the
|
||||
Inform application needs to work even if stored on a read-only disc, or
|
||||
where the user has insufficient permissions to alter it. Inform itself neither
|
||||
reads from, nor writes to, any file in the built-in documentation area.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Documentation for the installed extensions does, however, change: it is
|
||||
written by Inform as and when necessary. This is the material making up the
|
||||
"external" area, and it needs to be somewhere which the user certainly
|
||||
has the necessary permissions to write to. For instance:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">~/Library/Inform/Documentation/</span></span> (OS X)
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">My Documents\Inform\Documentation\</span></span> (Windows)
|
||||
</p>
|
||||
|
||||
<p class="commentary">Pages in these two areas, built-in and external, need to link to each other by
|
||||
links: in addition, pages in the external area need access to images stored in
|
||||
the built-in area.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The other HTML files written by Inform are stored within the relevant
|
||||
project's bundle: these are the report of Problems (if any) and the
|
||||
Index. They, too, need access to images stored in the built-in area.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The problem we face is that these three mini-websites — the built-in
|
||||
documentation, the external documentation, and the project-specific
|
||||
pages — are written by tools which cannot know the correct file URLs.
|
||||
(For instance, it would not even help for the application to tell Inform
|
||||
where the built-in area is: because the HTML written by Inform would then
|
||||
cease to work if the user moved the application elsewhere in the
|
||||
filing system after Inform had run.)
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. The "inform:" URL scheme. </b>We solve this by requiring that the Inform 7 application must support
|
||||
a new URL scheme.
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) <span class="extract"><span class="extract-syntax"><inform://...></span></span> is interpreted as a file in the built-in documentation
|
||||
area, except that
|
||||
</li><li>(b) <span class="extract"><span class="extract-syntax"><inform://Extensions/...whatever...></span></span> should be fetched by first
|
||||
checking for "...whatever..." in the external area, and then — if
|
||||
that fails — also checking for "...whatever..." in the <span class="extract"><span class="extract-syntax">ExtnDocs</span></span>
|
||||
subfolder of the built-in area.
|
||||
</li></ul>
|
||||
<p class="commentary">For instance, Inform 7 for OS X would look for <span class="extract"><span class="extract-syntax">inform://Extensions/magic.png</span></span>
|
||||
at the following locations:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(i) <span class="extract"><span class="extract-syntax">~/Library/Inform/Documentation/magic.png</span></span>
|
||||
</li><li>(ii) <span class="extract"><span class="extract-syntax">.../Inform.app/Contents/Resources/ExtnDocs/magic.png</span></span>
|
||||
</li></ul>
|
||||
<p class="commentary">If no file was found in either place, the link should simply do nothing:
|
||||
the application is required not to produce a 404 error page, or to
|
||||
blank out the page currently showing.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. The "source:" URL scheme. </b>The other non-standard Inform URL scheme is "source:", which is used
|
||||
for a link which, when clicked, opens the Source panel with the given
|
||||
line made visible.
|
||||
</p>
|
||||
|
||||
<p class="commentary">For instance, line 21 of file <span class="extract"><span class="extract-syntax">Bits and Pieces/marbles.txt</span></span> has URL
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">source:Bits and Pieces/marbles.txt#line14</span></span>
|
||||
</p>
|
||||
|
||||
<p class="commentary">Filenames are given relative to the current project bundle. However, if only
|
||||
a leafname is supplied, then this is read as a file within the <span class="extract"><span class="extract-syntax">Source</span></span>
|
||||
subfolder of the project bundle. (Thus it is not possible to have a
|
||||
source link to a source file at the root of the project bundle: but this is
|
||||
no loss, since source is not allowed to be kept there.) For instance,
|
||||
line 14 of file <span class="extract"><span class="extract-syntax">Source/story.ni</span></span> has URL
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">source:story.ni#line14</span></span>
|
||||
</p>
|
||||
|
||||
<p class="commentary">The following routine writes the clickable source-reference icon, and
|
||||
is the only place in Inform where "source:" is used.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Source which is generated internally to Inform cannot be opened in the Source
|
||||
panel, for obvious reasons, so we produce nothing if the location is internal.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">source_link_case</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTMLFiles::set_source_link_case</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">source_link_case</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Characters::toupper</span><span class="plain-syntax">(</span><span class="identifier-syntax">Str::get_first_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">abbreviate_links_within</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTMLFiles::set_link_abbreviation_path</span><span class="plain-syntax">(</span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">abbreviate_links_within</span><span class="plain-syntax"> = </span><span class="identifier-syntax">P</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">HTMLFiles::get_link_abbreviation_path</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">abbreviate_links_within</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTMLFiles::html_source_link</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">HTMLFiles::html_source_link</span></span>:<br/><a href="2-hf.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">source_location</span><span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">nonbreaking_space</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sl</span><span class="plain-syntax">.</span><span class="identifier-syntax">file_of_origin</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="string-syntax">"%f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">TextFromFiles::get_filename</span><span class="plain-syntax">(</span><span class="identifier-syntax">sl</span><span class="plain-syntax">.</span><span class="identifier-syntax">file_of_origin</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">SUPERVISOR_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">abbreviate_links_within</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">, </span><span class="string-syntax">"%p"</span><span class="plain-syntax">, </span><span class="identifier-syntax">abbreviate_links_within</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::prefix_eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="identifier-syntax">pp</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::delete_n_characters</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">+1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Str::begins_with_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Source"</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="constant-syntax">6</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FOLDER_SEPARATOR</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::delete_n_characters</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="constant-syntax">7</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">nonbreaking_space</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;"</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">source_link_case</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"href=\"source:%S?case=%c#line%d\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="identifier-syntax">source_link_case</span><span class="plain-syntax">, </span><span class="identifier-syntax">sl</span><span class="plain-syntax">.</span><span class="identifier-syntax">line_number</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"href=\"source:%S#line%d\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="identifier-syntax">sl</span><span class="plain-syntax">.</span><span class="identifier-syntax">line_number</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=0 src=inform:/doc_images/Reveal.png"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. Icons with and without tooltips. </b>Tooltips are the evanescent pop-up windows which appear, a little behind the
|
||||
mouse arrow, when it is poised waiting over the icon. (We make heavy use of
|
||||
these in the World index, for instance, to clarify what abbreviations mean.)
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTMLFiles::html_icon_with_tooltip</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">HTMLFiles::html_icon_with_tooltip</span></span>:<br/><a href="2-hf.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">icon_name</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tip</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tip2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">img</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">img</span><span class="plain-syntax">, </span><span class="string-syntax">"border=0 src=inform:/doc_images/%s "</span><span class="plain-syntax">, </span><span class="identifier-syntax">icon_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tip</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">img</span><span class="plain-syntax">, </span><span class="string-syntax">"title=\"%s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tip</span><span class="plain-syntax">); </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tip2</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">img</span><span class="plain-syntax">, </span><span class="string-syntax">" %s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tip2</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">img</span><span class="plain-syntax">, </span><span class="string-syntax">"\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">img</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">img</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5"></a><b>§5. Outcome images. </b>These are the two images used on the Problems page to visually indicate
|
||||
success or failure. We also use special images on special occasions.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">CENTRED_OUTCOME_IMAGE_STYLE</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">SIDE_OUTCOME_IMAGE_STYLE</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">outcome_image_style</span><span class="plain-syntax"> = </span><span class="constant-syntax">SIDE_OUTCOME_IMAGE_STYLE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTMLFiles::html_outcome_image</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">image</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">verdict</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vn</span><span class="plain-syntax"> = </span><span class="string-syntax">""</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">be_festive</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Problems::Issue::internal_errors_have_occurred</span><span class="plain-syntax">() == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">be_festive</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">be_festive</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Time::feast</span><span class="plain-syntax">()) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CHRISTMAS_FEAST:</span><span class="plain-syntax"> </span><span class="identifier-syntax">vn</span><span class="plain-syntax"> = </span><span class="string-syntax">"_2"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">EASTER_FEAST:</span><span class="plain-syntax"> </span><span class="identifier-syntax">vn</span><span class="plain-syntax"> = </span><span class="string-syntax">"_3"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">vn</span><span class="plain-syntax">[0]) </span><span class="identifier-syntax">outcome_image_style</span><span class="plain-syntax"> = </span><span class="constant-syntax">CENTRED_OUTCOME_IMAGE_STYLE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">PROBLEMS_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::Issue::issue_problems_banner</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">verdict</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">outcome_image_style</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CENTRED_OUTCOME_IMAGE_STYLE:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"center"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"src=inform:/outcome_images/%s%s.png border=0"</span><span class="plain-syntax">, </span><span class="identifier-syntax">image</span><span class="plain-syntax">, </span><span class="identifier-syntax">vn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"center"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SIDE_OUTCOME_IMAGE_STYLE:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::first_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">110</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"src=inform:/outcome_images/%s%s@2x.png border=1 width=100 height=100"</span><span class="plain-syntax">, </span><span class="identifier-syntax">image</span><span class="plain-syntax">, </span><span class="identifier-syntax">vn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"HEADNOTE"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">, </span><span class="string-syntax">"style=\"margin-top:0;\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"(Each time <b>Go</b> or <b>Replay</b> is clicked, Inform tries to "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"translate the source text into a working story, and updates this report.)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"PROBLEMS BEGIN"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTMLFiles::outcome_image_tail</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">outcome_image_style</span><span class="plain-syntax"> == </span><span class="constant-syntax">SIDE_OUTCOME_IMAGE_STYLE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"PROBLEMS END"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_row</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"FOOTNOTE"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. Header and footer. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTMLFiles::html_header</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">title</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::declare_as_HTML</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_head</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::incorporate_CSS</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Supervisor::file_from_installation</span><span class="plain-syntax">(</span><span class="identifier-syntax">CSS_FOR_STANDARD_PAGES_IRES</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::incorporate_javascript</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Supervisor::file_from_installation</span><span class="plain-syntax">(</span><span class="identifier-syntax">JAVASCRIPT_FOR_STANDARD_PAGES_IRES</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::scripting</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_head</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_body</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"CONTENT BEGINS"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTMLFiles::html_footer</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::comment</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"CONTENT ENDS"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_body</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7"></a><b>§7. HTML paragraphs with indentation. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">class</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">margin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">depth</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">margin</span><span class="plain-syntax"> < </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"minimal HTML indentation is 1"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">margin</span><span class="plain-syntax"> > </span><span class="constant-syntax">9</span><span class="plain-syntax">) </span><span class="identifier-syntax">margin</span><span class="plain-syntax"> = </span><span class="constant-syntax">9</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"%sin%d\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">class</span><span class="plain-syntax">, </span><span class="identifier-syntax">margin</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">depth</span><span class="plain-syntax"> > </span><span class="constant-syntax">9</span><span class="plain-syntax">) { </span><span class="identifier-syntax">depth</span><span class="plain-syntax">--; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;&nbsp;&nbsp;&nbsp;"</span><span class="plain-syntax">); }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8"></a><b>§8. Writing HTML characters. </b>The following routine is a low-level filter which takes ISO Latin-1
|
||||
characters one at a time, feeding them out to the given stream with any
|
||||
unsafe characters converted to suitable HTML elements. (The stream writer
|
||||
will transcode to UTF-8 encoding, since all HTML file streams written by
|
||||
Inform are declared as having the UTF-8 character encoding.)
|
||||
</p>
|
||||
|
||||
<p class="commentary">Recall that a source reference is fed into <span class="extract"><span class="extract-syntax">HTMLFiles::char_out</span></span> as the
|
||||
following stream of characters:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">*source text*Source/story.ni*14*</span></span>
|
||||
</p>
|
||||
|
||||
<p class="commentary">(with <span class="extract"><span class="extract-syntax">SOURCE_REF_CHAR</span></span> used in place of the asterisk).
|
||||
</p>
|
||||
|
||||
<p class="commentary">When we notice the trigger character, we cease to output HTML and instead
|
||||
buffer up the reference until we reach the terminating trigger character:
|
||||
we then parse a little, tidy up and send it to <span class="extract"><span class="extract-syntax">HTMLFiles::html_source_link</span></span> to be
|
||||
turned into a <span class="extract"><span class="extract-syntax">source:</span></span> link.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">source_ref_fields</span><span class="plain-syntax">[3] = { </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax"> }; </span><span class="comment-syntax"> paraphrase, filename, line</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">source_ref_field</span><span class="plain-syntax"> = -1; </span><span class="comment-syntax"> which field we are buffering</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTMLFiles::char_out</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">HTMLFiles::char_out</span></span>:<br/>HTML Documentation - <a href="2-hd.html#SP9_5">§9.5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">charcode</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">source_ref_field</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">source_ref_fields</span><span class="plain-syntax">[</span><span class="identifier-syntax">source_ref_field</span><span class="plain-syntax">] == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">source_ref_fields</span><span class="plain-syntax">[</span><span class="identifier-syntax">source_ref_field</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">PROBLEMS_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">charcode</span><span class="plain-syntax"> != </span><span class="identifier-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">) { </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">source_ref_fields</span><span class="plain-syntax">[</span><span class="identifier-syntax">source_ref_field</span><span class="plain-syntax">], </span><span class="identifier-syntax">charcode</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">PROBLEMS_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">source_ref_fields</span><span class="plain-syntax">[</span><span class="identifier-syntax">source_ref_field</span><span class="plain-syntax">], </span><span class="identifier-syntax">charcode</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">charcode</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'"'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&quot;"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'<'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'>'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&gt;"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'&'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&amp;"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NEWLINE_IN_STRING:</span><span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">PROBLEMS_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">FORCE_NEW_PARA_CHAR:</span><span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"in2\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hf.html#SP4" class="function-link"><span class="function-syntax">HTMLFiles::html_icon_with_tooltip</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"ornament_flower.png"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SOURCE_REF_CHAR:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">source_ref_field</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">source_ref_field</span><span class="plain-syntax"> == </span><span class="constant-syntax">3</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">source_ref_field</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">source_location</span><span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">.</span><span class="identifier-syntax">file_of_origin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TextFromFiles::filename_to_source_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">source_ref_fields</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">.</span><span class="identifier-syntax">line_number</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::atoi</span><span class="plain-syntax">(</span><span class="identifier-syntax">source_ref_fields</span><span class="plain-syntax">[2], </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hf.html#SP3" class="function-link"><span class="function-syntax">HTMLFiles::html_source_link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">sl</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">Str::clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">source_ref_fields</span><span class="plain-syntax">[</span><span class="identifier-syntax">source_ref_field</span><span class="plain-syntax">]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">(</span><span class="identifier-syntax">charcode</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9"></a><b>§9. Writing streams in XML-escaped form. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTMLFiles::write_xml_safe_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">txt</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">txt</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'&'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&amp;"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'<'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'>'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&gt;"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-hm.html">❮</a></li><li class="progresschapter"><a href="1-hm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">hf</li><li class="progresssection"><a href="2-jp.html">jp</a></li><li class="progresssection"><a href="2-hd.html">hd</a></li><li class="progressnext"><a href="2-jp.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Javascript Pastes</title>
|
||||
<title>Paste Buttons</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
|
@ -61,18 +61,19 @@ function togglePopup(material_id) {
|
|||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Javascript Pastes' generated by Inweb-->
|
||||
<!--Weave of 'Paste Buttons' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Shared Modules</a></li><li><a href="index.html">html</a></li><li><a href="index.html#2">Chapter 2: HTML</a></li><li><b>Javascript Pastes</b></li></ul></div>
|
||||
<p class="purpose">To write valid HTML for a paste icon which, when clicked, calls a Javascript function which will paste Inform source text into the Source panel of the application.</p>
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Shared Modules</a></li><li><a href="index.html">html</a></li><li><a href="index.html#2">Chapter 2: Intranet</a></li><li><b>Paste Buttons</b></li></ul></div>
|
||||
<p class="purpose">HTML for a button which, when clicked, pastes Inform source text into the Source panel of the application, or opens a file or folder on the host computer.</p>
|
||||
|
||||
<ul class="toc"><li><a href="2-jp.html#SP1">§1. Definitions</a></li><li><a href="2-jp.html#SP7">§7. Individual characters</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="2-pb.html#SP1">§1. Pastes and their notation</a></li><li><a href="2-pb.html#SP3">§3. Buttons</a></li><li><a href="2-pb.html#SP5">§5. File-opener buttons</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. Definitions. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. Pastes and their notation. </b>A paste button is intended to be such that the user clicks it, and some
|
||||
text is inserted at the current cursor position in the Source panel of the
|
||||
Inform application.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>The application is required to provide a Javascript function to copy text
|
||||
into the source window. Broadly speaking, the application needs to support
|
||||
Javascript in the following form:
|
||||
<p class="commentary">This is done with Javascript which looks something like this:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -80,64 +81,38 @@ Javascript in the following form:
|
|||
<span class="plain-syntax"> myProject.selectView('source');</span>
|
||||
<span class="plain-syntax"> myProject.pasteCode('Trying Taking Manhattan');</span>
|
||||
</pre>
|
||||
<p class="commentary">This for Windows: for OS X, the same code but <span class="extract"><span class="extract-syntax">window.Project</span></span> rather
|
||||
than <span class="extract"><span class="extract-syntax">external.Project</span></span>.
|
||||
<p class="commentary">Thus for Windows: for MacOS, the same code but <span class="extract"><span class="extract-syntax">window.Project</span></span> rather
|
||||
than <span class="extract"><span class="extract-syntax">external.Project</span></span>. Several details unfortunately differ on Windows,
|
||||
so there are two implementations below: one used if <span class="extract"><span class="extract-syntax">WINDOWS_JAVASCRIPT</span></span> is
|
||||
defined, one if not. (See <a href="../../../inweb/docs/foundation-module/1-wp.html" class="internal">Windows Platform (in foundation)</a> for where this
|
||||
is set.)
|
||||
</p>
|
||||
|
||||
<p class="commentary">As this implies, the details unfortunately differ on different platforms:
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>The challenges here are that (a) the code to be pasted may be, say, as much
|
||||
as 5K in size, and that (b) it needs to include some special characters,
|
||||
escaped in a way which the app has to deal with correctly. This has proved
|
||||
a challenge because, historically, different Javascript implementations
|
||||
have handled escape characters in quoted text differently. (For instance, some
|
||||
allowing a double-quote <span class="extract"><span class="extract-syntax">"</span></span> to appear as a literal in single-quoted text, others
|
||||
requiring <span class="extract"><span class="extract-syntax">&quot;</span></span> to be used, and others not recognising HTML entities such as
|
||||
<span class="extract"><span class="extract-syntax">&quot;</span></span> at all.)
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) Model 1 - paste in OS X style, directly within the HREF of a link.
|
||||
</li><li>(b) Model 2 - paste in Windows style, defining a function and calling that.
|
||||
</li></ul>
|
||||
<p class="commentary">In model 2 we define a Javascript function for each individual paste
|
||||
because this protects against long paste texts overflowing what Windows
|
||||
considers the maximum permitted length of a link: the WebKit rendering
|
||||
engine in OS X has no such limit, apparently. This means that for Windows
|
||||
we define numerous copies of the Javascript code above. In model 1, we
|
||||
never need to compile fresh Javascript functions because the template file
|
||||
<span class="extract"><span class="extract-syntax">ExtensionFileModel.html</span></span> for OS X contains a definition of the single
|
||||
Javascript function:
|
||||
<p class="commentary">To avoid this issue, Inform adopted a notation of its own in 2007. All
|
||||
Inform GUI apps have to follow this rule when reading the argument to
|
||||
<span class="extract"><span class="extract-syntax">pasteCode</span></span>:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> <script language="JavaScript"></span>
|
||||
<span class="plain-syntax"> function pasteCode(code) {</span>
|
||||
<span class="plain-syntax"> var myProject = project();</span>
|
||||
<span class="plain-syntax"> myProject.selectView('source');</span>
|
||||
<span class="plain-syntax"> myProject.pasteCode(code);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </script></span>
|
||||
</pre>
|
||||
<p class="commentary">and we can simply call <span class="extract"><span class="extract-syntax">href="javascript:pasteCode(...)"</span></span> from any link.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The text pasted may in some cases be quite long (say, 5K or more) and the
|
||||
code below should work whatever its length. It will of course be UTF-8 encoded,
|
||||
since all HTML produced by Inform is.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. </b>We have found that different Javascript implementations handle escape
|
||||
characters in quoted text differently. (For instance, some allow a
|
||||
double-quote <span class="extract"><span class="extract-syntax">"</span></span> to appear as a literal in single-quoted text, others
|
||||
require <span class="extract"><span class="extract-syntax">&quot;</span></span> to be used, others still do not recognise HTML entities
|
||||
like <span class="extract"><span class="extract-syntax">&quot;</span></span> and treat them as literal text.) To avoid these tiresome
|
||||
platform dependencies a single new escape-character syntax was added in
|
||||
November 2007. This puts obligations both on Inform (and <span class="extract"><span class="extract-syntax">indoc</span></span>, which also
|
||||
generates HTML with Javascript pastes), to make use of the escape syntax,
|
||||
and also on the application, to understand and act on it.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The application must implement <span class="extract"><span class="extract-syntax">myProject.pasteCode(code)</span></span> such that every
|
||||
instance of <span class="extract"><span class="extract-syntax">[=0xHHHH=]</span></span> is replaced with the Unicode character whose
|
||||
hexadecimal code is <span class="extract"><span class="extract-syntax">HHHH</span></span>. There will always be four digits, with leading
|
||||
<p class="commentary">Each instance of <span class="extract"><span class="extract-syntax">[=0xHHHH=]</span></span> is replaced with the Unicode character whose
|
||||
hexadecimal code is <span class="extract"><span class="extract-syntax">HHHH</span></span>; there will always be four digits, with leading
|
||||
zeros as needed, and <span class="extract"><span class="extract-syntax">A</span></span> to <span class="extract"><span class="extract-syntax">F</span></span> will be written in upper case. The only
|
||||
Unicode characters with codes below <span class="extract"><span class="extract-syntax">0x0020</span></span> which must be handled are
|
||||
newline, <span class="extract"><span class="extract-syntax">0x000A</span></span>, and tab, <span class="extract"><span class="extract-syntax">0x0009</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The generator (Inform or <span class="extract"><span class="extract-syntax">indoc</span></span>) must always escape every instance of the
|
||||
following characters:
|
||||
<p class="commentary">And any Inform tool generating such an argument — either the renderer below,
|
||||
or the one in <a href="../indoc/index.html" class="internal">indoc</a>, which also generates pastes — must use this notation
|
||||
to escape every instance of the following problematic characters:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) every tab is escaped to <span class="extract"><span class="extract-syntax">[=0x0009=]</span></span>;
|
||||
|
@ -149,30 +124,50 @@ following characters:
|
|||
</li><li>(g) every greater than sign is escaped to <span class="extract"><span class="extract-syntax">[=0x003E=]</span></span>;
|
||||
</li><li>(h) every backslash is escaped to <span class="extract"><span class="extract-syntax">[=0x005C=]</span></span>.
|
||||
</li></ul>
|
||||
<p class="commentary">It may also choose to escape other character codes, as it prefers. Other
|
||||
characters are generated as literal UTF-8. In no case will any character
|
||||
with code below <span class="extract"><span class="extract-syntax">0x0020</span></span> be passed as a literal.
|
||||
<p class="commentary">It may also choose to escape other character codes, as it prefers, but will
|
||||
never generate any codes below <span class="extract"><span class="extract-syntax">0x0020</span></span> other than newline, <span class="extract"><span class="extract-syntax">0x000A</span></span>, and tab,
|
||||
<span class="extract"><span class="extract-syntax">0x0009</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b>At the top level, the form of link used depends on the Javascript model.
|
||||
Note that model 0 results in no material at all being output. The actual
|
||||
text to be passed is all set via <span class="extract"><span class="extract-syntax">HTML::Javascript::javascript_string_out</span></span> below, and which
|
||||
does not depend on the model.
|
||||
<p class="commentary">The app can therefore assume that none of these problematic characters occur
|
||||
in raw form in the argument to <span class="extract"><span class="extract-syntax">pasteCode</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PasteButtons::put_code_char</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">PasteButtons::put_code_char</span></span>:<br/><a href="2-pb.html#SP4">§4</a>, <a href="2-pb.html#SP4_1">§4.1</a>, <a href="2-pb.html#SP4_1_1">§4.1.1</a>, <a href="2-pb.html#SP4_1_2">§4.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'\t'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x0009=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'\n'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NEWLINE_IN_STRING:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x000A=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'"'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x0022=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'&'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x0026=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'\''</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x0027=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'<'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x003C=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'>'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x003E=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'\\'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x005C=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. Buttons. </b>The button is simply an image with a link using the <span class="extract"><span class="extract-syntax">javascript:</span></span> protocol
|
||||
to call a suitable function; on Windows we make a one-off script for each
|
||||
paste to avoid problems when the code is too long to pass as a Javascript
|
||||
argument. (These concerns may now have become obsolete; Windows browsers
|
||||
have improved immensely since 2007.)
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">javascript_fn_counter</span><span class="plain-syntax"> = </span><span class="constant-syntax">1000</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTML::Javascript::paste_W</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">HTML::Javascript::paste_W</span></span>:<br/>HTML Documentation - <a href="2-hd.html#SP9_4_1">§9.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-jp.html#SP4" class="function-link"><span class="function-syntax">HTML::Javascript::paste_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">), </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PasteButtons::paste_W</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">PasteButtons::paste_W</span></span>:<br/>Documentation Renderer - <a href="2-dr.html#SP9_4_1">§9.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pb.html#SP3" class="function-link"><span class="function-syntax">PasteButtons::paste_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">), </span><span class="identifier-syntax">Wordings::last_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-jp.html#SP4" class="function-link"><span class="function-syntax">HTML::Javascript::paste_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, -1, -1, </span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pb.html#SP3" class="function-link"><span class="function-syntax">PasteButtons::paste_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, -1, -1, </span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTML::Javascript::paste_inner</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">WINDOWS_JAVASCRIPT</span><span class="plain-syntax"> </span><span class="comment-syntax"> OS X style, with long function arguments allowed in links</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PasteButtons::paste_inner</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">WINDOWS_JAVASCRIPT</span><span class="plain-syntax"> </span><span class="comment-syntax"> MacOS style, with long function arguments allowed in links</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">, </span><span class="string-syntax">"href=\"javascript:pasteCode("</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-jp.html#SP6" class="function-link"><span class="function-syntax">HTML::Javascript::javascript_string_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pb.html#SP4" class="function-link"><span class="function-syntax">PasteButtons::argument</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">, </span><span class="string-syntax">")\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">link</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">);</span>
|
||||
|
@ -186,7 +181,7 @@ does not depend on the model.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"var myProject = project();\n\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"myProject.selectView('source');\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"myProject.pasteCode("</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">OUTDENT</span><span class="plain-syntax">; </span><a href="2-jp.html#SP6" class="function-link"><span class="function-syntax">HTML::Javascript::javascript_string_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">OUTDENT</span><span class="plain-syntax">; </span><a href="2-pb.html#SP4" class="function-link"><span class="function-syntax">PasteButtons::argument</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">");\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"}\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</script>\n"</span><span class="plain-syntax">);</span>
|
||||
|
@ -196,53 +191,24 @@ does not depend on the model.
|
|||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5"></a><b>§5. </b>Though the Javascript function is called <span class="extract"><span class="extract-syntax">openFile</span></span>, it can equally well
|
||||
compile a link to open a folder on the host filing system.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTML::Javascript::open_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">contents</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="string-syntax">"%f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="string-syntax">"%p"</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">WINDOWS_JAVASCRIPT</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">) </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">) == </span><span class="character-syntax">'\\'</span><span class="plain-syntax">) </span><span class="identifier-syntax">Str::put</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="character-syntax">'/'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"href='javascript:project().openFile(\"%S\")'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"%s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">contents</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. </b>In the following, the source of the text can be either a range of words
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b>In the following, the source of the text can be either a range of words
|
||||
from the lexer (as for instance when a portion of an extension is being
|
||||
typeset as documentation, with an example that can be pasted), or can
|
||||
be a C string: if the latter, then its encoding must be ISO Latin-1.
|
||||
The conversion to UTF-8 is performed in <span class="extract"><span class="extract-syntax">HTML::Javascript::javascript_char_out</span></span> below.
|
||||
The conversion to UTF-8 is performed in <span class="extract"><span class="extract-syntax">PasteButtons::put_code_char</span></span> below.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTML::Javascript::javascript_string_out</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">HTML::Javascript::javascript_string_out</span></span>:<br/><a href="2-jp.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PasteButtons::argument</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">PasteButtons::argument</span></span>:<br/><a href="2-pb.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"'"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-jp.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">Write stream as Javascript string</span><span class="named-paragraph-number">6.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">from</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-jp.html#SP6_2" class="named-paragraph-link"><span class="named-paragraph">Write word range as Javascript string</span><span class="named-paragraph-number">6.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pb.html#SP2" class="function-link"><span class="function-syntax">PasteButtons::put_code_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">from</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-pb.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Write word range as Javascript string</span><span class="named-paragraph-number">4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"'"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6_1"></a><b>§6.1. </b>The art of leadership is delegation.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write stream as Javascript string</span><span class="named-paragraph-number">6.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">alt_stream</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-jp.html#SP7" class="function-link"><span class="function-syntax">HTML::Javascript::javascript_char_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">));</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-jp.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_2"></a><b>§6.2. </b>Writing a word range is much harder. In effect, we have to provide an
|
||||
<p class="commentary firstcommentary"><a id="SP4_1"></a><b>§4.1. </b>Writing a word range is much harder. In effect, we have to provide an
|
||||
inverse function for the lexer, which converted raw source text to nicely
|
||||
packaged up words.
|
||||
</p>
|
||||
|
@ -267,7 +233,7 @@ only need to supply extra Javascript tabs when the indentation is 2 tab
|
|||
stops or more.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write word range as Javascript string</span><span class="named-paragraph-number">6.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write word range as Javascript string</span><span class="named-paragraph-number">4.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -277,8 +243,8 @@ stops or more.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lexer::word_raw_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PARBREAK_V</span><span class="plain-syntax">) { </span><span class="comment-syntax"> marker for a paragraph break</span>
|
||||
<span class="plain-syntax"> </span><a href="2-jp.html#SP7" class="function-link"><span class="function-syntax">HTML::Javascript::javascript_char_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'\n'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-jp.html#SP7" class="function-link"><span class="function-syntax">HTML::Javascript::javascript_char_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'\n'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pb.html#SP2" class="function-link"><span class="function-syntax">PasteButtons::put_code_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'\n'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pb.html#SP2" class="function-link"><span class="function-syntax">PasteButtons::put_code_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'\n'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">suppress_space</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">follows_paragraph_break</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PARBREAK_V</span><span class="plain-syntax">) </span><span class="identifier-syntax">i</span><span class="plain-syntax">++; </span><span class="identifier-syntax">i</span><span class="plain-syntax">--; </span><span class="comment-syntax"> elide multiple breaks</span>
|
||||
|
@ -286,31 +252,31 @@ stops or more.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indentation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lexer::indentation_level</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">indentation</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="comment-syntax"> number of tab stops of indentation on this para</span>
|
||||
<span class="plain-syntax"> </span><a href="2-jp.html#SP7" class="function-link"><span class="function-syntax">HTML::Javascript::javascript_char_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'\n'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">j</span><span class="plain-syntax"><</span><span class="identifier-syntax">indentation</span><span class="plain-syntax">-1; </span><span class="identifier-syntax">j</span><span class="plain-syntax">++) </span><a href="2-jp.html#SP7" class="function-link"><span class="function-syntax">HTML::Javascript::javascript_char_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'\t'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pb.html#SP2" class="function-link"><span class="function-syntax">PasteButtons::put_code_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'\n'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">j</span><span class="plain-syntax"><</span><span class="identifier-syntax">indentation</span><span class="plain-syntax">-1; </span><span class="identifier-syntax">j</span><span class="plain-syntax">++) </span><a href="2-pb.html#SP2" class="function-link"><span class="function-syntax">PasteButtons::put_code_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'\t'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">suppress_space</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Lexer::break_before</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">'\t'</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">follows_paragraph_break</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-jp.html#SP7" class="function-link"><span class="function-syntax">HTML::Javascript::javascript_char_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'\t'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pb.html#SP2" class="function-link"><span class="function-syntax">PasteButtons::put_code_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'\t'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">suppress_space</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">follows_paragraph_break</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">suppress_space</span><span class="plain-syntax">==</span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-jp.html#SP6_2_1" class="named-paragraph-link"><span class="named-paragraph">Restore inter-word spaces unless this would be unnatural</span><span class="named-paragraph-number">6.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pb.html#SP4_1_1" class="named-paragraph-link"><span class="named-paragraph">Restore inter-word spaces unless this would be unnatural</span><span class="named-paragraph-number">4.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">suppress_space</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">]; </span><span class="identifier-syntax">j</span><span class="plain-syntax">++) </span><a href="2-jp.html#SP7" class="function-link"><span class="function-syntax">HTML::Javascript::javascript_char_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">]);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-jp.html#SP6_2_2" class="named-paragraph-link"><span class="named-paragraph">Insert a close-literal-I6 escape sequence if necessary</span><span class="named-paragraph-number">6.2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">]; </span><span class="identifier-syntax">j</span><span class="plain-syntax">++) </span><a href="2-pb.html#SP2" class="function-link"><span class="function-syntax">PasteButtons::put_code_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">]);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pb.html#SP4_1_2" class="named-paragraph-link"><span class="named-paragraph">Insert a close-literal-I6 escape sequence if necessary</span><span class="named-paragraph-number">4.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="2-jp.html#SP7" class="function-link"><span class="function-syntax">HTML::Javascript::javascript_char_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'\n'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-jp.html#SP7" class="function-link"><span class="function-syntax">HTML::Javascript::javascript_char_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'\n'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pb.html#SP2" class="function-link"><span class="function-syntax">PasteButtons::put_code_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'\n'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pb.html#SP2" class="function-link"><span class="function-syntax">PasteButtons::put_code_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'\n'</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-jp.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_2_1"></a><b>§6.2.1. </b>The lexer also broke words around punctuation marks, so that, for instance,
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pb.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_1_1"></a><b>§4.1.1. </b>The lexer also broke words around punctuation marks, so that, for instance,
|
||||
"fish, finger" would have been lexed as <span class="extract"><span class="extract-syntax">fish , finger</span></span> — three words.
|
||||
But we want to restore the more natural spacing.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Restore inter-word spaces unless this would be unnatural</span><span class="named-paragraph-number">6.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Restore inter-word spaces unless this would be unnatural</span><span class="named-paragraph-number">4.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -318,57 +284,50 @@ But we want to restore the more natural spacing.
|
|||
<span class="plain-syntax"> && ((</span><span class="identifier-syntax">p</span><span class="plain-syntax">[1] != </span><span class="constant-syntax">0</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Lexer::is_punctuation</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">[0]) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[0] == </span><span class="character-syntax">'('</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[0] == </span><span class="character-syntax">'{'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[0] == </span><span class="character-syntax">'}'</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> && (</span><span class="identifier-syntax">compare_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">-1, </span><span class="identifier-syntax">OPENBRACKET_V</span><span class="plain-syntax">)==</span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="2-jp.html#SP7" class="function-link"><span class="function-syntax">HTML::Javascript::javascript_char_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">' '</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pb.html#SP2" class="function-link"><span class="function-syntax">PasteButtons::put_code_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">' '</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-jp.html#SP6_2">§6.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_2_2"></a><b>§6.2.2. </b>Finally, the lexer rendered a literal I6 inclusion in the form
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<p>(- self=2; -)</p>
|
||||
</blockquote>
|
||||
|
||||
<p class="commentary">as a sequence of two lexical words: <span class="extract"><span class="extract-syntax">(-</span></span> and then <span class="extract"><span class="extract-syntax">self=2;</span></span>. In order
|
||||
to paste back safely, we must supplement this with the closure "-)" once
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pb.html#SP4_1">§4.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_1_2"></a><b>§4.1.2. </b>Finally, the lexer rendered a literal I6 inclusion in the form <span class="extract"><span class="extract-syntax">(- self=2;</span></span>
|
||||
as a sequence of two lexical words: <span class="extract"><span class="extract-syntax">(-</span></span> and then <span class="extract"><span class="extract-syntax">self=2;</span></span>. In order
|
||||
to paste back safely, we must supplement this with the closure <span class="extract"><span class="extract-syntax">-)</span></span> once
|
||||
again:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Insert a close-literal-I6 escape sequence if necessary</span><span class="named-paragraph-number">6.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Insert a close-literal-I6 escape sequence if necessary</span><span class="named-paragraph-number">4.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::word</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="identifier-syntax">OPENI6_V</span><span class="plain-syntax">) </span><span class="identifier-syntax">close_I6_position</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">+1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">close_I6_position</span><span class="plain-syntax"> == </span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-jp.html#SP7" class="function-link"><span class="function-syntax">HTML::Javascript::javascript_char_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'-'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-jp.html#SP7" class="function-link"><span class="function-syntax">HTML::Javascript::javascript_char_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">')'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-jp.html#SP7" class="function-link"><span class="function-syntax">HTML::Javascript::javascript_char_out</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">' '</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pb.html#SP2" class="function-link"><span class="function-syntax">PasteButtons::put_code_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">'-'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pb.html#SP2" class="function-link"><span class="function-syntax">PasteButtons::put_code_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">')'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pb.html#SP2" class="function-link"><span class="function-syntax">PasteButtons::put_code_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="character-syntax">' '</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-jp.html#SP6_2">§6.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7"></a><b>§7. Individual characters. </b>Note that every character within the single quotes of a Javascript string
|
||||
is produced through the following routine. It escapes certain awkward
|
||||
characters, but need not convert from ISO Latin-1 to UTF-8 since that will
|
||||
happen automatically downstream of us when the output is written as a
|
||||
UTF-8 encoded HTML file.
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pb.html#SP4_1">§4.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5"></a><b>§5. File-opener buttons. </b>Nothing to do with pastes: this is a completely different sort of button,
|
||||
though also powered by Javascript. It opens a file or folder on the host
|
||||
filing system.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTML::Javascript::javascript_char_out</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">HTML::Javascript::javascript_char_out</span></span>:<br/><a href="2-jp.html#SP6_1">§6.1</a>, <a href="2-jp.html#SP6_2">§6.2</a>, <a href="2-jp.html#SP6_2_1">§6.2.1</a>, <a href="2-jp.html#SP6_2_2">§6.2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'\t'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x0009=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'\n'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NEWLINE_IN_STRING:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x000A=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'"'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x0022=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'&'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x0026=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'\''</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x0027=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'<'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x003C=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'>'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x003E=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'\\'</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[=0x005C=]"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PasteButtons::open_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">contents</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="string-syntax">"%f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="string-syntax">"%p"</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">WINDOWS_JAVASCRIPT</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">) </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">) == </span><span class="character-syntax">'\\'</span><span class="plain-syntax">) </span><span class="identifier-syntax">Str::put</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="character-syntax">'/'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"href='javascript:project().openFile(\"%S\")'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"%s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">contents</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-hf.html">❮</a></li><li class="progresschapter"><a href="1-hm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-hf.html">hf</a></li><li class="progresscurrent">jp</li><li class="progresssection"><a href="2-hd.html">hd</a></li><li class="progressnext"><a href="2-hd.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-sl.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-hm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-sl.html">sl</a></li><li class="progresscurrent">pb</li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progressnext"><a href="2-dr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
159
docs/html-module/2-sl.html
Normal file
159
docs/html-module/2-sl.html
Normal file
|
@ -0,0 +1,159 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Source Links</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<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="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Shared Modules</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="index.html"><span class="selectedlink">html</span></a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Source Links' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Shared Modules</a></li><li><a href="index.html">html</a></li><li><a href="index.html#2">Chapter 2: Intranet</a></li><li><b>Source Links</b></li></ul></div>
|
||||
<p class="purpose">To provide HTML links to an Inform source text, using the non-standard "source" protocol.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. </b>Index and Problem pages generated by <a href="../inform7/index.html" class="internal">inform7</a>, via the <a href="../index-module/index.html" class="internal">index</a> and
|
||||
<a href="../problems-module/index.html" class="internal">problems</a> modules, frequently need to have clickable icons linking to
|
||||
positions in the source text; when these are clicked in the Inform UI
|
||||
applications, the Source panel opens at the appropriate line.
|
||||
</p>
|
||||
|
||||
<p class="commentary">This is done with a non-standard HTML protocol called <span class="extract"><span class="extract-syntax">source:</span></span>, one of
|
||||
two which the Inform UI apps must provide special handling for. For instance,
|
||||
line 21 of file <span class="extract"><span class="extract-syntax">Bits and Pieces/marbles.txt</span></span> has URL:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> source:Bits and Pieces/marbles.txt#line14</span>
|
||||
</pre>
|
||||
<p class="commentary">When an Inform app is viewing an extension project, there can also be
|
||||
references to individual examples in that extension, and these are referred
|
||||
to as "cases" since they are test cases when the app is testing the extension.
|
||||
For example,
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> source:Locksmith.i7x?case=B#line7</span>
|
||||
</pre>
|
||||
<p class="commentary">refers to line 7 of Example B of <span class="extract"><span class="extract-syntax">Locksmith.i7x</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>Locations are given relative to the current project bundle. However, if
|
||||
only a leafname is supplied, then this is read as a file within the <span class="extract"><span class="extract-syntax">Source</span></span>
|
||||
subfolder of the project bundle. (Thus it is not possible to have a
|
||||
source link to a source file at the root of the project bundle: but this is
|
||||
no loss, since source is not allowed to be kept there.) For instance,
|
||||
line 14 of file <span class="extract"><span class="extract-syntax">Source/story.ni</span></span> has URL
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> source:story.ni#line14</span>
|
||||
</pre>
|
||||
<p class="commentary">The following routine writes the clickable source-reference icon, and
|
||||
is the only place in Inform where <span class="extract"><span class="extract-syntax">source:</span></span> URLs are generated.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">source_link_case</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">SourceLinks::set_case</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">source_link_case</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Characters::toupper</span><span class="plain-syntax">(</span><span class="identifier-syntax">Str::get_first_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">SourceLinks::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">source_location</span><span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">nonbreaking_space</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sl</span><span class="plain-syntax">.</span><span class="identifier-syntax">file_of_origin</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="string-syntax">"%f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">TextFromFiles::get_filename</span><span class="plain-syntax">(</span><span class="identifier-syntax">sl</span><span class="plain-syntax">.</span><span class="identifier-syntax">file_of_origin</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-sl.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Truncate the path according to the current abbreviation</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-sl.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Remove indication that the path is inside the Source directory</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">nonbreaking_space</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;"</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">source_link_case</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"href=\"source:%S?case=%c#line%d\""</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="identifier-syntax">source_link_case</span><span class="plain-syntax">, </span><span class="identifier-syntax">sl</span><span class="plain-syntax">.</span><span class="identifier-syntax">line_number</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"href=\"source:%S#line%d\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="identifier-syntax">sl</span><span class="plain-syntax">.</span><span class="identifier-syntax">line_number</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=0 src=inform:/doc_images/Reveal.png"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2_1"></a><b>§2.1. </b>This rather clumsily simplifies links to make them relative.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Truncate the path according to the current abbreviation</span><span class="named-paragraph-number">2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">abbrev</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HTML::get_link_abbreviation_path</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">abbrev</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">, </span><span class="string-syntax">"%p"</span><span class="plain-syntax">, </span><span class="identifier-syntax">abbrev</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::prefix_eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="identifier-syntax">pp</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">)) </span><span class="identifier-syntax">Str::delete_n_characters</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">+1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-sl.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2"></a><b>§2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Remove indication that the path is inside the Source directory</span><span class="named-paragraph-number">2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Str::begins_with_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Source"</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="constant-syntax">6</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FOLDER_SEPARATOR</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::delete_n_characters</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="constant-syntax">7</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-sl.html#SP2">§2</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-hm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-hm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">sl</li><li class="progresssection"><a href="2-pb.html">pb</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progressnext"><a href="2-pb.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
147
docs/html-module/P-wtmd.html
Normal file
147
docs/html-module/P-wtmd.html
Normal file
|
@ -0,0 +1,147 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>What This Module Does</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<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="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Shared Modules</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="index.html"><span class="selectedlink">html</span></a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'What This Module Does' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Shared Modules</a></li><li><a href="index.html">html</a></li><li><a href="index.html#P">Preliminaries</a></li><li><b>What This Module Does</b></li></ul></div>
|
||||
<p class="purpose">An overview of the html module's role and abilities.</p>
|
||||
|
||||
<ul class="toc"><li><a href="P-wtmd.html#SP1">§1. Prerequisites</a></li><li><a href="P-wtmd.html#SP2">§2. Purpose</a></li><li><a href="P-wtmd.html#SP3">§3. Custom HTML link protocols</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. Prerequisites. </b>The html module is a part of the Inform compiler toolset. It is
|
||||
presented as a literate program or "web". Before diving in:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) It helps to have some experience of reading webs: see <a href="../../../inweb/docs/index.html" class="internal">inweb</a> for more.
|
||||
</li><li>(b) The module is written in C, in fact ANSI C99, but this is disguised by the
|
||||
fact that it uses some extension syntaxes provided by the <a href="../../../inweb/docs/index.html" class="internal">inweb</a> literate
|
||||
programming tool, making it a dialect of C called InC. See <a href="../../../inweb/docs/index.html" class="internal">inweb</a> for
|
||||
full details, but essentially: it's C without predeclarations or header files,
|
||||
and where functions have names like <span class="extract"><span class="extract-syntax">Tags::add_by_name</span></span> rather than <span class="extract"><span class="extract-syntax">add_by_name</span></span>.
|
||||
</li><li>(c) This module uses other modules drawn from the <a href="../compiler.html" class="internal">compiler</a>, and also
|
||||
uses a module of utility functions called <a href="../../../inweb/docs/foundation-module/index.html" class="internal">foundation</a>.
|
||||
For more, see <a href="../../../inweb/docs/foundation-module/P-abgtf.html" class="internal">A Brief Guide to Foundation (in foundation)</a>.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. Purpose. </b>Many functions of the Inform toolset involve the generation of HTML in some
|
||||
way, but almost all of that work is actually done by the <a href="../../../inweb/docs/foundation-module/index.html" class="internal">foundation</a> module.
|
||||
If you're interested in how HTML pages are made, how tags are opened and closed,
|
||||
and such, see <a href="../../../inweb/docs/foundation-module/5-htm.html" class="internal">HTML (in foundation)</a> and <a href="../../../inweb/docs/foundation-module/5-ee.html" class="internal">Epub Ebooks (in foundation)</a>. All of that
|
||||
code is general-purpose.
|
||||
</p>
|
||||
|
||||
<p class="commentary">By contrast, the <a href="index.html" class="internal">html</a> module is very much a part of the Inform compiler
|
||||
and provides highly Inform-specific functions needed to make the intranet-like
|
||||
miniature websites it generates on the fly — problem pages, the Index, the
|
||||
extensions documentation.
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) clickable links to positions in source text, opening the Source panel
|
||||
in the Inform GUI apps as needed — see <a href="2-sl.html#SP2" class="internal">SourceLinks::link</a>;
|
||||
</li><li>(b) paste buttons which, when clicked, insert text into the Source panel,
|
||||
or which open certain files or folders — see <a href="2-pb.html" class="internal">Paste Buttons</a>;
|
||||
</li><li>(c) renders Inform extension documentation text to HTML — see
|
||||
<a href="2-dr.html#SP9" class="internal">DocumentationRenderer::set_body_text</a> for the body of an extension or of one
|
||||
of its examples, and <a href="2-dr.html#SP7" class="internal">DocumentationRenderer::table_of_contents</a> for the TOC at
|
||||
the top.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. Custom HTML link protocols. </b>This seems a useful place to document something which the Inform GUI apps
|
||||
must provide. These render index, problem and extension mini-website pages
|
||||
in embedded web browser views: for example, Inform on MacOS is essentially
|
||||
running a copy of Safari (or rather, its underlying engine WebKit) under
|
||||
the hood to display these. The material displayed consists of standard web
|
||||
pages, except that there are two custom "transport protocols" or "URL schemas".
|
||||
</p>
|
||||
|
||||
<p class="commentary">Protocols like this go under a number of names, partly because there are many
|
||||
subtly different ideas here which only experts can distinguish (see
|
||||
<a href="https://en.wikipedia.org/wiki/Application_layer" class="external">https://en.wikipedia.org/wiki/Application_layer</a> for the entrance to the
|
||||
rabbit-hole). To us, anyway, protocols are the prefixes of URLs which end
|
||||
with a colon — all browsers recognise a standard set of these, of which <span class="extract"><span class="extract-syntax">http:</span></span>
|
||||
<span class="extract"><span class="extract-syntax">https:</span></span> and <span class="extract"><span class="extract-syntax">file:</span></span> are by far the most commonly used.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Inform uses two non-standard ones in these internal pages, and so the GUI app
|
||||
must implement them for its embedded web engine:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) <span class="extract"><span class="extract-syntax">source:</span></span> is used in link <span class="extract"><span class="extract-syntax">href</span></span>s to make source text references — see <a href="2-sl.html" class="internal">Source Links</a>;
|
||||
</li><li>(b) <span class="extract"><span class="extract-syntax">inform:</span></span> is used both for links to internal or external pages generated
|
||||
by Inform, and also for image <span class="extract"><span class="extract-syntax">src</span></span>s. It behaves just like <span class="extract"><span class="extract-syntax">http:</span></span>, except
|
||||
that it derives the location of a file from the given URL in a different way.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b>The reason <span class="extract"><span class="extract-syntax">inform:</span></span> is needed is that HTML files generated by Inform have
|
||||
no way to know the relative URLs necessary to access e.g. icon images for
|
||||
the World index, which will be in different places in the file system on
|
||||
different Inform apps. More formally, the specification of <span class="extract"><span class="extract-syntax">inform:</span></span> is that —
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) <span class="extract"><span class="extract-syntax">inform://...</span></span> is interpreted as a reference to one of the built-in images,
|
||||
i.e., to wherever the app has internally stashed the Inform distribution's
|
||||
directory <span class="extract"><span class="extract-syntax">resources/Imagery</span></span>. Barring errors in Inform, or in the app, this
|
||||
should never 404.
|
||||
</li><li>(b) For any path <span class="extract"><span class="extract-syntax">*</span></span>, <span class="extract"><span class="extract-syntax">inform://Extensions/*</span></span> should be fetched as <span class="extract"><span class="extract-syntax">*</span></span> in the
|
||||
external resources area — that is, the place to which the app is installing
|
||||
new extensions. If no file was found, the link should simply do nothing:
|
||||
the application is required not to produce a 404 error page, or to
|
||||
blank out the page currently showing.
|
||||
</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprevoff">❮</li><li class="progresscurrentchapter">P</li><li class="progresscurrent">wtmd</li><li class="progresschapter"><a href="1-hm.html">1</a></li><li class="progresschapter"><a href="2-sl.html">2</a></li><li class="progressnext"><a href="1-hm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -52,10 +52,21 @@
|
|||
</nav>
|
||||
<main role="main">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Shared Modules</a></li><li><b>html</b></li></ul>
|
||||
<p class="purpose">HTML and Javascript generation tools. This is version 1.</p>
|
||||
<p class="purpose">Support for HTML problem, index and extension documentation pages. This is version 1.</p>
|
||||
<hr>
|
||||
<div class="contentspage">
|
||||
<ul class="chapterlist">
|
||||
<li>
|
||||
<p class="chapterentry"><a name="P"></a>
|
||||
<span class="chaptertitle">Preliminaries</span></p>
|
||||
<ul class="sectionlist">
|
||||
<li>
|
||||
<p class="sectionentry"><a href="P-wtmd.html">
|
||||
<spon class="sectiontitle">What This Module Does</span></a> -
|
||||
<span class="sectionpurpose">An overview of the html module's role and abilities.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a name="1"></a>
|
||||
<span class="chaptertitle">Chapter 1: Starting Up</span></p>
|
||||
|
@ -69,23 +80,23 @@
|
|||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a name="2"></a>
|
||||
<span class="chaptertitle">Chapter 2: HTML</span></p>
|
||||
<p class="chapterpurpose">HTML and JavaScript generation.</p>
|
||||
<span class="chaptertitle">Chapter 2: Intranet</span></p>
|
||||
<p class="chapterpurpose">Non-standard HTML utility functions for generating the Inform app intranets.</p>
|
||||
<ul class="sectionlist">
|
||||
<li>
|
||||
<p class="sectionentry"><a href="2-hf.html">
|
||||
<spon class="sectiontitle">HTML Files</span></a> -
|
||||
<span class="sectionpurpose">To provide utilities for writing HTML files such as the problems report, the extension documentation, the index files and so forth.</span></p>
|
||||
<p class="sectionentry"><a href="2-sl.html">
|
||||
<spon class="sectiontitle">Source Links</span></a> -
|
||||
<span class="sectionpurpose">To provide HTML links to an Inform source text, using the non-standard "source" protocol.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="2-jp.html">
|
||||
<spon class="sectiontitle">Javascript Pastes</span></a> -
|
||||
<span class="sectionpurpose">To write valid HTML for a paste icon which, when clicked, calls a Javascript function which will paste Inform source text into the Source panel of the application.</span></p>
|
||||
<p class="sectionentry"><a href="2-pb.html">
|
||||
<spon class="sectiontitle">Paste Buttons</span></a> -
|
||||
<span class="sectionpurpose">HTML for a button which, when clicked, pastes Inform source text into the Source panel of the application, or opens a file or folder on the host computer.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="2-hd.html">
|
||||
<spon class="sectiontitle">HTML Documentation</span></a> -
|
||||
<span class="sectionpurpose">To translate a passage of source text into HTML-format documentation, for use in the automatically generated documentation pages on each installed extension.</span></p>
|
||||
<p class="sectionentry"><a href="2-dr.html">
|
||||
<spon class="sectiontitle">Documentation Renderer</span></a> -
|
||||
<span class="sectionpurpose">To render a passage of extension documentation as HTML.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
|
@ -794,12 +794,12 @@ art and see that its dimensions conform to Treaty of Babel requirements.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">rel</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Filenames::to_text_relative</span><span class="plain-syntax">(</span><span class="identifier-syntax">rel</span><span class="plain-syntax">, </span><span class="identifier-syntax">af</span><span class="plain-syntax">-></span><span class="element-syntax">name_of_original_file</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Projects::materials_path</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::project</span><span class="plain-syntax">()));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::write_xml_safe_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::write_xml_safe_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">rel</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</leafname>\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">af</span><span class="plain-syntax">-></span><span class="element-syntax">brief_description</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<description>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::write_xml_safe_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">af</span><span class="plain-syntax">-></span><span class="element-syntax">brief_description</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::write_xml_safe_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">af</span><span class="plain-syntax">-></span><span class="element-syntax">brief_description</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</description>\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">OUTDENT</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</auxiliary>\n"</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -1226,7 +1226,7 @@ which are bordered and coloured single-cell tables.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">, </span><span class="string-syntax">"style=\"font-size:%dpx;\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">HTML_MAP_FONT_SIZE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">abbrev</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::char_out</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::put</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">HTML_MAP_FONT_SIZE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
|
|
|
@ -1637,7 +1637,7 @@ it already turns up under its owner.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_add_to_World_index</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_add_to_World_index</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">O</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">O</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">O</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_thing</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="3-sm.html#SP30" class="function-link"><span class="function-syntax">PL::Spatial::progenitor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">O</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<i>initial location:</i> "</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -3243,7 +3243,7 @@ can make use of the following:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="3-sm2.html#SP8_16" class="function-link"><span class="function-syntax">PL::SpatialMap::room_exit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, &</span><span class="identifier-syntax">D</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">S</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">D</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">icon</span><span class="plain-syntax"> = </span><span class="string-syntax">"e_arrow"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">S</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">D</span><span class="plain-syntax">)) </span><span class="identifier-syntax">icon</span><span class="plain-syntax"> = </span><span class="string-syntax">"e_arrow_door"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">D</span><span class="plain-syntax">) </span><span class="identifier-syntax">icon</span><span class="plain-syntax"> = </span><span class="string-syntax">"e_arrow_door_blocked"</span><span class="plain-syntax">;</span>
|
||||
|
@ -3291,7 +3291,7 @@ can make use of the following:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">DW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">dir</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">); </span><span class="comment-syntax"> name of the direction</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">k</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<i>add:</i> "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"; "</span><span class="plain-syntax">);</span>
|
||||
|
@ -3308,7 +3308,7 @@ can make use of the following:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">RW</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="string-syntax">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">RW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="string-syntax">"here"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="string-syntax">" is .[=0x000A=]"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">DW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -215,7 +215,7 @@ fact, end.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::anchor_numbered</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">sc</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<b>The <i>%+W</i> scene</b>"</span><span class="plain-syntax">, </span><a href="3-scn.html#SP13" class="function-link"><span class="function-syntax">PL::Scenes::get_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">ParseTree::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-></span><span class="element-syntax">scene_declared_at</span><span class="plain-syntax">)));</span>
|
||||
|
@ -229,7 +229,7 @@ fact, end.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"The Entire Game scene is built-in. It is going on whenever play is "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"going on. (It is recurring so that if the story ends, but then resumes, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"it too will end but then begin again.)"</span><span class="plain-syntax">);</span>
|
||||
|
@ -245,11 +245,11 @@ fact, end.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rulebooks::is_empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rulebooks::scene_context</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">)) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rbc</span><span class="plain-syntax">++ == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<i>During this scene:</i>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<i>%+W</i>"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-></span><span class="identifier-syntax">primary_name</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ignore_me</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Rulebooks::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rulebooks::scene_context</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">), &</span><span class="identifier-syntax">ignore_me</span><span class="plain-syntax">);</span>
|
||||
|
@ -261,7 +261,7 @@ fact, end.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<i>%s "</span><span class="plain-syntax">, (</span><span class="identifier-syntax">end</span><span class="plain-syntax">==0)?</span><span class="string-syntax">"Begins"</span><span class="plain-syntax">:</span><span class="string-syntax">"Ends"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">end</span><span class="plain-syntax"> >= </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W "</span><span class="plain-syntax">, </span><span class="identifier-syntax">sc</span><span class="plain-syntax">-></span><span class="element-syntax">end_names</span><span class="plain-syntax">[</span><span class="identifier-syntax">end</span><span class="plain-syntax">]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"when:</i> "</span><span class="plain-syntax">);</span>
|
||||
|
@ -325,7 +325,7 @@ fact, end.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Rulebooks::is_empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-></span><span class="element-syntax">end_rulebook</span><span class="plain-syntax">[</span><span class="identifier-syntax">end</span><span class="plain-syntax">], </span><span class="identifier-syntax">Rulebooks::no_rule_context</span><span class="plain-syntax">()) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<i>What happens:</i>"</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ignore_me</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Rulebooks::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">sc</span><span class="plain-syntax">-></span><span class="element-syntax">end_rulebook</span><span class="plain-syntax">[</span><span class="identifier-syntax">end</span><span class="plain-syntax">], </span><span class="string-syntax">""</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rulebooks::no_rule_context</span><span class="plain-syntax">(), &</span><span class="identifier-syntax">ignore_me</span><span class="plain-syntax">);</span>
|
||||
|
@ -351,7 +351,7 @@ on the initial call when <span class="extract"><span class="extract-syntax">dept
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Scenes::Index::index_from_scene</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">PL::Scenes::Index::index_from_scene</span></span>:<br/><a href="3-tm2.html#SP1_2">§1.2</a>, <a href="3-tm2.html#SP2_5">§2.5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">depth</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">end</span><span class="plain-syntax">, </span><span class="reserved-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sc_from</span><span class="plain-syntax">, </span><span class="reserved-syntax">scene</span><span class="plain-syntax"> **</span><span class="identifier-syntax">sorted</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">nr</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm2.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Indicate the route by which this scene was reached</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm2.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Name the scene in the table, italicised if we've seen it already</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-></span><span class="element-syntax">indexed</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -1443,12 +1443,12 @@ used in sorting algorithms.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">valid</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">valid</span><span class="plain-syntax"> != </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">valid</span><span class="plain-syntax"> != </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">valid</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"III.1 - Object To Which Rule Applies"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.1 - Object To Which Rule Applies"</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">parameter_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">parameter_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"III.2.1 - Action/Where/Going In Exotic Ways"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.2.1 - Action/Where/Going In Exotic Ways"</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> = </span><a href="4-ap.html#SP27" class="function-link"><span class="function-syntax">PL::Actions::Patterns::ap_count_going</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">); </span><span class="identifier-syntax">rct2</span><span class="plain-syntax"> = </span><a href="4-ap.html#SP27" class="function-link"><span class="function-syntax">PL::Actions::Patterns::ap_count_going</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> > </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
|
@ -1463,7 +1463,7 @@ used in sorting algorithms.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">through_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">through_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"III.2.2 - Action/Where/Room Where Action Takes Place"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.2.2 - Action/Where/Room Where Action Takes Place"</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> = </span><a href="4-ap.html#SP27" class="function-link"><span class="function-syntax">PL::Actions::Patterns::ap_count_rooms</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">); </span><span class="identifier-syntax">rct2</span><span class="plain-syntax"> = </span><a href="4-ap.html#SP27" class="function-link"><span class="function-syntax">PL::Actions::Patterns::ap_count_rooms</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rct1</span><span class="plain-syntax"> > </span><span class="identifier-syntax">rct2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
|
@ -1496,22 +1496,22 @@ used in sorting algorithms.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">to_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">to_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"III.2.3 - Action/Where/In The Presence Of"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.2.3 - Action/Where/In The Presence Of"</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">presence_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">presence_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"III.2.4 - Action/Where/Other Optional Clauses"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.2.4 - Action/Where/Other Optional Clauses"</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="4-ap.html#SP5" class="function-link"><span class="function-syntax">PL::Actions::Patterns::compare_specificity_of_apoc_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"III.3.1 - Action/What/Second Thing Acted On"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.3.1 - Action/What/Second Thing Acted On"</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">second_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">second_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"III.3.2 - Action/What/Thing Acted On"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.3.2 - Action/What/Thing Acted On"</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">noun_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">noun_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||
|
@ -1519,27 +1519,27 @@ used in sorting algorithms.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">nowhere_flag</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">nowhere_flag</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">nowhere_flag</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">nowhere_flag</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"III.3.3 - Action/What/Actor Performing Action"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.3.3 - Action/What/Actor Performing Action"</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::compare_specificity</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">actor_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">actor_spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"III.4.1 - Action/How/What Happens"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.4.1 - Action/How/What Happens"</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><a href="4-anl.html#SP10" class="function-link"><span class="function-syntax">PL::Actions::Lists::compare_specificity</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">action</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">action</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"III.5.1 - Action/When/Duration"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.5.1 - Action/When/Duration"</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Occurrence::compare_specificity</span><span class="plain-syntax">(&(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">duration</span><span class="plain-syntax">), &(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">duration</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"III.5.2 - Action/When/Circumstances"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.5.2 - Action/When/Circumstances"</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Conditions::compare_specificity_of_CONDITIONs</span><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">-></span><span class="element-syntax">when</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap2</span><span class="plain-syntax">-></span><span class="element-syntax">when</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="string-syntax">"III.6.1 - Action/Name/Is This Named"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c_s_stage_law</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"III.6.1 - Action/Name/Is This Named"</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-ap.html#SP5" class="function-link"><span class="function-syntax">PL::Actions::Patterns::is_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap1</span><span class="plain-syntax">)) && (</span><a href="4-ap.html#SP5" class="function-link"><span class="function-syntax">PL::Actions::Patterns::is_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ap2</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -1557,7 +1557,7 @@ the HTML index.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">trueverb</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">VW</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">trueverb</span><span class="plain-syntax">, </span><span class="string-syntax">"%W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">VW</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&quot;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ai.html#SP3" class="function-link"><span class="function-syntax">PL::Actions::Index::verb_definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">gl</span><span class="plain-syntax">-></span><span class="element-syntax">original_text</span><span class="plain-syntax">), </span><span class="identifier-syntax">trueverb</span><span class="plain-syntax">, </span><span class="identifier-syntax">VW</span><span class="plain-syntax">);</span>
|
||||
|
@ -1585,7 +1585,7 @@ the HTML index.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">trueverb</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">VW</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">trueverb</span><span class="plain-syntax">, </span><span class="string-syntax">"%W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">VW</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax">++ == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"="</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"or"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" &quot;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ai.html#SP3" class="function-link"><span class="function-syntax">PL::Actions::Index::verb_definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
|
|
|
@ -493,7 +493,7 @@ names (e.g., "suitable colour").
|
|||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Parsing::Verbs::index_tokens_for</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">special</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">where</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">grammar_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">defns</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">help</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\"["</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">special</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">special</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"]\""</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -150,7 +150,9 @@ new index file for output.
|
|||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ifs.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Set the current index page</span><span class="named-paragraph-number">4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::html_header</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::header</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Supervisor::file_from_installation</span><span class="plain-syntax">(</span><span class="identifier-syntax">CSS_FOR_STANDARD_PAGES_IRES</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Supervisor::file_from_installation</span><span class="plain-syntax">(</span><span class="identifier-syntax">JAVASCRIPT_FOR_STANDARD_PAGES_IRES</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">index_file_counter</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get_first_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">) == </span><span class="character-syntax">'<'</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ifs.html#SP5" class="function-link"><span class="function-syntax">Index::index_banner_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Details"</span><span class="plain-syntax">,</span>
|
||||
|
@ -419,6 +421,8 @@ and simpler navigation on the Actions detail pages.
|
|||
<ul class="endnotetexts"><li>This code is used in <a href="2-ifs.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. So here goes with the CSS and Javascript. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">ADDITIONAL_SCRIPTING_HTML_CALLBACK</span><span class="plain-syntax"> </span><a href="2-ifs.html#SP6" class="function-link"><span class="function-syntax">Index::scripting</span></a>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::scripting</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_index_page</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
|
@ -909,7 +913,7 @@ calling <span class="extract"><span class="extract-syntax">Index::complete</span
|
|||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::close_index_file</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Index::close_index_file</span></span>:<br/><a href="2-ifs.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ifl</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::html_footer</span><span class="plain-syntax">(</span><span class="identifier-syntax">ifl</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::footer</span><span class="plain-syntax">(</span><span class="identifier-syntax">ifl</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_CLOSE</span><span class="plain-syntax">(</span><span class="identifier-syntax">ifl</span><span class="plain-syntax">); </span><span class="identifier-syntax">ifl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -952,7 +956,7 @@ the source text in the application.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::html_source_link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">sl</span><span class="plain-syntax">, </span><span class="identifier-syntax">nonbreaking_space</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SourceLinks::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">sl</span><span class="plain-syntax">, </span><span class="identifier-syntax">nonbreaking_space</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11"></a><b>§11. Links to detail pages. </b>The "Beneath" icon is used for links to details pages seen as beneath the
|
||||
|
@ -1030,7 +1034,7 @@ code.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::extra_div_open</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indent</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">colour</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">, </span><span class="string-syntax">"id=\"extra%d\" style=\"display: none;\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">indent</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">indent</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_coloured_box</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">colour</span><span class="plain-syntax">, </span><span class="identifier-syntax">ROUND_BOX_TOP</span><span class="plain-syntax">+</span><span class="identifier-syntax">ROUND_BOX_BOTTOM</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -1042,7 +1046,7 @@ code.
|
|||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::extra_div_open_nested</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indent</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">, </span><span class="string-syntax">"id=\"extra%d\" style=\"display: none;\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">indent</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">indent</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::extra_div_close_nested</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -110,27 +110,11 @@ any sentence in one go:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">redirected_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">from</span><span class="plain-syntax">; </span><span class="identifier-syntax">redirected_to_A</span><span class="plain-syntax"> = </span><span class="identifier-syntax">A</span><span class="plain-syntax">; </span><span class="identifier-syntax">redirected_to_B</span><span class="plain-syntax"> = </span><span class="identifier-syntax">B</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b>A special escape sequence, marked by starting and finishing with a character
|
||||
which otherwise can never occur, is expanded to a source code link. If we used
|
||||
an asterisk to denote this, then a source reference is fed into
|
||||
<span class="extract"><span class="extract-syntax">HTMLFiles::char_out</span></span> as the following stream of characters:
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b>These two special character codes are used as a temporary measure to
|
||||
mask out angle brackets which we don't want to interpret as HTML:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">*source text*Source/story.ni*14*</span></span>
|
||||
</p>
|
||||
|
||||
<p class="commentary">(with <span class="extract"><span class="extract-syntax">SOURCE_REF_CHAR</span></span> used in place of the asterisk).
|
||||
</p>
|
||||
|
||||
<p class="commentary">But of course we don't use an asterisk as trigger — we use character <span class="extract"><span class="extract-syntax">F0</span></span>.
|
||||
Arguably this is dodgy, since the character is legal in ISO Latin-1. But it
|
||||
is a lower-case Icelandic eth, which is not allowed in unquoted Inform 7 source
|
||||
text (because of being absent from the ZSCII character set).
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="character-syntax">'\xf0'</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">FORCE_NEW_PARA_CHAR</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="character-syntax">'\xd0'</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PROTECTED_LT_CHAR</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="character-syntax">'\x01'</span>
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">PROTECTED_LT_CHAR</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="character-syntax">'\x01'</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PROTECTED_GT_CHAR</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="character-syntax">'\x02'</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -141,7 +125,7 @@ text (because of being absent from the ZSCII character set).
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">referred</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">file</span><span class="plain-syntax">, </span><span class="string-syntax">"%f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">TextFromFiles::get_filename</span><span class="plain-syntax">(</span><span class="identifier-syntax">referred</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">HTML_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HTMLFiles::get_link_abbreviation_path</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HTML::get_link_abbreviation_path</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">project_prefix</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">project_prefix</span><span class="plain-syntax">, </span><span class="string-syntax">"%p"</span><span class="plain-syntax">, </span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
|
||||
|
@ -169,10 +153,10 @@ text (because of being absent from the ZSCII character set).
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, </span><span class="string-syntax">"' %c%S%c%S%c%d%c"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">paraphrase</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">file</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::location</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">).</span><span class="identifier-syntax">line_number</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">paraphrase</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">file</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::location</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">).</span><span class="identifier-syntax">line_number</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">redirected_sentence</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">redirected_to_A</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">redirected_to_B</span><span class="plain-syntax">) &&</span>
|
||||
|
@ -212,7 +196,7 @@ HTML, they are dealt with elsewhere.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pl1.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">In HTML mode, convert drawing-your-attention arrows</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pl1.html#SP5_2" class="named-paragraph-link"><span class="named-paragraph">In plain text mode, remove bold and italic HTML tags</span><span class="named-paragraph-number">5.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">html_flag</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">html_flag</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="identifier-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pl1.html#SP5_3" class="named-paragraph-link"><span class="named-paragraph">Issue plain text paraphrase of source reference</span><span class="named-paragraph-number">5.3</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pl1.html#SP5_4" class="named-paragraph-link"><span class="named-paragraph">Output single character of problem message</span><span class="named-paragraph-number">5.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -328,10 +312,10 @@ and Windows caused by the slashes going the wrong way, and so on.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"("</span><span class="plain-syntax">); </span><span class="identifier-syntax">line_width</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, ++</span><span class="identifier-syntax">i</span><span class="plain-syntax">) != </span><span class="constant-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-pl1.html#SP5_4" class="named-paragraph-link"><span class="named-paragraph">Output single character of problem message</span><span class="named-paragraph-number">5.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, ++</span><span class="identifier-syntax">i</span><span class="plain-syntax">) != </span><span class="constant-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">) ;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, ++</span><span class="identifier-syntax">i</span><span class="plain-syntax">) != </span><span class="identifier-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-pl1.html#SP5_4" class="named-paragraph-link"><span class="named-paragraph">Output single character of problem message</span><span class="named-paragraph-number">5.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, ++</span><span class="identifier-syntax">i</span><span class="plain-syntax">) != </span><span class="identifier-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">) ;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", line "</span><span class="plain-syntax">); </span><span class="identifier-syntax">line_width</span><span class="plain-syntax"> += </span><span class="constant-syntax">7</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, ++</span><span class="identifier-syntax">i</span><span class="plain-syntax">) != </span><span class="constant-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-pl1.html#SP5_4" class="named-paragraph-link"><span class="named-paragraph">Output single character of problem message</span><span class="named-paragraph-number">5.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, ++</span><span class="identifier-syntax">i</span><span class="plain-syntax">) != </span><span class="identifier-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-pl1.html#SP5_4" class="named-paragraph-link"><span class="named-paragraph">Output single character of problem message</span><span class="named-paragraph-number">5.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">")"</span><span class="plain-syntax">); </span><span class="identifier-syntax">line_width</span><span class="plain-syntax">++;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pl1.html#SP5">§5</a>.</li></ul>
|
||||
|
@ -351,7 +335,7 @@ and Windows caused by the slashes going the wrong way, and so on.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">PROTECTED_LT_CHAR</span><span class="plain-syntax">) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">(</span><span class="character-syntax">'<'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">PROTECTED_GT_CHAR</span><span class="plain-syntax">) </span><span class="identifier-syntax">PUT</span><span class="plain-syntax">(</span><span class="character-syntax">'>'</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">html_flag</span><span class="plain-syntax">) </span><span class="identifier-syntax">PROBLEMS_HTML_EMITTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> != </span><span class="constant-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> != </span><span class="constant-syntax">FORCE_NEW_PARA_CHAR</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%c"</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> != </span><span class="identifier-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> != </span><span class="identifier-syntax">FORCE_NEW_PARA_CHAR</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%c"</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pl1.html#SP5">§5</a>, <a href="2-pl1.html#SP5_3">§5.3</a> (twice).</li></ul>
|
||||
|
@ -367,7 +351,7 @@ after the sequence of whitespace.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">word_width</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((!</span><span class="identifier-syntax">Characters::is_whitespace</span><span class="plain-syntax">(</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, </span><span class="identifier-syntax">l</span><span class="plain-syntax">))) && (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, </span><span class="identifier-syntax">l</span><span class="plain-syntax">) != </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> && (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, </span><span class="identifier-syntax">l</span><span class="plain-syntax">) != </span><span class="constant-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> && (</span><span class="identifier-syntax">Str::get_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, </span><span class="identifier-syntax">l</span><span class="plain-syntax">) != </span><span class="identifier-syntax">SOURCE_REF_CHAR</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">l</span><span class="plain-syntax">++, </span><span class="identifier-syntax">word_width</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">line_width</span><span class="plain-syntax"> + </span><span class="identifier-syntax">word_width</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax"> >= </span><span class="constant-syntax">PROBLEM_WORD_WRAP_WIDTH</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</span><span class="plain-syntax">); </span><span class="identifier-syntax">line_width</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -151,11 +151,8 @@ the two possibilities.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">problem_headings</span><span class="plain-syntax">[</span><span class="constant-syntax">NO_HEADING_LEVELS</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">f</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">problem_count</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-pl3.html#SP1" class="function-link"><span class="function-syntax">Problems::Issue::internal_errors_have_occurred</span></a><span class="plain-syntax">())</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::html_outcome_image</span><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="string-syntax">"ni_failed_badly"</span><span class="plain-syntax">, </span><span class="string-syntax">"Failed"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::html_outcome_image</span><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="string-syntax">"ni_failed"</span><span class="plain-syntax">, </span><span class="string-syntax">"Failed"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">FIRST_PROBLEM_CALLBACK</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">FIRST_PROBLEM_CALLBACK</span><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="constant-syntax">NO_HEADING_LEVELS</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">last_problem_headings</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -473,7 +470,7 @@ on when the shortened form is the one being issued).
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">message</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] == </span><span class="character-syntax">'%'</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">message</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">+1]) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'P'</span><span class="plain-syntax">: </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, </span><span class="constant-syntax">FORCE_NEW_PARA_CHAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'P'</span><span class="plain-syntax">: </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, </span><span class="identifier-syntax">FORCE_NEW_PARA_CHAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">++; </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">message</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">+1])) {</span>
|
||||
|
|
|
@ -74,7 +74,7 @@ occur, whatever the provocation: if they do, they are symptoms of a bug.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error_thrown</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::internal_errors_have_occurred</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::internal_errors_have_occurred</span></span>:<br/>Problems, Level 2 - <a href="2-pl2.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::internal_errors_have_occurred</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error_thrown</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -100,7 +100,7 @@ code 1:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::internal_error_end</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::internal_error_end</span></span>:<br/><a href="2-pl3.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::internal_error_end</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::internal_error_end</span></span>:<br/><a href="2-pl3.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::write_reports</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">debugger_mode</span><span class="plain-syntax">) </span><a href="2-pl0.html#SP2" class="function-link"><span class="function-syntax">Problems::Fatal::force_crash</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -116,7 +116,7 @@ to be cautious.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::internal_error_fn</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::internal_error_fn</span></span>:<br/><a href="2-pl3.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">filename</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">linenum</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::internal_error_fn</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::internal_error_fn</span></span>:<br/><a href="2-pl3.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">filename</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">linenum</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error_thrown</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl3.html#SP4" class="function-link"><span class="function-syntax">Problems::Issue::internal_error_tu_fn</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">filename</span><span class="plain-syntax">, </span><span class="identifier-syntax">linenum</span><span class="plain-syntax">);</span>
|
||||
|
@ -134,7 +134,7 @@ to be cautious.
|
|||
<span class="plain-syntax"> </span><a href="2-pl3.html#SP3" class="function-link"><span class="function-syntax">Problems::Issue::internal_error_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::internal_error_tu_fn</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::internal_error_tu_fn</span></span>:<br/><a href="2-pl3.html#SP2">§2</a>, <a href="2-pl3.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">filename</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">linenum</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::internal_error_tu_fn</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::internal_error_tu_fn</span></span>:<br/><a href="2-pl3.html#SP2">§2</a>, <a href="2-pl3.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">filename</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">linenum</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error_thrown</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">filename</span><span class="plain-syntax">);</span>
|
||||
|
@ -147,7 +147,7 @@ to be cautious.
|
|||
<span class="plain-syntax"> </span><a href="2-pl3.html#SP3" class="function-link"><span class="function-syntax">Problems::Issue::internal_error_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::internal_error_tu_fn_S</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::internal_error_tu_fn_S</span></span>:<br/><a href="2-pl3.html#SP5">§5</a>, <a href="2-pl3.html#SP6">§6</a>, <a href="2-pl3.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">filename</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">linenum</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::internal_error_tu_fn_S</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::internal_error_tu_fn_S</span></span>:<br/><a href="2-pl3.html#SP5">§5</a>, <a href="2-pl3.html#SP6">§6</a>, <a href="2-pl3.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">filename</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">linenum</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error_thrown</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_stream</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">filename</span><span class="plain-syntax">);</span>
|
||||
|
@ -174,7 +174,7 @@ failure of such an invariant produces a form of internal error called a
|
|||
<span class="plain-syntax"> </span><a href="2-pl3.html#SP4" class="function-link"><span class="function-syntax">Problems::Issue::internal_error_fn</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">filename</span><span class="plain-syntax">, </span><span class="identifier-syntax">linenum</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::nodal_error_fn_S</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::nodal_error_fn_S</span></span>:<br/><a href="2-pl3.html#SP6">§6</a>, <a href="2-pl3.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">filename</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">linenum</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::nodal_error_fn_S</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::nodal_error_fn_S</span></span>:<br/><a href="2-pl3.html#SP6">§6</a>, <a href="2-pl3.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">filename</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">linenum</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Internal nodal error at:\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"$T\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl3.html#SP4" class="function-link"><span class="function-syntax">Problems::Issue::internal_error_tu_fn_S</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">filename</span><span class="plain-syntax">, </span><span class="identifier-syntax">linenum</span><span class="plain-syntax">);</span>
|
||||
|
@ -184,7 +184,7 @@ failure of such an invariant produces a form of internal error called a
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::nodal_check</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::nodal_check</span></span>:<br/><a href="2-pl3.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">node_type_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">node_type_required</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">filename</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">linenum</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::nodal_check</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::nodal_check</span></span>:<br/><a href="2-pl3.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="identifier-syntax">node_type_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">node_type_required</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">filename</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">linenum</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">internal_message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">internal_message</span><span class="plain-syntax">, </span><span class="string-syntax">"NULL node found where type %s expected"</span><span class="plain-syntax">,</span>
|
||||
|
@ -207,7 +207,7 @@ macro, which invokes the following:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::internal_error_on_node_type_fn</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::internal_error_on_node_type_fn</span></span>:<br/><a href="2-pl3.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::internal_error_on_node_type_fn</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::internal_error_on_node_type_fn</span></span>:<br/><a href="2-pl3.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">filename</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">linenum</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">internal_message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
|
@ -297,13 +297,13 @@ another problem routine, using <span class="extract"><span class="extract-syntax
|
|||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sigil_of_latest_unlinked_problem</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sigil_of_latest_problem</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::problem_documentation_links</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::problem_documentation_links</span></span>:<br/>Problems, Level 2 - <a href="2-pl2.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::problem_documentation_links</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::problem_documentation_links</span></span>:<br/>Problems, Level 2 - <a href="2-pl2.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">sigil_of_latest_unlinked_problem</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">DOCUMENTATION_REFERENCES_PRESENT</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">chap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">sec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">leaf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Index::DocReferences::link_if_possible_once</span><span class="plain-syntax">(</span><span class="identifier-syntax">sigil_of_latest_unlinked_problem</span><span class="plain-syntax">, &</span><span class="identifier-syntax">chap</span><span class="plain-syntax">, &</span><span class="identifier-syntax">sec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"href=inform:/%w.html"</span><span class="plain-syntax">, </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=0 src=inform:/doc_images/help.png"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
|
@ -453,7 +453,7 @@ that isn't surprising, since it simply quotes the entire sentence at fault
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::sentence_problem</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::sentence_problem</span></span>:<br/><a href="2-pl3.html#SP19">§19</a>, <a href="2-pl3.html#SP20">§20</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="constant-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::Issue::sentence_problem</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Problems::Issue::sentence_problem</span></span>:<br/><a href="2-pl3.html#SP19">§19</a>, <a href="2-pl3.html#SP20">§20</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="constant-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_source</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -319,7 +319,7 @@ it doesn't know about, that will be one of ourse, so it should call the followin
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PIPELINE_FILE_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_pipeline_file</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PIPELINE_VARIABLE_CLSW:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-ic.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Set a pipeline variable</span><span class="named-paragraph-number">7.1</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">RNG_CLSW:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-ic.html#SP7_2" class="named-paragraph-link"><span class="named-paragraph">Seed the random number generator</span><span class="named-paragraph-number">7.2</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CASE_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::set_source_link_case</span><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CASE_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">SourceLinks::set_case</span><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -709,7 +709,7 @@ but they're just plain old files, and are not managed by Inbuild as "copies".
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">EXTENSION_DOCUMENTATION_MODEL_IRES</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::file_from_installation</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Supervisor::file_from_installation</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1">§1.1</a><br/>Individual Pages - <a href="7-ip2.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ires</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::file_from_installation</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Supervisor::file_from_installation</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1">§1</a><br/>Individual Pages - <a href="7-ip2.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ires</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><a href="1-ic.html#SP14" class="function-link"><span class="function-syntax">Supervisor::internal</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">Errors::fatal</span><span class="plain-syntax">(</span><span class="string-syntax">"Did not set -internal when calling"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">misc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">location</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Miscellany"</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -194,7 +194,7 @@ output.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CopyErrors::write</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">CopyErrors::write</span></span>:<br/>Copies - <a href="2-cps.html#SP5">§5</a><br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_4">§1.2.2.1.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">copy_error</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CE</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CopyErrors::write</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">CopyErrors::write</span></span>:<br/>Copies - <a href="2-cps.html#SP5">§5</a><br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_4">§1.1.2.1.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">copy_error</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="element-syntax">error_category</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">OPEN_FAILED_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"unable to open file %f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="element-syntax">details_file</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">EXT_MISWORDED_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"extension misworded: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="element-syntax">details</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -104,7 +104,7 @@ see below for why. Lower-tag-numbered origins are better than later ones.
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">INTERNAL_NEST_TAG</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::get_tag</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Nests::get_tag</span></span>:<br/><a href="2-nst.html#SP9">§9</a><br/>Inbuild Control - <a href="1-ic.html#SP13">§13</a><br/>Inform7 Skill - <a href="3-is2.html#SP1">§1</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a><br/>Census - <a href="7-cns.html#SP3">§3</a>, <a href="7-cns.html#SP5">§5</a>, <a href="7-cns.html#SP7_1">§7.1</a><br/>Index Pages - <a href="7-ip.html#SP1_2_1_1">§1.2.1.1</a>, <a href="7-ip.html#SP1_2_2_1_6_4_3">§1.2.2.1.6.4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::get_tag</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Nests::get_tag</span></span>:<br/><a href="2-nst.html#SP9">§9</a><br/>Inbuild Control - <a href="1-ic.html#SP13">§13</a><br/>Inform7 Skill - <a href="3-is2.html#SP1">§1</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a><br/>Census - <a href="7-cns.html#SP3">§3</a>, <a href="7-cns.html#SP5">§5</a>, <a href="7-cns.html#SP7_1">§7.1</a><br/>Index Pages - <a href="7-ip.html#SP1_1_1_1">§1.1.1.1</a>, <a href="7-ip.html#SP1_1_2_1_6_4_3">§1.1.2.1.6.4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">tag_value</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -293,7 +293,7 @@ each extension's page is generated from its <span class="extract"><span class="e
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::begin_extension_link</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Works::begin_extension_link</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_4_1">§1.2.2.1.6.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rubric</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::begin_extension_link</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Works::begin_extension_link</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_1">§1.1.2.1.6.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rubric</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">, </span><span class="string-syntax">"href='inform://Extensions/Extensions/"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-wrk.html#SP11" class="function-link"><span class="function-syntax">Works::escape_apostrophes</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">, </span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">);</span>
|
||||
|
@ -318,7 +318,7 @@ each extension's page is generated from its <span class="extract"><span class="e
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::end_extension_link</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Works::end_extension_link</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_4_1">§1.2.2.1.6.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::end_extension_link</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Works::end_extension_link</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_1">§1.1.2.1.6.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
|
|
@ -103,7 +103,7 @@ later on, as needed, just for extensions of interest: see below.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionManager::path_within_nest</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ExtensionManager::path_within_nest</span></span>:<br/><a href="4-em.html#SP6">§6</a>, <a href="4-em.html#SP7">§7</a><br/>Census - <a href="7-cns.html#SP3">§3</a><br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_4_3">§1.2.2.1.6.4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionManager::path_within_nest</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ExtensionManager::path_within_nest</span></span>:<br/><a href="4-em.html#SP6">§6</a>, <a href="4-em.html#SP7">§7</a><br/>Census - <a href="7-cns.html#SP3">§3</a><br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_3">§1.1.2.1.6.4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no nest"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">location</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Extensions"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -113,7 +113,7 @@ which stores data about extensions used by the Inform compiler.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionManager::from_copy</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ExtensionManager::from_copy</span></span>:<br/><a href="4-em.html#SP8">§8</a>, <a href="4-em.html#SP9">§9</a><br/>Extension Services - <a href="5-es.html#SP8">§8</a><br/>Project Services - <a href="5-ps2.html#SP26">§26</a><br/>Source Text - <a href="6-st.html#SP12">§12</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a><br/>Dictionary - <a href="7-dct.html#SP9">§9</a><br/>Census - <a href="7-cns.html#SP5">§5</a>, <a href="7-cns.html#SP6">§6</a><br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_4_4">§1.2.2.1.6.4.4</a><br/>Individual Pages - <a href="7-ip2.html#SP2_1">§2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionManager::from_copy</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ExtensionManager::from_copy</span></span>:<br/><a href="4-em.html#SP8">§8</a>, <a href="4-em.html#SP9">§9</a><br/>Extension Services - <a href="5-es.html#SP8">§8</a><br/>Project Services - <a href="5-ps2.html#SP26">§26</a><br/>Source Text - <a href="6-st.html#SP12">§12</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a><br/>Dictionary - <a href="7-dct.html#SP9">§9</a><br/>Census - <a href="7-cns.html#SP5">§5</a>, <a href="7-cns.html#SP6">§6</a><br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_4">§1.1.2.1.6.4.4</a><br/>Individual Pages - <a href="7-ip2.html#SP2_1">§2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">C</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">genre</span><span class="plain-syntax"> == </span><span class="identifier-syntax">extension_genre</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">RETRIEVE_POINTER_inform_extension</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">metadata</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -357,7 +357,7 @@ are immutable, and need to be for the extensions dictionary to work.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">sort_usage_date</span><span class="plain-syntax">, </span><span class="identifier-syntax">date</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::get_usage_date</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Extensions::get_usage_date</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_4_4">§1.2.2.1.6.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::get_usage_date</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Extensions::get_usage_date</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_4">§1.1.2.1.6.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">last_usage_date</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -369,7 +369,7 @@ are immutable, and need to be for the extensions dictionary to work.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">word_count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">wc</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::get_word_count</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Extensions::get_word_count</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_4_4">§1.2.2.1.6.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Extensions::get_word_count</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Extensions::get_word_count</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_4">§1.1.2.1.6.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">word_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
|
|
@ -100,7 +100,7 @@ shared search path, for (b) the project's search path.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::internal_path</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::internal_path</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_1_1">§1.2.1.1</a>, <a href="7-ip.html#SP1_2_2_1_6_2_2">§1.2.2.1.6.2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::internal_path</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::internal_path</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_1_1">§1.1.1.1</a>, <a href="7-ip.html#SP1_1_2_1_6_2_2">§1.1.2.1.6.2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">search_list</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">) == </span><span class="constant-syntax">INTERNAL_NEST_TAG</span><span class="plain-syntax">)</span>
|
||||
|
@ -108,7 +108,7 @@ shared search path, for (b) the project's search path.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::external_path</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::external_path</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_1_1">§1.2.1.1</a>, <a href="7-ip.html#SP1_2_2_1_6_2_2">§1.2.2.1.6.2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::external_path</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::external_path</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_1_1">§1.1.1.1</a>, <a href="7-ip.html#SP1_1_2_1_6_2_2">§1.1.2.1.6.2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">search_list</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">) == </span><span class="constant-syntax">EXTERNAL_NEST_TAG</span><span class="plain-syntax">)</span>
|
||||
|
@ -134,18 +134,18 @@ since the <a href="2-nst.html#SP5" class="internal">inbuild_search_result</a> fo
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::ecd_rubric</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::ecd_rubric</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_4_1">§1.2.2.1.6.4.1</a>, <a href="7-ip.html#SP1_2_2_1_6_4_4">§1.2.2.1.6.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::ecd_rubric</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::ecd_rubric</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_4_1">§1.1.2.1.6.4.1</a>, <a href="7-ip.html#SP1_1_2_1_6_4_4">§1.1.2.1.6.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-es.html#SP10" class="function-link"><span class="function-syntax">Extensions::get_rubric</span></a><span class="plain-syntax">(</span><a href="4-em.html#SP4" class="function-link"><span class="function-syntax">ExtensionManager::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::installation_region</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::installation_region</span></span>:<br/><a href="7-cns.html#SP6">§6</a><br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_2">§1.2.2.1.6.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::installation_region</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::installation_region</span></span>:<br/><a href="7-cns.html#SP6">§6</a><br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_2">§1.1.2.1.6.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">nest</span><span class="plain-syntax">) == </span><span class="constant-syntax">MATERIALS_NEST_TAG</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">nest</span><span class="plain-syntax">) == </span><span class="constant-syntax">INTERNAL_NEST_TAG</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">overriding_a_built_in_extension</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::ecd_used</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::ecd_used</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_2_1">§1.2.2.1.6.2.1</a>, <a href="7-ip.html#SP1_2_2_1_6_4_1">§1.2.2.1.6.4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::ecd_used</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::ecd_used</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_6_2_1">§1.1.2.1.6.2.1</a>, <a href="7-ip.html#SP1_1_2_1_6_4_1">§1.1.2.1.6.4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><a href="4-em.html#SP4" class="function-link"><span class="function-syntax">ExtensionManager::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">has_historically_been_used</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -155,7 +155,7 @@ handed to <span class="extract"><span class="extract-syntax">qsort</span></span>
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::compare_ecd_by_title</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::compare_ecd_by_title</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_5">§1.2.2.1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::compare_ecd_by_title</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::compare_ecd_by_title</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_5">§1.1.2.1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e1</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e2</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax"> = </span><a href="4-em.html#SP4" class="function-link"><span class="function-syntax">ExtensionManager::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e1</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
|
||||
|
@ -163,7 +163,7 @@ handed to <span class="extract"><span class="extract-syntax">qsort</span></span>
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-es.html#SP3" class="function-link"><span class="function-syntax">Extensions::compare_by_title</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E2</span><span class="plain-syntax">, </span><span class="identifier-syntax">E1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::compare_ecd_by_author</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::compare_ecd_by_author</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_5">§1.2.2.1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::compare_ecd_by_author</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::compare_ecd_by_author</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_5">§1.1.2.1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e1</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e2</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax"> = </span><a href="4-em.html#SP4" class="function-link"><span class="function-syntax">ExtensionManager::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e1</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
|
||||
|
@ -171,7 +171,7 @@ handed to <span class="extract"><span class="extract-syntax">qsort</span></span>
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-es.html#SP3" class="function-link"><span class="function-syntax">Extensions::compare_by_author</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E2</span><span class="plain-syntax">, </span><span class="identifier-syntax">E1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::compare_ecd_by_installation</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::compare_ecd_by_installation</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_5">§1.2.2.1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::compare_ecd_by_installation</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::compare_ecd_by_installation</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_5">§1.1.2.1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e1</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e2</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax"> = </span><a href="7-cns.html#SP5" class="function-link"><span class="function-syntax">ExtensionCensus::installation_region</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e1</span><span class="plain-syntax">) -</span>
|
||||
|
@ -182,7 +182,7 @@ handed to <span class="extract"><span class="extract-syntax">qsort</span></span>
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-es.html#SP3" class="function-link"><span class="function-syntax">Extensions::compare_by_edition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="identifier-syntax">E2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::compare_ecd_by_date</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::compare_ecd_by_date</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_5">§1.2.2.1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::compare_ecd_by_date</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::compare_ecd_by_date</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_5">§1.1.2.1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e1</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e2</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax"> = </span><a href="4-em.html#SP4" class="function-link"><span class="function-syntax">ExtensionManager::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e1</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
|
||||
|
@ -190,7 +190,7 @@ handed to <span class="extract"><span class="extract-syntax">qsort</span></span>
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-es.html#SP3" class="function-link"><span class="function-syntax">Extensions::compare_by_date</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E1</span><span class="plain-syntax">, </span><span class="identifier-syntax">E2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::compare_ecd_by_length</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::compare_ecd_by_length</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_5">§1.2.2.1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionCensus::compare_ecd_by_length</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::compare_ecd_by_length</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2_1_5">§1.1.2.1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e1</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">e2</span><span class="plain-syntax"> = *((</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax"> = </span><a href="4-em.html#SP4" class="function-link"><span class="function-syntax">ExtensionManager::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">e1</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -525,7 +525,7 @@ fact, the HTML rendering of the dictionary constructed above.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::write_to_HTML</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ExtensionDictionary::write_to_HTML</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2">§1.2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::write_to_HTML</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">ExtensionDictionary::write_to_HTML</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1_2">§1.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = </span><a href="7-dct.html#SP12" class="function-link"><span class="function-syntax">ExtensionDictionary::sort_extension_dictionary</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">n</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">first_letter</span><span class="plain-syntax"> = </span><span class="character-syntax">'a'</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -81,30 +81,18 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax"> = &</span><span class="identifier-syntax">HOMEPAGE_struct</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">STREAM_OPEN_TO_FILE</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">UTF8_ENC</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::declare_as_HTML</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Write the head of the HTML</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Write the body of the HTML</span><span class="named-paragraph-number">1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::header</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Extensions"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP20" class="function-link"><span class="function-syntax">Supervisor::file_from_installation</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CSS_FOR_STANDARD_PAGES_IRES</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP20" class="function-link"><span class="function-syntax">Supervisor::file_from_installation</span></a><span class="plain-syntax">(</span><span class="constant-syntax">JAVASCRIPT_FOR_EXTENSIONS_IRES</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Write the body of the HTML</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_CLOSE</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::footer</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1"></a><b>§1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the head of the HTML</span><span class="named-paragraph-number">1.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1"></a><b>§1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the body of the HTML</span><span class="named-paragraph-number">1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_head</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::title</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Extensions"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::incorporate_javascript</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP20" class="function-link"><span class="function-syntax">Supervisor::file_from_installation</span></a><span class="plain-syntax">(</span><span class="constant-syntax">JAVASCRIPT_FOR_EXTENSIONS_IRES</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::incorporate_CSS</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP20" class="function-link"><span class="function-syntax">Supervisor::file_from_installation</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CSS_FOR_STANDARD_PAGES_IRES</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_head</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2"></a><b>§1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the body of the HTML</span><span class="named-paragraph-number">1.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_body</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::first_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">,</span>
|
||||
|
@ -119,22 +107,21 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Bundles of extra rules or phrases to extend what Inform can do"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_1" class="named-paragraph-link"><span class="named-paragraph">Write the heading details text for the page</span><span class="named-paragraph-number">1.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_1" class="named-paragraph-link"><span class="named-paragraph">Write the heading details text for the page</span><span class="named-paragraph-number">1.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_row</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"hr"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2" class="named-paragraph-link"><span class="named-paragraph">Write the main content for the page</span><span class="named-paragraph-number">1.2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_body</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2" class="named-paragraph-link"><span class="named-paragraph">Write the main content for the page</span><span class="named-paragraph-number">1.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_1"></a><b>§1.2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the heading details text for the page</span><span class="named-paragraph-number">1.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_1"></a><b>§1.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the heading details text for the page</span><span class="named-paragraph-number">1.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">content</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">HOME_EXTPAGE:</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Display the location of installed extensions</span><span class="named-paragraph-number">1.2.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_1_2" class="named-paragraph-link"><span class="named-paragraph">Display a warning about any census errors which turned up</span><span class="named-paragraph-number">1.2.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_1_1" class="named-paragraph-link"><span class="named-paragraph">Display the location of installed extensions</span><span class="named-paragraph-number">1.1.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_1_2" class="named-paragraph-link"><span class="named-paragraph">Display a warning about any census errors which turned up</span><span class="named-paragraph-number">1.1.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_EXTPAGE:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
|
@ -145,23 +132,23 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2"></a><b>§1.2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the main content for the page</span><span class="named-paragraph-number">1.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1">§1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2"></a><b>§1.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the main content for the page</span><span class="named-paragraph-number">1.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">content</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">HOME_EXTPAGE:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1" class="named-paragraph-link"><span class="named-paragraph">Display an alphabetised directory</span><span class="named-paragraph-number">1.2.2.1</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">HOME_EXTPAGE:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1" class="named-paragraph-link"><span class="named-paragraph">Display an alphabetised directory</span><span class="named-paragraph-number">1.1.2.1</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_EXTPAGE:</span><span class="plain-syntax"> </span><a href="7-dct.html#SP14" class="function-link"><span class="function-syntax">ExtensionDictionary::write_to_HTML</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_1_1"></a><b>§1.2.1.1. </b>From here on, then, all the code in this section generates the main directory
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1">§1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_1_1"></a><b>§1.1.1.1. </b>From here on, then, all the code in this section generates the main directory
|
||||
page, not the index of terms, which is all handled by
|
||||
<a href="7-dct.html#SP14" class="internal">ExtensionDictionary::write_to_HTML</a>.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Display the location of installed extensions</span><span class="named-paragraph-number">1.2.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Display the location of installed extensions</span><span class="named-paragraph-number">1.1.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -186,7 +173,7 @@ page, not the index of terms, which is all handled by
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;You have no other extensions installed at present."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::open_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="7-cns.html#SP3" class="function-link"><span class="function-syntax">ExtensionCensus::external_path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::open_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="7-cns.html#SP3" class="function-link"><span class="function-syntax">ExtensionCensus::external_path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"src='inform:/doc_images/folder4.png' border=0"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;You have %d further extension%s installed. These are marked "</span>
|
||||
|
@ -199,7 +186,7 @@ page, not the index of terms, which is all handled by
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">nps</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::open_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="7-cns.html#SP3" class="function-link"><span class="function-syntax">ExtensionCensus::internal_path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::open_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="7-cns.html#SP3" class="function-link"><span class="function-syntax">ExtensionCensus::internal_path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="constant-syntax">PROJECT_SPECIFIC_SYMBOL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;You have %d extension%s in the .materials folder for the "</span>
|
||||
|
@ -209,13 +196,13 @@ page, not the index of terms, which is all handled by
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_1">§1.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_1_2"></a><b>§1.2.1.2. </b>We sometimes position a warning prominently at the top of the listing,
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_1">§1.1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_1_2"></a><b>§1.1.1.2. </b>We sometimes position a warning prominently at the top of the listing,
|
||||
because otherwise its position at the bottom will be invisible unless the user
|
||||
scrolls a long way:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Display a warning about any census errors which turned up</span><span class="named-paragraph-number">1.2.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Display a warning about any census errors which turned up</span><span class="named-paragraph-number">1.1.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -229,39 +216,39 @@ scrolls a long way:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_1">§1.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1"></a><b>§1.2.2.1. </b>The following is an alphabetised directory of extensions by author and then
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_1">§1.1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1"></a><b>§1.1.2.1. </b>The following is an alphabetised directory of extensions by author and then
|
||||
title, along with some useful information about them, and then a list of
|
||||
any oddities found in the external extensions area.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Display an alphabetised directory</span><span class="named-paragraph-number">1.2.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Display an alphabetised directory</span><span class="named-paragraph-number">1.1.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">key_vms</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">key_override</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">key_builtin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">key_pspec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">key_bullet</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Display the census radio buttons</span><span class="named-paragraph-number">1.2.2.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Display the census radio buttons</span><span class="named-paragraph-number">1.1.2.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_entries</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **</span><span class="identifier-syntax">sorted_census_results</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Memory::calloc</span><span class="plain-syntax">(</span><span class="identifier-syntax">no_entries</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">sizeof</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *), </span><span class="constant-syntax">EXTENSION_DICTIONARY_MREASON</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax">=1; </span><span class="identifier-syntax">d</span><span class="plain-syntax"><=5; </span><span class="identifier-syntax">d</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_2" class="named-paragraph-link"><span class="named-paragraph">Start an HTML division for this sorted version of the census</span><span class="named-paragraph-number">1.2.2.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_5" class="named-paragraph-link"><span class="named-paragraph">Sort the census into the appropriate order</span><span class="named-paragraph-number">1.2.2.1.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6" class="named-paragraph-link"><span class="named-paragraph">Display the sorted version of the census</span><span class="named-paragraph-number">1.2.2.1.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_2" class="named-paragraph-link"><span class="named-paragraph">Start an HTML division for this sorted version of the census</span><span class="named-paragraph-number">1.1.2.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_5" class="named-paragraph-link"><span class="named-paragraph">Sort the census into the appropriate order</span><span class="named-paragraph-number">1.1.2.1.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6" class="named-paragraph-link"><span class="named-paragraph">Display the sorted version of the census</span><span class="named-paragraph-number">1.1.2.1.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_3" class="named-paragraph-link"><span class="named-paragraph">Print the key to any symbols used in the census lines</span><span class="named-paragraph-number">1.2.2.1.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_4" class="named-paragraph-link"><span class="named-paragraph">Transcribe any census errors</span><span class="named-paragraph-number">1.2.2.1.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_3" class="named-paragraph-link"><span class="named-paragraph">Print the key to any symbols used in the census lines</span><span class="named-paragraph-number">1.1.2.1.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_4" class="named-paragraph-link"><span class="named-paragraph">Transcribe any census errors</span><span class="named-paragraph-number">1.1.2.1.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Memory::I7_array_free</span><span class="plain-syntax">(</span><span class="identifier-syntax">sorted_census_results</span><span class="plain-syntax">, </span><span class="constant-syntax">EXTENSION_DICTIONARY_MREASON</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">no_entries</span><span class="plain-syntax">, </span><span class="reserved-syntax">sizeof</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *));</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2">§1.2.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_1"></a><b>§1.2.2.1.1. </b>I am the first to admit that this implementation is not inspired. There
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2">§1.1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_1"></a><b>§1.1.2.1.1. </b>I am the first to admit that this implementation is not inspired. There
|
||||
are five radio buttons, and number 2 is selected by default.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Display the census radio buttons</span><span class="named-paragraph-number">1.2.2.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Display the census radio buttons</span><span class="named-paragraph-number">1.1.2.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -313,12 +300,12 @@ are five radio buttons, and number 2 is selected by default.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1">§1.2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_2"></a><b>§1.2.2.1.2. </b>Consequently, of the five divisions, number 2 is shown and the others
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1">§1.1.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_2"></a><b>§1.1.2.1.2. </b>Consequently, of the five divisions, number 2 is shown and the others
|
||||
hidden, by default.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Start an HTML division for this sorted version of the census</span><span class="named-paragraph-number">1.2.2.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Start an HTML division for this sorted version of the census</span><span class="named-paragraph-number">1.1.2.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -326,13 +313,13 @@ hidden, by default.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> == </span><span class="constant-syntax">SORT_CE_BY_AUTHOR</span><span class="plain-syntax">) </span><span class="identifier-syntax">display</span><span class="plain-syntax"> = </span><span class="string-syntax">"block"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">, </span><span class="string-syntax">"id=\"disp%d\" style=\"display: %s;\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">d</span><span class="plain-syntax">, </span><span class="identifier-syntax">display</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1">§1.2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_3"></a><b>§1.2.2.1.3. </b>The key at the foot only explicates those symbols actually used, and
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1">§1.1.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_3"></a><b>§1.1.2.1.3. </b>The key at the foot only explicates those symbols actually used, and
|
||||
doesn't explicate the "unindexed" symbol at all, since that's actually
|
||||
just a blank image used for horizontal spacing to keep margins straight.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print the key to any symbols used in the census lines</span><span class="named-paragraph-number">1.2.2.1.3</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print the key to any symbols used in the census lines</span><span class="named-paragraph-number">1.1.2.1.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -364,17 +351,17 @@ just a blank image used for horizontal spacing to keep margins straight.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1">§1.2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_4"></a><b>§1.2.2.1.4. </b>Census errors are nothing more than copy errors arising on the copies
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1">§1.1.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_4"></a><b>§1.1.2.1.4. </b>Census errors are nothing more than copy errors arising on the copies
|
||||
of extensions found by the census:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe any census errors</span><span class="named-paragraph-number">1.2.2.1.4</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe any census errors</span><span class="named-paragraph-number">1.1.2.1.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">no_census_errors</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_4_1" class="named-paragraph-link"><span class="named-paragraph">Include the headnote explaining what census errors are</span><span class="named-paragraph-number">1.2.2.1.4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_4_1" class="named-paragraph-link"><span class="named-paragraph">Include the headnote explaining what census errors are</span><span class="named-paragraph-number">1.1.2.1.4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">raw_data</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">LinkedLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">errors_reading_source_text</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
|
@ -382,7 +369,7 @@ of extensions found by the census:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">, </span><span class="reserved-syntax">copy_error</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">errors_reading_source_text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
|
@ -394,12 +381,12 @@ of extensions found by the census:
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1">§1.2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_4_1"></a><b>§1.2.2.1.4.1. </b>We only want to warn people here: not to stop them from using Inform
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1">§1.1.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_4_1"></a><b>§1.1.2.1.4.1. </b>We only want to warn people here: not to stop them from using Inform
|
||||
until they put matters right.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Include the headnote explaining what census errors are</span><span class="named-paragraph-number">1.2.2.1.4.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Include the headnote explaining what census errors are</span><span class="named-paragraph-number">1.1.2.1.4.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -417,8 +404,8 @@ until they put matters right.
|
|||
<span class="plain-syntax"> </span><span class="constant-syntax">MAX_EXTENSION_TITLE_LENGTH</span><span class="plain-syntax">, </span><span class="constant-syntax">MAX_EXTENSION_AUTHOR_LENGTH</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_4">§1.2.2.1.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_5"></a><b>§1.2.2.1.5. </b></p>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1_4">§1.1.2.1.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_5"></a><b>§1.1.2.1.5. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">SORT_CE_BY_TITLE</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">SORT_CE_BY_AUTHOR</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
|
||||
|
@ -426,7 +413,7 @@ until they put matters right.
|
|||
<span class="definition-keyword">define</span> <span class="constant-syntax">SORT_CE_BY_DATE</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">SORT_CE_BY_LENGTH</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Sort the census into the appropriate order</span><span class="named-paragraph-number">1.2.2.1.5</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Sort the census into the appropriate order</span><span class="named-paragraph-number">1.1.2.1.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -446,101 +433,101 @@ until they put matters right.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">qsort</span><span class="plain-syntax">(</span><span class="identifier-syntax">sorted_census_results</span><span class="plain-syntax">, (</span><span class="identifier-syntax">size_t</span><span class="plain-syntax">) </span><span class="identifier-syntax">no_entries</span><span class="plain-syntax">, </span><span class="reserved-syntax">sizeof</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">criterion</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1">§1.2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6"></a><b>§1.2.2.1.6. </b>Standard rows have black text on striped background colours, these being
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1">§1.1.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_6"></a><b>§1.1.2.1.6. </b>Standard rows have black text on striped background colours, these being
|
||||
the usual ones seen in Mac OS X applications such as iTunes.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">FIRST_STRIPE_COLOUR</span><span class="plain-syntax"> </span><span class="string-syntax">"#ffffff"</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">SECOND_STRIPE_COLOUR</span><span class="plain-syntax"> </span><span class="string-syntax">"#f3f6fa"</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Display the sorted version of the census</span><span class="named-paragraph-number">1.2.2.1.6</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Display the sorted version of the census</span><span class="named-paragraph-number">1.1.2.1.6</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">FIRST_STRIPE_COLOUR</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1" class="named-paragraph-link"><span class="named-paragraph">Show a titling row explaining the census sorting, if necessary</span><span class="named-paragraph-number">1.2.2.1.6.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_1" class="named-paragraph-link"><span class="named-paragraph">Show a titling row explaining the census sorting, if necessary</span><span class="named-paragraph-number">1.1.2.1.6.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stripe</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_author_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">current_installation</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="identifier-syntax">no_entries</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sorted_census_results</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_2" class="named-paragraph-link"><span class="named-paragraph">Insert a subtitling row in the census sorting, if necessary</span><span class="named-paragraph-number">1.2.2.1.6.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_2" class="named-paragraph-link"><span class="named-paragraph">Insert a subtitling row in the census sorting, if necessary</span><span class="named-paragraph-number">1.1.2.1.6.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">stripe</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax"> - </span><span class="identifier-syntax">stripe</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stripe</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::first_html_column_coloured</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">SECOND_STRIPE_COLOUR</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::first_html_column_coloured</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">FIRST_STRIPE_COLOUR</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_4" class="named-paragraph-link"><span class="named-paragraph">Print the census line for this extension</span><span class="named-paragraph-number">1.2.2.1.6.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_4" class="named-paragraph-link"><span class="named-paragraph">Print the census line for this extension</span><span class="named-paragraph-number">1.1.2.1.6.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_row</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_author_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_3" class="named-paragraph-link"><span class="named-paragraph">Show a final titling row closing the census sorting</span><span class="named-paragraph-number">1.2.2.1.6.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_3" class="named-paragraph-link"><span class="named-paragraph">Show a final titling row closing the census sorting</span><span class="named-paragraph-number">1.1.2.1.6.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1">§1.2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_1"></a><b>§1.2.2.1.6.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show a titling row explaining the census sorting, if necessary</span><span class="named-paragraph-number">1.2.2.1.6.1</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1">§1.1.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_6_1"></a><b>§1.1.2.1.6.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show a titling row explaining the census sorting, if necessary</span><span class="named-paragraph-number">1.1.2.1.6.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SORT_CE_BY_TITLE:</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.1.2.1.6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Extensions in alphabetical order"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.1.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SORT_CE_BY_DATE:</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.1.2.1.6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Extensions in order of date used (most recent first)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.1.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SORT_CE_BY_LENGTH:</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.1.2.1.6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Extensions in order of word count (longest first)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.1.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6">§1.2.2.1.6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_2"></a><b>§1.2.2.1.6.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Insert a subtitling row in the census sorting, if necessary</span><span class="named-paragraph-number">1.2.2.1.6.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1_6">§1.1.2.1.6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_6_2"></a><b>§1.1.2.1.6.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Insert a subtitling row in the census sorting, if necessary</span><span class="named-paragraph-number">1.1.2.1.6.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">d</span><span class="plain-syntax"> == </span><span class="constant-syntax">SORT_CE_BY_AUTHOR</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Str::ne</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_author_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_author_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_2_1" class="named-paragraph-link"><span class="named-paragraph">Print the author's line in the extension census table</span><span class="named-paragraph-number">1.2.2.1.6.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.1.2.1.6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_2_1" class="named-paragraph-link"><span class="named-paragraph">Print the author's line in the extension census table</span><span class="named-paragraph-number">1.1.2.1.6.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.1.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">stripe</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">d</span><span class="plain-syntax"> == </span><span class="constant-syntax">SORT_CE_BY_INSTALL</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="7-cns.html#SP5" class="function-link"><span class="function-syntax">ExtensionCensus::installation_region</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) != </span><span class="identifier-syntax">current_installation</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_installation</span><span class="plain-syntax"> = </span><a href="7-cns.html#SP5" class="function-link"><span class="function-syntax">ExtensionCensus::installation_region</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_2_2" class="named-paragraph-link"><span class="named-paragraph">Print the installation region in the extension census table</span><span class="named-paragraph-number">1.2.2.1.6.2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.1.2.1.6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_2_2" class="named-paragraph-link"><span class="named-paragraph">Print the installation region in the extension census table</span><span class="named-paragraph-number">1.1.2.1.6.2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.1.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">stripe</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6">§1.2.2.1.6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_3"></a><b>§1.2.2.1.6.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show a final titling row closing the census sorting</span><span class="named-paragraph-number">1.2.2.1.6.3</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1_6">§1.1.2.1.6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_6_3"></a><b>§1.1.2.1.6.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show a final titling row closing the census sorting</span><span class="named-paragraph-number">1.1.2.1.6.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.1.2.1.6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"smaller\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%d extensions installed"</span><span class="plain-syntax">, </span><span class="identifier-syntax">no_entries</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.1.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6">§1.2.2.1.6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_1_1"></a><b>§1.2.2.1.6.1.1. </b>Black text on a grey background.
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1_6">§1.1.2.1.6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_6_1_1"></a><b>§1.1.2.1.6.1.1. </b>Black text on a grey background.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">CENSUS_TITLING_BG</span><span class="plain-syntax"> </span><span class="string-syntax">"#808080"</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Begin a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Begin a tinted census line</span><span class="named-paragraph-number">1.1.2.1.6.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -550,19 +537,19 @@ the usual ones seen in Mac OS X applications such as iTunes.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ffffff"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_1">§1.2.2.1.6.1</a> (three times), <a href="7-ip.html#SP1_2_2_1_6_2">§1.2.2.1.6.2</a> (twice), <a href="7-ip.html#SP1_2_2_1_6_3">§1.2.2.1.6.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_1_2"></a><b>§1.2.2.1.6.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">End a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1_6_1">§1.1.2.1.6.1</a> (three times), <a href="7-ip.html#SP1_1_2_1_6_2">§1.1.2.1.6.2</a> (twice), <a href="7-ip.html#SP1_1_2_1_6_3">§1.1.2.1.6.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_6_1_2"></a><b>§1.1.2.1.6.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">End a tinted census line</span><span class="named-paragraph-number">1.1.2.1.6.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_row</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_1">§1.2.2.1.6.1</a> (three times), <a href="7-ip.html#SP1_2_2_1_6_2">§1.2.2.1.6.2</a> (twice), <a href="7-ip.html#SP1_2_2_1_6_3">§1.2.2.1.6.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_2_1"></a><b>§1.2.2.1.6.2.1. </b>Used only in "by author".
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1_6_1">§1.1.2.1.6.1</a> (three times), <a href="7-ip.html#SP1_1_2_1_6_2">§1.1.2.1.6.2</a> (twice), <a href="7-ip.html#SP1_1_2_1_6_3">§1.1.2.1.6.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_6_2_1"></a><b>§1.1.2.1.6.2.1. </b>Used only in "by author".
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print the author's line in the extension census table</span><span class="named-paragraph-number">1.2.2.1.6.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print the author's line in the extension census table</span><span class="named-paragraph-number">1.1.2.1.6.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -590,11 +577,11 @@ the usual ones seen in Mac OS X applications such as iTunes.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">")"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_2">§1.2.2.1.6.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_2_2"></a><b>§1.2.2.1.6.2.2. </b>Used only in "by installation".
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1_6_2">§1.1.2.1.6.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_6_2_2"></a><b>§1.1.2.1.6.2.2. </b>Used only in "by installation".
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print the installation region in the extension census table</span><span class="named-paragraph-number">1.2.2.1.6.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print the installation region in the extension census table</span><span class="named-paragraph-number">1.1.2.1.6.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -613,28 +600,28 @@ the usual ones seen in Mac OS X applications such as iTunes.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_2">§1.2.2.1.6.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_4"></a><b>§1.2.2.1.6.4. </b></p>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1_6_2">§1.1.2.1.6.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_6_4"></a><b>§1.1.2.1.6.4. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">UNINDEXED_SYMBOL</span><span class="plain-syntax"> </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/unindexed_bullet.png\""</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">INDEXED_SYMBOL</span><span class="plain-syntax"> </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/indexed_bullet.png\""</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print the census line for this extension</span><span class="named-paragraph-number">1.2.2.1.6.4</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print the census line for this extension</span><span class="named-paragraph-number">1.1.2.1.6.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_4_1" class="named-paragraph-link"><span class="named-paragraph">Print column 1 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_4_1" class="named-paragraph-link"><span class="named-paragraph">Print column 1 of the census line</span><span class="named-paragraph-number">1.1.2.1.6.4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column_nw</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> != </span><span class="constant-syntax">SORT_CE_BY_TITLE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_4_2" class="named-paragraph-link"><span class="named-paragraph">Print column 2 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_4_2" class="named-paragraph-link"><span class="named-paragraph">Print column 2 of the census line</span><span class="named-paragraph-number">1.1.2.1.6.4.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column_nw</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_4_3" class="named-paragraph-link"><span class="named-paragraph">Print column 3 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_4_3" class="named-paragraph-link"><span class="named-paragraph">Print column 3 of the census line</span><span class="named-paragraph-number">1.1.2.1.6.4.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column_w</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_4_4" class="named-paragraph-link"><span class="named-paragraph">Print column 4 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_4_4" class="named-paragraph-link"><span class="named-paragraph">Print column 4 of the census line</span><span class="named-paragraph-number">1.1.2.1.6.4.4</span></a></span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6">§1.2.2.1.6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_4_1"></a><b>§1.2.2.1.6.4.1. </b>The appearance of the line is
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1_6">§1.1.2.1.6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_6_4_1"></a><b>§1.1.2.1.6.4.1. </b>The appearance of the line is
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
|
@ -644,7 +631,7 @@ the usual ones seen in Mac OS X applications such as iTunes.
|
|||
<p class="commentary">where all is optional except the title part.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print column 1 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print column 1 of the census line</span><span class="named-paragraph-number">1.1.2.1.6.4.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -677,19 +664,19 @@ the usual ones seen in Mac OS X applications such as iTunes.
|
|||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">compatibility_specification</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">compatibility</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">parsed_from</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_4_1_1" class="named-paragraph-link"><span class="named-paragraph">Append icons which signify the VM requirements of the extension</span><span class="named-paragraph-number">1.2.2.1.6.4.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1_2_1_6_4_1_1" class="named-paragraph-link"><span class="named-paragraph">Append icons which signify the VM requirements of the extension</span><span class="named-paragraph-number">1.1.2.1.6.4.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">key_vms</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_4">§1.2.2.1.6.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_4_1_1"></a><b>§1.2.2.1.6.4.1.1. </b>VM requirements are parsed by feeding them into the lexer and calling the
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1_6_4">§1.1.2.1.6.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_6_4_1_1"></a><b>§1.1.2.1.6.4.1.1. </b>VM requirements are parsed by feeding them into the lexer and calling the
|
||||
same routines as would be used when parsing headings about VM requirements
|
||||
in a normal run of Inform. Note that because the requirements are in round
|
||||
brackets, which the lexer will split off as distinct words, we can ignore
|
||||
the first and last word and just look at what is in between:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Append icons which signify the VM requirements of the extension</span><span class="named-paragraph-number">1.2.2.1.6.4.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Append icons which signify the VM requirements of the extension</span><span class="named-paragraph-number">1.1.2.1.6.4.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -698,8 +685,8 @@ the first and last word and just look at what is in between:
|
|||
<span class="plain-syntax"> </span><a href="7-ip.html#SP3" class="function-link"><span class="function-syntax">ExtensionIndex::write_icons</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_4_1">§1.2.2.1.6.4.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_4_2"></a><b>§1.2.2.1.6.4.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print column 2 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1_6_4_1">§1.1.2.1.6.4.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_6_4_2"></a><b>§1.1.2.1.6.4.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print column 2 of the census line</span><span class="named-paragraph-number">1.1.2.1.6.4.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -710,14 +697,14 @@ the first and last word and just look at what is in between:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"--"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_4">§1.2.2.1.6.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_4_3"></a><b>§1.2.2.1.6.4.3. </b></p>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1_6_4">§1.1.2.1.6.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_6_4_3"></a><b>§1.1.2.1.6.4.3. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">BUILT_IN_SYMBOL</span><span class="plain-syntax"> </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/builtin_ext.png\""</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">OVERRIDING_SYMBOL</span><span class="plain-syntax"> </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/override_ext.png\""</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PROJECT_SPECIFIC_SYMBOL</span><span class="plain-syntax"> </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/pspec_ext.png\""</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print column 3 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.3</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print column 3 of the census line</span><span class="named-paragraph-number">1.1.2.1.6.4.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -736,13 +723,13 @@ the first and last word and just look at what is in between:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">area</span><span class="plain-syntax"> = </span><a href="4-em.html#SP3" class="function-link"><span class="function-syntax">ExtensionManager::path_within_nest</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">nest</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::open_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">area</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::open_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">area</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">raw_author_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">opener</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_4">§1.2.2.1.6.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_4_4"></a><b>§1.2.2.1.6.4.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print column 4 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.4</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1_6_4">§1.1.2.1.6.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2_1_6_4_4"></a><b>§1.1.2.1.6.4.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print column 4 of the census line</span><span class="named-paragraph-number">1.1.2.1.6.4.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -763,7 +750,7 @@ the first and last word and just look at what is in between:
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_4">§1.2.2.1.6.4</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_1_2_1_6_4">§1.1.2.1.6.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. Icons for virtual machines. </b>And everything else is cosmetic: printing, or showing icons to signify,
|
||||
the current VM or some set of permitted VMs. The following plots the
|
||||
icon associated with a given minor VM, and explicates what the icons mean:
|
||||
|
@ -777,7 +764,7 @@ icon associated with a given minor VM, and explicates what the icons mean:
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionIndex::write_key</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ExtensionIndex::write_key</span></span>:<br/><a href="7-ip.html#SP1_2_2_1_3">§1.2.2.1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionIndex::write_key</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ExtensionIndex::write_key</span></span>:<br/><a href="7-ip.html#SP1_1_2_1_3">§1.1.2.1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Extensions compatible with specific story file formats only: "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
|
@ -795,7 +782,7 @@ has no restriction on its use).
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionIndex::write_icons</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ExtensionIndex::write_icons</span></span>:<br/><a href="7-ip.html#SP1_2_2_1_6_4_1_1">§1.2.2.1.6.4.1.1</a><br/>Individual Pages - <a href="7-ip2.html#SP2_2_1_2">§2.2.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">compatibility_specification</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionIndex::write_icons</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ExtensionIndex::write_icons</span></span>:<br/><a href="7-ip.html#SP1_1_2_1_6_4_1_1">§1.1.2.1.6.4.1.1</a><br/>Individual Pages - <a href="7-ip2.html#SP2_2_1_2">§2.2.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">compatibility_specification</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">something</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">everything</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">target_vm</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -157,22 +157,13 @@ our E, and return 0 in response to the ECD call to prevent further ECD calls.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::declare_as_HTML</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_head</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::title</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Extension"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::incorporate_javascript</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::header</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Extension"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP20" class="function-link"><span class="function-syntax">Supervisor::file_from_installation</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CSS_FOR_STANDARD_PAGES_IRES</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP20" class="function-link"><span class="function-syntax">Supervisor::file_from_installation</span></a><span class="plain-syntax">(</span><span class="constant-syntax">JAVASCRIPT_FOR_ONE_EXTENSION_IRES</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::incorporate_CSS</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP20" class="function-link"><span class="function-syntax">Supervisor::file_from_installation</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CSS_FOR_STANDARD_PAGES_IRES</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_head</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_body</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::incorporate_HTML</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP20" class="function-link"><span class="function-syntax">Supervisor::file_from_installation</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EXTENSION_DOCUMENTATION_MODEL_IRES</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip2.html#SP2_2_1" class="named-paragraph-link"><span class="named-paragraph">Write documentation for a specific extension into the page</span><span class="named-paragraph-number">2.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_body</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::footer</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip2.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2_1"></a><b>§2.2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write documentation for a specific extension into the page</span><span class="named-paragraph-number">2.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
|
@ -214,7 +205,7 @@ our E, and return 0 in response to the ECD call to prevent further ECD calls.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">inclusion_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">inclusion_text</span><span class="plain-syntax">, </span><span class="string-syntax">"Include %X.\n\n\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">work</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::paste_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inclusion_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inclusion_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">inclusion_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
|
@ -266,7 +257,7 @@ easily be scrolled down off screen when the user first visits the page.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">documentation_text</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Documentation::set_table_of_contents</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">documentation_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DocumentationRenderer::table_of_contents</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">documentation_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
|
@ -276,7 +267,7 @@ easily be scrolled down off screen when the user first visits the page.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">documentation_text</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">no_egs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HTML::Documentation::set_body_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">documentation_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">no_egs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">DocumentationRenderer::set_body_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">documentation_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">eg_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -105,12 +105,12 @@ same either way. Here are the functions for (a) and (b) respectively:
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionWebsite::handle_census_mode</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">ExtensionWebsite::handle_census_mode</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::set_link_abbreviation_path</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::set_link_abbreviation_path</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-tm.html#SP2" class="function-link"><span class="function-syntax">ExtensionWebsite::go</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionWebsite::index_after_compilation</span><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::set_link_abbreviation_path</span><span class="plain-syntax">(</span><a href="5-ps2.html#SP4" class="function-link"><span class="function-syntax">Projects::path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::set_link_abbreviation_path</span><span class="plain-syntax">(</span><a href="5-ps2.html#SP4" class="function-link"><span class="function-syntax">Projects::path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="7-tm.html#SP2" class="function-link"><span class="function-syntax">ExtensionWebsite::go</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
|
|
@ -234,7 +234,7 @@ void Supervisor::option(int id, int val, text_stream *arg, void *state) {
|
|||
case PIPELINE_FILE_CLSW: inter_pipeline_file = Filenames::from_text(arg); break;
|
||||
case PIPELINE_VARIABLE_CLSW: @<Set a pipeline variable@>; break;
|
||||
case RNG_CLSW: @<Seed the random number generator@>; break;
|
||||
case CASE_CLSW: HTMLFiles::set_source_link_case(arg); break;
|
||||
case CASE_CLSW: SourceLinks::set_case(arg); break;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -15,23 +15,15 @@ void ExtensionIndex::write(filename *F, int content, extension_census *C) {
|
|||
text_stream *OUT = &HOMEPAGE_struct;
|
||||
if (STREAM_OPEN_TO_FILE(OUT, F, UTF8_ENC) == FALSE) return;
|
||||
|
||||
HTML::declare_as_HTML(OUT, FALSE);
|
||||
@<Write the head of the HTML@>;
|
||||
HTML::header(OUT, I"Extensions",
|
||||
Supervisor::file_from_installation(CSS_FOR_STANDARD_PAGES_IRES),
|
||||
Supervisor::file_from_installation(JAVASCRIPT_FOR_EXTENSIONS_IRES));
|
||||
@<Write the body of the HTML@>;
|
||||
STREAM_CLOSE(OUT);
|
||||
HTML::footer(OUT);
|
||||
}
|
||||
|
||||
@<Write the head of the HTML@> =
|
||||
HTML::begin_head(OUT, NULL);
|
||||
HTML::title(OUT, I"Extensions");
|
||||
HTML::incorporate_javascript(OUT, TRUE,
|
||||
Supervisor::file_from_installation(JAVASCRIPT_FOR_EXTENSIONS_IRES));
|
||||
HTML::incorporate_CSS(OUT,
|
||||
Supervisor::file_from_installation(CSS_FOR_STANDARD_PAGES_IRES));
|
||||
HTML::end_head(OUT);
|
||||
|
||||
@<Write the body of the HTML@> =
|
||||
HTML::begin_body(OUT, NULL);
|
||||
HTML::begin_html_table(OUT, NULL, TRUE, 0, 4, 0, 0, 0);
|
||||
HTML::first_html_column(OUT, 0);
|
||||
HTML_TAG_WITH("img",
|
||||
|
@ -51,7 +43,6 @@ void ExtensionIndex::write(filename *F, int content, extension_census *C) {
|
|||
HTML::end_html_table(OUT);
|
||||
HTML_TAG("hr");
|
||||
@<Write the main content for the page@>;
|
||||
HTML::end_body(OUT);
|
||||
|
||||
@<Write the heading details text for the page@> =
|
||||
switch (content) {
|
||||
|
@ -100,7 +91,7 @@ page, not the index of terms, which is all handled by
|
|||
WRITE(" You have no other extensions installed at present.");
|
||||
} else {
|
||||
#ifdef INDEX_MODULE
|
||||
HTML::Javascript::open_file(OUT, ExtensionCensus::external_path(C), NULL,
|
||||
PasteButtons::open_file(OUT, ExtensionCensus::external_path(C), NULL,
|
||||
"src='inform:/doc_images/folder4.png' border=0");
|
||||
#endif
|
||||
WRITE(" You have %d further extension%s installed. These are marked "
|
||||
|
@ -113,7 +104,7 @@ page, not the index of terms, which is all handled by
|
|||
if (nps > 0) {
|
||||
HTML_OPEN("p");
|
||||
#ifdef INDEX_MODULE
|
||||
HTML::Javascript::open_file(OUT, ExtensionCensus::internal_path(C),
|
||||
PasteButtons::open_file(OUT, ExtensionCensus::internal_path(C),
|
||||
NULL, PROJECT_SPECIFIC_SYMBOL);
|
||||
#endif
|
||||
WRITE(" You have %d extension%s in the .materials folder for the "
|
||||
|
@ -266,7 +257,7 @@ of extensions found by the census:
|
|||
LOOP_OVER_LINKED_LIST(CE, copy_error,
|
||||
R->copy->errors_reading_source_text) {
|
||||
#ifdef INDEX_MODULE
|
||||
HTMLFiles::open_para(OUT, 2, "hanging");
|
||||
HTML::open_indented_p(OUT, 2, "hanging");
|
||||
#endif
|
||||
#ifndef INDEX_MODULE
|
||||
HTML_OPEN("p");
|
||||
|
@ -550,7 +541,7 @@ the first and last word and just look at what is in between:
|
|||
else {
|
||||
#ifdef INDEX_MODULE
|
||||
pathname *area = ExtensionManager::path_within_nest(ecd->found_as->nest);
|
||||
HTML::Javascript::open_file(OUT, area,
|
||||
PasteButtons::open_file(OUT, area,
|
||||
ecd->found_as->copy->edition->work->raw_author_name, opener);
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -82,22 +82,13 @@ our E, and return 0 in response to the ECD call to prevent further ECD calls.
|
|||
return 0;
|
||||
|
||||
@<Write the actual extension documentation page@> =
|
||||
HTML::declare_as_HTML(OUT, FALSE);
|
||||
|
||||
HTML::begin_head(OUT, NULL);
|
||||
HTML::title(OUT, I"Extension");
|
||||
HTML::incorporate_javascript(OUT, TRUE,
|
||||
HTML::header(OUT, I"Extension",
|
||||
Supervisor::file_from_installation(CSS_FOR_STANDARD_PAGES_IRES),
|
||||
Supervisor::file_from_installation(JAVASCRIPT_FOR_ONE_EXTENSION_IRES));
|
||||
HTML::incorporate_CSS(OUT,
|
||||
Supervisor::file_from_installation(CSS_FOR_STANDARD_PAGES_IRES));
|
||||
HTML::end_head(OUT);
|
||||
|
||||
HTML::begin_body(OUT, NULL);
|
||||
|
||||
HTML::incorporate_HTML(OUT,
|
||||
Supervisor::file_from_installation(EXTENSION_DOCUMENTATION_MODEL_IRES));
|
||||
@<Write documentation for a specific extension into the page@>;
|
||||
HTML::end_body(OUT);
|
||||
HTML::footer(OUT);
|
||||
|
||||
@<Write documentation for a specific extension into the page@> =
|
||||
HTML_OPEN("p");
|
||||
|
@ -131,7 +122,7 @@ our E, and return 0 in response to the ECD call to prevent further ECD calls.
|
|||
@<Write Javascript paste icon for source text to include this extension@> =
|
||||
TEMPORARY_TEXT(inclusion_text);
|
||||
WRITE_TO(inclusion_text, "Include %X.\n\n\n", work);
|
||||
HTML::Javascript::paste_stream(OUT, inclusion_text);
|
||||
PasteButtons::paste_text(OUT, inclusion_text);
|
||||
DISCARD_TEXT(inclusion_text);
|
||||
WRITE(" ");
|
||||
|
||||
|
@ -166,13 +157,13 @@ easily be scrolled down off screen when the user first visits the page.
|
|||
@<Write up the table of contents for the supplied documentation, if any@> =
|
||||
if (Wordings::nonempty(E->documentation_text)) {
|
||||
HTML_OPEN("p");
|
||||
HTML::Documentation::set_table_of_contents(E->documentation_text, OUT, leaf);
|
||||
DocumentationRenderer::table_of_contents(E->documentation_text, OUT, leaf);
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
||||
@<Write up the supplied documentation, if any@> =
|
||||
if (Wordings::nonempty(E->documentation_text))
|
||||
no_egs = HTML::Documentation::set_body_text(E->documentation_text, OUT,
|
||||
no_egs = DocumentationRenderer::set_body_text(E->documentation_text, OUT,
|
||||
eg_number, leaf);
|
||||
else {
|
||||
HTML_OPEN("p");
|
||||
|
|
|
@ -36,12 +36,12 @@ same either way. Here are the functions for (a) and (b) respectively:
|
|||
|
||||
=
|
||||
void ExtensionWebsite::handle_census_mode(void) {
|
||||
HTMLFiles::set_link_abbreviation_path(NULL);
|
||||
HTML::set_link_abbreviation_path(NULL);
|
||||
ExtensionWebsite::go(NULL, TRUE);
|
||||
}
|
||||
|
||||
void ExtensionWebsite::index_after_compilation(inform_project *proj) {
|
||||
HTMLFiles::set_link_abbreviation_path(Projects::path(proj));
|
||||
HTML::set_link_abbreviation_path(Projects::path(proj));
|
||||
ExtensionWebsite::go(proj, FALSE);
|
||||
}
|
||||
|
||||
|
|
|
@ -86,7 +86,7 @@ but we won't assume that. Remember, //supervisor// knows best.
|
|||
filename *PF = Filenames::in(build_folder, I"Problems.html");
|
||||
Problems::Issue::start_problems_report(PF);
|
||||
|
||||
HTMLFiles::set_link_abbreviation_path(Projects::path(project));
|
||||
HTML::set_link_abbreviation_path(Projects::path(project));
|
||||
|
||||
@ Telemetry is not as sinister as it sounds: the app isn't sending data out
|
||||
on the Internet, only (if requested) logging what it's doing to a local file.
|
||||
|
|
|
@ -40,7 +40,7 @@ void Kinds::Index::index_kinds(OUTPUT_STREAM, int pass) {
|
|||
case 1: @<Write table row for this kind@>; break;
|
||||
case 2:
|
||||
@<Write heading for the detailed index entry for this kind@>;
|
||||
HTMLFiles::open_para(OUT, 1, "tight");
|
||||
HTML::open_indented_p(OUT, 1, "tight");
|
||||
@<Index kinds of kinds matched by this kind@>;
|
||||
@<Index explanatory text supplied for a kind@>;
|
||||
@<Index literal patterns which can specify this kind@>;
|
||||
|
@ -178,7 +178,7 @@ row.
|
|||
@ The detailed entry lower down the page begins with:
|
||||
|
||||
@<Write heading for the detailed index entry for this kind@> =
|
||||
HTMLFiles::open_para(OUT, 1, "halftight");
|
||||
HTML::open_indented_p(OUT, 1, "halftight");
|
||||
Index::anchor_numbered(OUT, Kinds::get_construct(K)->allocation_id); /* ...the anchor to which the grey icon in the table led */
|
||||
WRITE("<b>"); Kinds::Index::index_kind(OUT, K, FALSE, TRUE); WRITE("</b>");
|
||||
WRITE(" (<i>plural</i> "); Kinds::Index::index_kind(OUT, K, TRUE, FALSE); WRITE(")");
|
||||
|
@ -186,7 +186,7 @@ row.
|
|||
Index::DocReferences::link(OUT, Kinds::Behaviour::get_documentation_reference(K)); /* blue help icon, if any */
|
||||
HTML_CLOSE("p");
|
||||
if (Kinds::is_proper_constructor(K)) {
|
||||
HTMLFiles::open_para(OUT, 1, "tight");
|
||||
HTML::open_indented_p(OUT, 1, "tight");
|
||||
int i, a = Kinds::Constructors::arity(Kinds::get_construct(K));
|
||||
if ((a == 2) &&
|
||||
(Kinds::Constructors::variance(Kinds::get_construct(K), 0) ==
|
||||
|
|
|
@ -143,10 +143,10 @@ used in sorting algorithms.
|
|||
|
||||
=
|
||||
int cco = 0; /* comparison count: used to make the debugging log vaguely searchable */
|
||||
char *c_s_stage_law = ""; /* name of the law being applied, which caused this to be called */
|
||||
text_stream *c_s_stage_law = NULL; /* name of the law being applied, which caused this to be called */
|
||||
|
||||
int Specifications::compare_specificity(parse_node *spec1, parse_node *spec2, int *wont_mix) {
|
||||
LOGIF(SPECIFICITIES, "Law %s (test %d): comparing $P with $P\n",
|
||||
LOGIF(SPECIFICITIES, "Law %S (test %d): comparing $P with $P\n",
|
||||
c_s_stage_law, cco++, spec1, spec2);
|
||||
|
||||
@<Existence is itself something specific@>;
|
||||
|
|
|
@ -468,7 +468,7 @@ void World::Inferences::index_specific(OUTPUT_STREAM, inference_subject *infs) {
|
|||
if ((prnbar) && (S < 0)) continue;
|
||||
if (S != UNKNOWN_CE) {
|
||||
k++;
|
||||
if (k == 1) HTMLFiles::open_para(OUT, 1, "hanging");
|
||||
if (k == 1) HTML::open_indented_p(OUT, 1, "hanging");
|
||||
else WRITE("; ");
|
||||
if (S < 0) WRITE("not ");
|
||||
WRITE("%+W", prn->name);
|
||||
|
@ -484,7 +484,7 @@ void World::Inferences::index_specific(OUTPUT_STREAM, inference_subject *infs) {
|
|||
parse_node *P = NULL;
|
||||
parse_node *S = World::Inferences::get_prop_state_without_inheritance(infs, prn, &P);
|
||||
if ((S) && (Wordings::nonempty(ParseTree::get_text(S)))) {
|
||||
HTMLFiles::open_para(OUT, 1, "hanging");
|
||||
HTML::open_indented_p(OUT, 1, "hanging");
|
||||
WRITE("%+W: ", prn->name);
|
||||
HTML::begin_colour(OUT, I"000080");
|
||||
WRITE("%+W", ParseTree::get_text(S));
|
||||
|
|
|
@ -449,12 +449,12 @@ void Strings::index_response(OUTPUT_STREAM, rule *R, int marker, response_messag
|
|||
WRITE(" ");
|
||||
TEMPORARY_TEXT(S);
|
||||
WRITE_TO(S, "%+W response (%c)", R->name, 'A' + marker);
|
||||
HTML::Javascript::paste_stream(OUT, S);
|
||||
PasteButtons::paste_text(OUT, S);
|
||||
WRITE(" <i>name</i>");
|
||||
WRITE(" ");
|
||||
Str::clear(S);
|
||||
WRITE_TO(S, "The %+W response (%c) is \"New text.\".");
|
||||
HTML::Javascript::paste_stream(OUT, S);
|
||||
PasteButtons::paste_text(OUT, S);
|
||||
WRITE(" <i>set</i>");
|
||||
DISCARD_TEXT(S);
|
||||
}
|
||||
|
|
|
@ -1392,7 +1392,7 @@ Helvetica-style lower case "x", but life is full of compromises.
|
|||
TEMPORARY_TEXT(TEMP);
|
||||
WRITE_TO(TEMP, "%+W", CW);
|
||||
if (t->first_column_by_definition == FALSE) WRITE_TO(TEMP, " entry");
|
||||
HTML::Javascript::paste_stream(OUT, TEMP);
|
||||
PasteButtons::paste_text(OUT, TEMP);
|
||||
DISCARD_TEXT(TEMP);
|
||||
}
|
||||
HTML::next_html_column(OUT, 0);
|
||||
|
|
|
@ -4,7 +4,7 @@ Interface to the Problems module.
|
|||
|
||||
@
|
||||
|
||||
@d PROBLEMS_HTML_EMITTER HTMLFiles::char_out
|
||||
@d PROBLEMS_HTML_EMITTER HTML::put
|
||||
|
||||
@ Inform tops and tails its output of problem messages, and it also prints
|
||||
non-problem messages when everything was fine. That all happens here:
|
||||
|
@ -16,7 +16,9 @@ non-problem messages when everything was fine. That all happens here:
|
|||
void Problems::Using::start_problems_report(filename *F) {
|
||||
if (STREAM_OPEN_TO_FILE(problems_file, F, UTF8_ENC) == FALSE)
|
||||
Problems::Fatal::filename_related("Can't open problem log", F);
|
||||
HTMLFiles::html_header(problems_file, I"Translating the Source");
|
||||
HTML::header(problems_file, I"Translating the Source",
|
||||
Supervisor::file_from_installation(CSS_FOR_STANDARD_PAGES_IRES),
|
||||
Supervisor::file_from_installation(JAVASCRIPT_FOR_STANDARD_PAGES_IRES));
|
||||
}
|
||||
|
||||
void Problems::Using::final_report(int disaster_struck, int problems_count) {
|
||||
|
@ -31,7 +33,7 @@ void Problems::Using::final_report(int disaster_struck, int problems_count) {
|
|||
Problems::Buffer::redirect_problem_stream(NULL);
|
||||
} else {
|
||||
int rooms = 0, things = 0;
|
||||
HTMLFiles::html_outcome_image(problems_file, "ni_succeeded", "Succeeded");
|
||||
Problems::Using::html_outcome_image(problems_file, "ni_succeeded", "Succeeded");
|
||||
#ifdef IF_MODULE
|
||||
PL::Spatial::get_world_size(&rooms, &things);
|
||||
#endif
|
||||
|
@ -77,7 +79,7 @@ ingratitude of some -- oh, all right.
|
|||
"Problems occurring in translation prevented the game "
|
||||
"from being properly created. (Correct the source text to "
|
||||
"remove these problems and click on Go once again.)");
|
||||
HTMLFiles::outcome_image_tail(problems_file);
|
||||
Problems::Using::outcome_image_tail(problems_file);
|
||||
|
||||
text_stream *STATUS = ProgressBar::begin_outcome();
|
||||
if (STATUS) {
|
||||
|
@ -109,7 +111,7 @@ command line -- deserves the truth.
|
|||
"into a world with %1 %2 and %3 %4, and the index has been "
|
||||
"brought up to date.");
|
||||
Problems::issue_problem_end();
|
||||
HTMLFiles::outcome_image_tail(problems_file);
|
||||
Problems::Using::outcome_image_tail(problems_file);
|
||||
|
||||
if (telemetry_recording) {
|
||||
Telemetry::ensure_telemetry_file();
|
||||
|
@ -141,3 +143,71 @@ command line -- deserves the truth.
|
|||
things, (things==1)?"":"s");
|
||||
ProgressBar::end_outcome();
|
||||
}
|
||||
|
||||
@h Outcome images.
|
||||
These are the two images used on the Problems page to visually indicate
|
||||
success or failure. We also use special images on special occasions.
|
||||
|
||||
@d CENTRED_OUTCOME_IMAGE_STYLE 1
|
||||
@d SIDE_OUTCOME_IMAGE_STYLE 2
|
||||
|
||||
=
|
||||
int outcome_image_style = SIDE_OUTCOME_IMAGE_STYLE;
|
||||
|
||||
@ This callback function is called just as the //problems// module is about
|
||||
to issue its first problem of the run:
|
||||
|
||||
@d FIRST_PROBLEM_CALLBACK Problems::Using::html_outcome_failed
|
||||
|
||||
=
|
||||
void Problems::Using::html_outcome_failed(OUTPUT_STREAM) {
|
||||
if (Problems::Issue::internal_errors_have_occurred())
|
||||
Problems::Using::html_outcome_image(problems_file, "ni_failed_badly", "Failed");
|
||||
else
|
||||
Problems::Using::html_outcome_image(problems_file, "ni_failed", "Failed");
|
||||
}
|
||||
|
||||
void Problems::Using::html_outcome_image(OUTPUT_STREAM, char *image, char *verdict) {
|
||||
char *vn = "";
|
||||
int be_festive = TRUE;
|
||||
if (Problems::Issue::internal_errors_have_occurred() == FALSE) be_festive = FALSE;
|
||||
if (be_festive) {
|
||||
switch (Time::feast()) {
|
||||
case CHRISTMAS_FEAST: vn = "_2"; break;
|
||||
case EASTER_FEAST: vn = "_3"; break;
|
||||
}
|
||||
if (vn[0]) outcome_image_style = CENTRED_OUTCOME_IMAGE_STYLE;
|
||||
}
|
||||
Problems::Issue::issue_problems_banner(OUT, verdict);
|
||||
switch (outcome_image_style) {
|
||||
case CENTRED_OUTCOME_IMAGE_STYLE:
|
||||
HTML_OPEN("p");
|
||||
HTML_OPEN("center");
|
||||
HTML_TAG_WITH("img", "src=inform:/outcome_images/%s%s.png border=0", image, vn);
|
||||
HTML_CLOSE("center");
|
||||
HTML_CLOSE("p");
|
||||
break;
|
||||
case SIDE_OUTCOME_IMAGE_STYLE:
|
||||
HTML::begin_html_table(OUT, NULL, TRUE, 0, 4, 0, 0, 0);
|
||||
HTML::first_html_column(OUT, 110);
|
||||
HTML_TAG_WITH("img",
|
||||
"src=inform:/outcome_images/%s%s@2x.png border=1 width=100 height=100", image, vn);
|
||||
HTML::next_html_column(OUT, 0);
|
||||
break;
|
||||
}
|
||||
HTML::comment(OUT, I"HEADNOTE");
|
||||
HTML_OPEN_WITH("p", "style=\"margin-top:0;\"");
|
||||
WRITE("(Each time <b>Go</b> or <b>Replay</b> is clicked, Inform tries to "
|
||||
"translate the source text into a working story, and updates this report.)");
|
||||
HTML_CLOSE("p");
|
||||
HTML::comment(OUT, I"PROBLEMS BEGIN");
|
||||
}
|
||||
|
||||
void Problems::Using::outcome_image_tail(OUTPUT_STREAM) {
|
||||
if (outcome_image_style == SIDE_OUTCOME_IMAGE_STYLE) {
|
||||
HTML::comment(OUT, I"PROBLEMS END");
|
||||
HTML::end_html_row(OUT);
|
||||
HTML::end_html_table(OUT);
|
||||
HTML::comment(OUT, I"FOOTNOTE");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -683,7 +683,7 @@ void Activities::index_cross_references(OUTPUT_STREAM, activity *av) {
|
|||
for (acr = av->cross_references; acr; acr = acr->next) {
|
||||
phrase *ph = acr->rule_dependent;
|
||||
if ((ph->declaration_node) && (Wordings::nonempty(ParseTree::get_text(ph->declaration_node)))) {
|
||||
HTMLFiles::open_para(OUT, 2, "tight");
|
||||
HTML::open_indented_p(OUT, 2, "tight");
|
||||
WRITE("NB: %W", ParseTree::get_text(ph->declaration_node));
|
||||
Index::link(OUT, Wordings::first_wn(ParseTree::get_text(ph->declaration_node)));
|
||||
HTML_CLOSE("p");
|
||||
|
|
|
@ -394,7 +394,7 @@ void Rulebooks::Outcomes::index_outcomes(OUTPUT_STREAM, outcomes *outs, int supp
|
|||
rulebook_outcome *ro;
|
||||
for (ro = outs->named_outcomes; ro; ro = ro->next) {
|
||||
named_rulebook_outcome *rbno = ro->outcome_name;
|
||||
HTMLFiles::open_para(OUT, 2, "hanging");
|
||||
HTML::open_indented_p(OUT, 2, "hanging");
|
||||
WRITE("<i>outcome</i> ");
|
||||
if (outs->default_named_outcome == ro) WRITE("<b>");
|
||||
WRITE("%+W", Nouns::nominative(rbno->name));
|
||||
|
@ -412,7 +412,7 @@ void Rulebooks::Outcomes::index_outcomes(OUTPUT_STREAM, outcomes *outs, int supp
|
|||
if ((outs->default_named_outcome == NULL) &&
|
||||
(outs->default_rule_outcome != NO_OUTCOME) &&
|
||||
(suppress_outcome == FALSE)) {
|
||||
HTMLFiles::open_para(OUT, 2, "hanging");
|
||||
HTML::open_indented_p(OUT, 2, "hanging");
|
||||
WRITE("<i>default outcome is</i> ");
|
||||
switch(outs->default_rule_outcome) {
|
||||
case SUCCESS_OUTCOME: WRITE("success"); break;
|
||||
|
|
|
@ -20,8 +20,8 @@ typedef struct booking {
|
|||
|
||||
/* used only to show how the page was added to its rulebook, for the index: */
|
||||
int next_rule_specificity; /* $1$ more specific than following, $0$ equal, $-1$ less */
|
||||
char *next_rule_specificity_law; /* description of reason */
|
||||
char *next_rule_specificity_lawname; /* name of Law used to sort */
|
||||
struct text_stream *next_rule_specificity_law; /* description of reason */
|
||||
struct text_stream *next_rule_specificity_lawname; /* name of Law used to sort */
|
||||
|
||||
CLASS_DEFINITION
|
||||
} booking;
|
||||
|
@ -562,7 +562,7 @@ void Rules::Bookings::list_resume_indexed_links(void) {
|
|||
}
|
||||
|
||||
void Rules::Bookings::br_start_index_line(OUTPUT_STREAM, booking *prev, char *billing) {
|
||||
HTMLFiles::open_para(OUT, 2, "hanging");
|
||||
HTML::open_indented_p(OUT, 2, "hanging");
|
||||
if ((billing[0]) && (show_index_links)) Rules::Bookings::br_show_linkage_icon(OUT, prev);
|
||||
WRITE("%s", billing);
|
||||
WRITE(" ");
|
||||
|
@ -573,19 +573,20 @@ void Rules::Bookings::br_start_index_line(OUTPUT_STREAM, booking *prev, char *bi
|
|||
|
||||
=
|
||||
void Rules::Bookings::br_show_linkage_icon(OUTPUT_STREAM, booking *prev) {
|
||||
char *icon_name = NULL; /* redundant assignment to appease |gcc -O2| */
|
||||
text_stream *icon_name = NULL; /* redundant assignment to appease |gcc -O2| */
|
||||
if ((prev == NULL) || (prev->next_rule_specificity_law == NULL)) {
|
||||
HTMLFiles::html_icon_with_tooltip(OUT, "rulenone.png", "start of rulebook", NULL);
|
||||
HTML::icon_with_tooltip(OUT, I"inform:/doc_images/rulenone.png",
|
||||
I"start of rulebook", NULL);
|
||||
return;
|
||||
}
|
||||
switch (prev->next_rule_specificity) {
|
||||
case -1: icon_name = "ruleless.png"; break;
|
||||
case 0: icon_name = "ruleequal.png"; break;
|
||||
case 1: icon_name = "rulemore.png"; break;
|
||||
case -1: icon_name = I"inform:/doc_images/ruleless.png"; break;
|
||||
case 0: icon_name = I"inform:/doc_images/ruleequal.png"; break;
|
||||
case 1: icon_name = I"inform:/doc_images/rulemore.png"; break;
|
||||
default: internal_error("unknown rule specificity");
|
||||
}
|
||||
HTMLFiles::html_icon_with_tooltip(OUT, icon_name, prev->next_rule_specificity_law,
|
||||
prev->next_rule_specificity_lawname);
|
||||
HTML::icon_with_tooltip(OUT, icon_name,
|
||||
prev->next_rule_specificity_law, prev->next_rule_specificity_lawname);
|
||||
}
|
||||
|
||||
@h Calculating the specificities.
|
||||
|
@ -617,13 +618,11 @@ void Rules::Bookings::list_judge_ordering(booking *list_head) {
|
|||
switch(br->next_rule->placement) {
|
||||
case MIDDLE_PLACEMENT:
|
||||
br->next_rule_specificity_law =
|
||||
"the rule above was listed as 'first' so precedes this "
|
||||
"one, which wasn't";
|
||||
I"the rule above was listed as 'first' so precedes this one, which wasn't";
|
||||
break;
|
||||
case LAST_PLACEMENT:
|
||||
br->next_rule_specificity_law =
|
||||
"the rule above was listed as 'first' so precedes this "
|
||||
"one, which was listed as 'last'";
|
||||
I"the rule above was listed as 'first' so precedes this one, which was listed as 'last'";
|
||||
break;
|
||||
default:
|
||||
Rules::Bookings::list_log(list_head);
|
||||
|
@ -635,8 +634,7 @@ void Rules::Bookings::list_judge_ordering(booking *list_head) {
|
|||
switch(br->next_rule->placement) {
|
||||
case LAST_PLACEMENT:
|
||||
br->next_rule_specificity_law =
|
||||
"the rule below was listed as 'last' so comes after the "
|
||||
"rule above, which wasn't";
|
||||
I"the rule below was listed as 'last' so comes after the rule above, which wasn't";
|
||||
break;
|
||||
default:
|
||||
Rules::Bookings::list_log(list_head);
|
||||
|
@ -656,27 +654,23 @@ void Rules::Bookings::list_judge_ordering(booking *list_head) {
|
|||
case FIRST_PLACEMENT:
|
||||
br->next_rule_specificity = 0;
|
||||
br->next_rule_specificity_law =
|
||||
"these rules were both listed as 'first', so they appear in "
|
||||
"reverse order of listing";
|
||||
I"these rules were both listed as 'first', so they appear in reverse order of listing";
|
||||
break;
|
||||
case MIDDLE_PLACEMENT:
|
||||
r = Rules::Bookings::compare_specificity_of_br(br, br->next_rule, FALSE);
|
||||
br->next_rule_specificity = r;
|
||||
if (r == 0) br->next_rule_specificity_law =
|
||||
"these rules are equally ranked, so their order is determined by "
|
||||
"which was defined first (or by explicit 'listed in' sentences)";
|
||||
I"these rules are equally ranked, so their order is determined by which was defined first (or by explicit 'listed in' sentences)";
|
||||
else {
|
||||
br->next_rule_specificity_law =
|
||||
"the arrow points from a more specific rule to a more general one, "
|
||||
"as decided by Law";
|
||||
I"the arrow points from a more specific rule to a more general one, as decided by Law";
|
||||
br->next_rule_specificity_lawname = c_s_stage_law;
|
||||
}
|
||||
break;
|
||||
case LAST_PLACEMENT:
|
||||
br->next_rule_specificity = 0;
|
||||
br->next_rule_specificity_law =
|
||||
"these rules were both listed as 'last', so they appear in order "
|
||||
"of listing";
|
||||
I"these rules were both listed as 'last', so they appear in order of listing";
|
||||
break;
|
||||
}
|
||||
|
||||
|
@ -706,11 +700,11 @@ void Rules::Bookings::list_compile_rule_phrases(booking *list_head,
|
|||
WRITE_TO(C, " ---");
|
||||
Produce::comment(Emit::tree(), C);
|
||||
} else {
|
||||
char *law = br->next_rule_specificity_lawname;
|
||||
text_stream *law = br->next_rule_specificity_lawname;
|
||||
switch(br->next_rule_specificity) {
|
||||
case -1: WRITE_TO(C, " <<< %s <<<", law); Produce::comment(Emit::tree(), C); break;
|
||||
case -1: WRITE_TO(C, " <<< %S <<<", law); Produce::comment(Emit::tree(), C); break;
|
||||
case 0: WRITE_TO(C, " === equally specific with ==="); Produce::comment(Emit::tree(), C); break;
|
||||
case 1: WRITE_TO(C, " >>> %s >>>", law); Produce::comment(Emit::tree(), C); break;
|
||||
case 1: WRITE_TO(C, " >>> %S >>>", law); Produce::comment(Emit::tree(), C); break;
|
||||
}
|
||||
}
|
||||
DISCARD_TEXT(C);
|
||||
|
|
|
@ -1182,7 +1182,7 @@ void Rulebooks::index_rules_box(OUTPUT_STREAM, char *name, wording W, text_strea
|
|||
Str::put(start, Characters::tolower(Str::get(start)));
|
||||
|
||||
if (hide_behind_plus) {
|
||||
HTMLFiles::open_para(OUT, indent+1, "tight");
|
||||
HTML::open_indented_p(OUT, indent+1, "tight");
|
||||
Index::extra_link(OUT, xtra_no);
|
||||
if (n == 0) HTML::begin_colour(OUT, I"808080");
|
||||
WRITE("%S", textual_name);
|
||||
|
@ -1193,7 +1193,7 @@ void Rulebooks::index_rules_box(OUTPUT_STREAM, char *name, wording W, text_strea
|
|||
|
||||
Index::extra_div_open(OUT, xtra_no, indent+1, col);
|
||||
} else {
|
||||
HTMLFiles::open_para(OUT, indent, "");
|
||||
HTML::open_indented_p(OUT, indent, "");
|
||||
HTML::open_coloured_box(OUT, col, ROUND_BOX_TOP+ROUND_BOX_BOTTOM);
|
||||
}
|
||||
|
||||
|
@ -1201,30 +1201,30 @@ void Rulebooks::index_rules_box(OUTPUT_STREAM, char *name, wording W, text_strea
|
|||
HTML::first_html_column(OUT, 0);
|
||||
|
||||
|
||||
HTMLFiles::open_para(OUT, 1, "tight");
|
||||
HTML::open_indented_p(OUT, 1, "tight");
|
||||
WRITE("<b>%S</b>", textual_name);
|
||||
@<Write the titling line of an index rules box@>;
|
||||
HTML_CLOSE("p");
|
||||
|
||||
HTML::next_html_column_right_justified(OUT, 0);
|
||||
|
||||
HTMLFiles::open_para(OUT, 1, "tight");
|
||||
HTML::open_indented_p(OUT, 1, "tight");
|
||||
if (av) {
|
||||
TEMPORARY_TEXT(skeleton);
|
||||
WRITE_TO(skeleton, "Before %S:", textual_name);
|
||||
HTML::Javascript::paste_stream(OUT, skeleton);
|
||||
PasteButtons::paste_text(OUT, skeleton);
|
||||
WRITE(" <i>b</i> ");
|
||||
Str::clear(skeleton);
|
||||
WRITE_TO(skeleton, "Rule for %S:", textual_name);
|
||||
HTML::Javascript::paste_stream(OUT, skeleton);
|
||||
PasteButtons::paste_text(OUT, skeleton);
|
||||
WRITE(" <i>f</i> ");
|
||||
Str::clear(skeleton);
|
||||
WRITE_TO(skeleton, "After %S:", textual_name);
|
||||
HTML::Javascript::paste_stream(OUT, skeleton);
|
||||
PasteButtons::paste_text(OUT, skeleton);
|
||||
WRITE(" <i>a</i>");
|
||||
DISCARD_TEXT(skeleton);
|
||||
} else {
|
||||
HTML::Javascript::paste_stream(OUT, textual_name);
|
||||
PasteButtons::paste_text(OUT, textual_name);
|
||||
WRITE(" <i>name</i>");
|
||||
}
|
||||
HTML_CLOSE("p");
|
||||
|
@ -1236,7 +1236,7 @@ void Rulebooks::index_rules_box(OUTPUT_STREAM, char *name, wording W, text_strea
|
|||
if ((rb) && (Rulebooks::is_empty(rb, Rulebooks::no_rule_context())))
|
||||
text = "There are no rules in this rulebook.";
|
||||
if (text) {
|
||||
HTMLFiles::open_para(OUT, 2, "tight");
|
||||
HTML::open_indented_p(OUT, 2, "tight");
|
||||
WRITE("%s", text); HTML_CLOSE("p");
|
||||
} else {
|
||||
if (rb) {
|
||||
|
|
|
@ -356,7 +356,7 @@ int Rules::compare_specificity(rule *R1, rule *R2, int dflag) {
|
|||
if (ph2) phrcd2 = &(ph2->runtime_context_data);
|
||||
int rv = Phrases::Context::compare_specificity(phrcd1, phrcd2);
|
||||
if (dflag) {
|
||||
if (rv != 0) LOG("Decided by Law %s that ", c_s_stage_law);
|
||||
if (rv != 0) LOG("Decided by Law %S that ", c_s_stage_law);
|
||||
else LOG("Decided that ");
|
||||
switch(rv) {
|
||||
case -1: LOG("(2) is more specific than (1)\n"); break;
|
||||
|
@ -775,12 +775,12 @@ int Rules::index(OUTPUT_STREAM, rule *R, rulebook *owner, rule_context rc) {
|
|||
|
||||
TEMPORARY_TEXT(S);
|
||||
WRITE_TO(S, "%+W", R->name);
|
||||
HTML::Javascript::paste_stream(OUT, S);
|
||||
PasteButtons::paste_text(OUT, S);
|
||||
WRITE(" <i>name</i> ");
|
||||
|
||||
Str::clear(S);
|
||||
WRITE_TO(S, "The %W is not listed in the %W rulebook.\n", R->name, owner->primary_name);
|
||||
HTML::Javascript::paste_stream(OUT, S);
|
||||
PasteButtons::paste_text(OUT, S);
|
||||
WRITE(" <i>unlist</i>");
|
||||
DISCARD_TEXT(S);
|
||||
|
||||
|
|
|
@ -166,7 +166,7 @@ void StackedVariables::index_owner(OUTPUT_STREAM, stacked_variable_owner *stvo)
|
|||
stacked_variable_list *stvl;
|
||||
for (stvl=stvo->list_of_stvs; stvl; stvl = stvl->next)
|
||||
if ((stvl->the_stv) && (stvl->the_stv->underlying_var)) {
|
||||
HTMLFiles::open_para(OUT, 2, "tight");
|
||||
HTML::open_indented_p(OUT, 2, "tight");
|
||||
NonlocalVariables::index_single(OUT, stvl->the_stv->underlying_var);
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
|
|
@ -267,7 +267,7 @@ void Phrases::TypeData::Textual::write_reveal_box(OUTPUT_STREAM, ph_type_data *p
|
|||
@<Present a paste button containing the text of the phrase@> =
|
||||
TEMPORARY_TEXT(TEMP);
|
||||
Phrases::write_HTML_representation(TEMP, ph, PASTE_PHRASE_FORMAT);
|
||||
HTML::Javascript::paste_stream(OUT, TEMP);
|
||||
PasteButtons::paste_text(OUT, TEMP);
|
||||
DISCARD_TEXT(TEMP);
|
||||
WRITE(" ");
|
||||
|
||||
|
@ -291,7 +291,7 @@ of course.
|
|||
HTML_CLOSE("p");
|
||||
HTML_OPEN("p");
|
||||
WRITE("<b>In equations:</b> write as ");
|
||||
HTML::Javascript::paste_W(OUT, W);
|
||||
PasteButtons::paste_W(OUT, W);
|
||||
WRITE(" %+W()", W);
|
||||
}
|
||||
|
||||
|
@ -301,7 +301,7 @@ of course.
|
|||
HTML_CLOSE("p");
|
||||
HTML_OPEN("p");
|
||||
WRITE("<b>Name:</b> ");
|
||||
HTML::Javascript::paste_W(OUT, W);
|
||||
PasteButtons::paste_W(OUT, W);
|
||||
WRITE(" %+W", W);
|
||||
}
|
||||
|
||||
|
|
|
@ -77,7 +77,7 @@ void Phrases::Options::index(OUTPUT_STREAM, ph_options_data *phod) {
|
|||
if (phod->multiple_options_permitted) WRITE("<i>and/or</i> ");
|
||||
else WRITE("<i>or</i> ");
|
||||
}
|
||||
HTML::Javascript::paste_W(OUT, po->name);
|
||||
PasteButtons::paste_W(OUT, po->name);
|
||||
WRITE(" %+W", po->name);
|
||||
if (i < phod->no_options_permitted-1) {
|
||||
WRITE(",");
|
||||
|
|
|
@ -214,7 +214,7 @@ int Phrases::Context::compare_specificity(ph_runtime_context_data *rcd1,
|
|||
@ More constraints beats fewer.
|
||||
|
||||
@<Apply comparison law I@> =
|
||||
c_s_stage_law = "I - Number of aspects constrained";
|
||||
c_s_stage_law = I"I - Number of aspects constrained";
|
||||
int rct1 = 0, rct2 = 0;
|
||||
#ifdef IF_MODULE
|
||||
rct1 = PL::Actions::Patterns::count_aspects(ap1);
|
||||
|
@ -239,7 +239,7 @@ int Phrases::Context::compare_specificity(ph_runtime_context_data *rcd1,
|
|||
@ More when/while conditions beats fewer.
|
||||
|
||||
@<Apply comparison law III@> =
|
||||
c_s_stage_law = "III - When/while requirement";
|
||||
c_s_stage_law = I"III - When/while requirement";
|
||||
if ((Wordings::nonempty(AL1W)) && (Wordings::empty(AL2W))) return 1;
|
||||
if ((Wordings::empty(AL1W)) && (Wordings::nonempty(AL2W))) return -1;
|
||||
if (Wordings::nonempty(AL1W)) {
|
||||
|
@ -252,7 +252,7 @@ int Phrases::Context::compare_specificity(ph_runtime_context_data *rcd1,
|
|||
@ A more specific action (or parameter) beats a less specific one.
|
||||
|
||||
@<Apply comparison law IV@> =
|
||||
c_s_stage_law = "IV - Action requirement";
|
||||
c_s_stage_law = I"IV - Action requirement";
|
||||
#ifdef IF_MODULE
|
||||
int rv = PL::Actions::Patterns::compare_specificity(ap1, ap2);
|
||||
if (rv != 0) return rv;
|
||||
|
@ -261,7 +261,7 @@ int Phrases::Context::compare_specificity(ph_runtime_context_data *rcd1,
|
|||
@ A rule with a scene requirement beats one without.
|
||||
|
||||
@<Apply comparison law V@> =
|
||||
c_s_stage_law = "V - Scene requirement";
|
||||
c_s_stage_law = I"V - Scene requirement";
|
||||
#ifdef IF_MODULE
|
||||
if ((sc1 != NULL) && (sc2 == NULL)) return 1;
|
||||
if ((sc1 == NULL) && (sc2 != NULL)) return -1;
|
||||
|
|
|
@ -308,7 +308,7 @@ void Plugins::Manage::index_innards(OUTPUT_STREAM, target_vm *VM) {
|
|||
if (Str::len(da->unhyphenated_name) > 0) {
|
||||
TEMPORARY_TEXT(is);
|
||||
WRITE_TO(is, "Include %S in the debugging log.", da->unhyphenated_name);
|
||||
HTML::Javascript::paste_stream(OUT, is);
|
||||
PasteButtons::paste_text(OUT, is);
|
||||
WRITE(" %S", is);
|
||||
DISCARD_TEXT(is);
|
||||
HTML_TAG("br");
|
||||
|
|
|
@ -466,7 +466,7 @@ void UseOptions::index(OUTPUT_STREAM) {
|
|||
}
|
||||
if (nt > 0) {
|
||||
HTML_OPEN("p"); WRITE("Whereas these are not in force:"); HTML_CLOSE("p");
|
||||
HTMLFiles::open_para(OUT, 2, "tight");
|
||||
HTML::open_indented_p(OUT, 2, "tight");
|
||||
LOOP_OVER(uo, use_option) {
|
||||
if (uo->source_file_scoped) continue;
|
||||
if ((uo->option_used == FALSE) && (uo->minimum_setting_value < 0)) {
|
||||
|
@ -482,7 +482,7 @@ void UseOptions::index(OUTPUT_STREAM) {
|
|||
HTML_OPEN_WITH("span", "style=\"white-space:nowrap\";");
|
||||
TEMPORARY_TEXT(TEMP);
|
||||
WRITE_TO(TEMP, "Use %+W.", uo->name);
|
||||
HTML::Javascript::paste_stream(OUT, TEMP);
|
||||
PasteButtons::paste_text(OUT, TEMP);
|
||||
DISCARD_TEXT(TEMP);
|
||||
WRITE(" %+W", uo->name);
|
||||
HTML_CLOSE("span");
|
||||
|
@ -510,7 +510,7 @@ void UseOptions::index_options_in_force_from(OUTPUT_STREAM, int category, inform
|
|||
}
|
||||
|
||||
@<Write in the use option subheading@> =
|
||||
HTMLFiles::open_para(OUT, 2, "tight");
|
||||
HTML::open_indented_p(OUT, 2, "tight");
|
||||
HTML::begin_colour(OUT, I"808080");
|
||||
WRITE("Set from ");
|
||||
switch (category) {
|
||||
|
@ -530,7 +530,7 @@ void UseOptions::index_options_in_force_from(OUTPUT_STREAM, int category, inform
|
|||
HTML_CLOSE("p");
|
||||
|
||||
@<Write in the index line for a use option taken@> =
|
||||
HTMLFiles::open_para(OUT, 3, "tight");
|
||||
HTML::open_indented_p(OUT, 3, "tight");
|
||||
WRITE("Use %+W", uo->name);
|
||||
if (uo->minimum_setting_value >= 0) WRITE(" of at least %d", uo->minimum_setting_value);
|
||||
if (uo->where_used) Index::link(OUT, Wordings::first_wn(ParseTree::get_text(uo->where_used)));
|
||||
|
@ -538,7 +538,7 @@ void UseOptions::index_options_in_force_from(OUTPUT_STREAM, int category, inform
|
|||
WRITE(" ");
|
||||
TEMPORARY_TEXT(TEMP);
|
||||
WRITE_TO(TEMP, "Use %+W of at least %d.", uo->name, 2*(uo->minimum_setting_value));
|
||||
HTML::Javascript::paste_stream(OUT, TEMP);
|
||||
PasteButtons::paste_text(OUT, TEMP);
|
||||
DISCARD_TEXT(TEMP);
|
||||
WRITE(" <i>Double this</i>");
|
||||
}
|
||||
|
|
|
@ -183,7 +183,7 @@ void Data::Objects::index(OUTPUT_STREAM, instance *I, kind *K, int depth, int de
|
|||
@<Begin the object citation line@> =
|
||||
if (tabulating_kinds_index) Kinds::Index::begin_chart_row(OUT);
|
||||
if (details) {
|
||||
HTMLFiles::open_para(OUT, depth, "halftight");
|
||||
HTML::open_indented_p(OUT, depth, "halftight");
|
||||
if ((K) || (I != indexing_room)) Index::anchor(OUT, UseNouns::identifier(nt));
|
||||
} else {
|
||||
#ifdef IF_MODULE
|
||||
|
@ -283,7 +283,7 @@ void Data::Objects::index(OUTPUT_STREAM, instance *I, kind *K, int depth, int de
|
|||
}
|
||||
|
||||
@<Add a subsidiary paragraph of details about this object@> =
|
||||
HTMLFiles::open_para(OUT, depth, "tight");
|
||||
HTML::open_indented_p(OUT, depth, "tight");
|
||||
if (I) World::Inferences::index(OUT, Instances::as_subject(I), TRUE);
|
||||
else World::Inferences::index(OUT, Kinds::Knowledge::as_subject(K), TRUE);
|
||||
if (K) {
|
||||
|
@ -292,7 +292,7 @@ void Data::Objects::index(OUTPUT_STREAM, instance *I, kind *K, int depth, int de
|
|||
}
|
||||
|
||||
@<Add the chain of kinds@> =
|
||||
HTMLFiles::open_para(OUT, 1, "tight");
|
||||
HTML::open_indented_p(OUT, 1, "tight");
|
||||
kind *IK = Instances::to_kind(I);
|
||||
int i = 0;
|
||||
while ((IK != K_object) && (IK)) {
|
||||
|
@ -319,7 +319,7 @@ void Data::Objects::index(OUTPUT_STREAM, instance *I, kind *K, int depth, int de
|
|||
|
||||
@ =
|
||||
void Data::Objects::index_instances(OUTPUT_STREAM, kind *K, int depth) {
|
||||
HTMLFiles::open_para(OUT, depth, "tight");
|
||||
HTML::open_indented_p(OUT, depth, "tight");
|
||||
int c = 0;
|
||||
instance *I;
|
||||
LOOP_OVER_INSTANCES(I, K) c++;
|
||||
|
|
|
@ -578,7 +578,7 @@ void Instances::index_usages(OUTPUT_STREAM, instance *I) {
|
|||
if (Projects::draws_from_source_file(Task::project(), sf)) {
|
||||
k++;
|
||||
if (k == 1) {
|
||||
HTMLFiles::open_para(OUT, 1, "tight");
|
||||
HTML::open_indented_p(OUT, 1, "tight");
|
||||
WRITE("<i>mentioned in rules:</i> ");
|
||||
} else WRITE("; ");
|
||||
Index::link(OUT, Wordings::first_wn(ParseTree::get_text(at)));
|
||||
|
|
|
@ -1900,7 +1900,7 @@ note that the following uses the raw text of the word.
|
|||
WRITE("%<N", lp->lp_tokens[tc].token_wn);
|
||||
|
||||
@<Index a character token within a literal pattern@> =
|
||||
HTMLFiles::char_out(OUT, lp->lp_tokens[tc].token_char);
|
||||
HTML::put(OUT, lp->lp_tokens[tc].token_char);
|
||||
|
||||
@<Index an element token within a literal pattern@> =
|
||||
if (Kinds::FloatingPoint::uses_floating_point(lp->kind_specified)) {
|
||||
|
|
|
@ -1162,7 +1162,7 @@ void NewVerbs::tabulate(OUTPUT_STREAM, lexicon_entry *lex, int tense, char *tens
|
|||
&& (VerbUsages::get_tense_used(vu) == tense)) {
|
||||
vocabulary_entry *lastword = WordAssemblages::last_word(&(vu->vu_text));
|
||||
if (f) {
|
||||
HTMLFiles::open_para(OUT, 2, "tight");
|
||||
HTML::open_indented_p(OUT, 2, "tight");
|
||||
WRITE("<i>%s:</i> ", tensename);
|
||||
} else WRITE("; ");
|
||||
if (Wide::cmp(Vocabulary::get_exemplar(lastword, FALSE), L"by") == 0) WRITE("B ");
|
||||
|
|
|
@ -485,7 +485,7 @@ in practice strews distractingly many orange berries across the page.
|
|||
wording W = Nouns::get_name(nt, FALSE);
|
||||
if (Wordings::nonempty(W)) {
|
||||
if (c++ == 0) {
|
||||
HTMLFiles::open_para(OUT, ind_used+1, "hanging");
|
||||
HTML::open_indented_p(OUT, ind_used+1, "hanging");
|
||||
HTML::begin_colour(OUT, I"808080");
|
||||
} else WRITE(", ");
|
||||
WRITE("<i>%+W</i>", W);
|
||||
|
|
|
@ -256,7 +256,7 @@ void Extensions::Files::index_extensions_from(OUTPUT_STREAM, inform_extension *f
|
|||
}
|
||||
if (owner != from) continue;
|
||||
if (show_head) {
|
||||
HTMLFiles::open_para(OUT, 2, "hanging");
|
||||
HTML::open_indented_p(OUT, 2, "hanging");
|
||||
HTML::begin_colour(OUT, I"808080");
|
||||
WRITE("Included ");
|
||||
if (Extensions::is_standard(from)) WRITE("automatically by Inform");
|
||||
|
|
|
@ -620,12 +620,12 @@ void PL::Bibliographic::Release::write_ifiction_record(OUTPUT_STREAM, zbyte *hea
|
|||
TEMPORARY_TEXT(rel);
|
||||
Filenames::to_text_relative(rel, af->name_of_original_file,
|
||||
Projects::materials_path(Task::project()));
|
||||
HTMLFiles::write_xml_safe_text(OUT, rel);
|
||||
HTML::write_xml_safe_text(OUT, rel);
|
||||
DISCARD_TEXT(rel);
|
||||
WRITE("</leafname>\n");
|
||||
if (Str::len(af->brief_description) > 0) {
|
||||
WRITE("<description>");
|
||||
HTMLFiles::write_xml_safe_text(OUT, af->brief_description);
|
||||
HTML::write_xml_safe_text(OUT, af->brief_description);
|
||||
WRITE("</description>\n");
|
||||
}
|
||||
OUTDENT; WRITE("</auxiliary>\n");
|
||||
|
|
|
@ -965,7 +965,7 @@ void PL::HTMLMap::index_room_square(OUTPUT_STREAM, instance *I, int pass) {
|
|||
HTML_OPEN_WITH("span", "style=\"font-size:%dpx;\"", HTML_MAP_FONT_SIZE);
|
||||
#endif
|
||||
LOOP_THROUGH_TEXT(pos, abbrev)
|
||||
HTMLFiles::char_out(OUT, Str::get(pos));
|
||||
HTML::put(OUT, Str::get(pos));
|
||||
#ifdef HTML_MAP_FONT_SIZE
|
||||
HTML_CLOSE("span");
|
||||
#endif
|
||||
|
|
|
@ -2833,7 +2833,7 @@ void PL::SpatialMap::index_room_connections(OUTPUT_STREAM, instance *R) {
|
|||
instance *D = NULL;
|
||||
instance *S = PL::SpatialMap::room_exit(R, i, &D);
|
||||
if ((S) || (D)) {
|
||||
HTMLFiles::open_para(OUT, 1, "tight");
|
||||
HTML::open_indented_p(OUT, 1, "tight");
|
||||
char *icon = "e_arrow";
|
||||
if ((S) && (D)) icon = "e_arrow_door";
|
||||
else if (D) icon = "e_arrow_door_blocked";
|
||||
|
@ -2881,7 +2881,7 @@ void PL::SpatialMap::index_room_connections(OUTPUT_STREAM, instance *R) {
|
|||
wording DW = Instances::get_name(dir, FALSE); /* name of the direction */
|
||||
k++;
|
||||
if (k == 1) {
|
||||
HTMLFiles::open_para(OUT, 1, "hanging");
|
||||
HTML::open_indented_p(OUT, 1, "hanging");
|
||||
WRITE("<i>add:</i> ");
|
||||
} else {
|
||||
WRITE("; ");
|
||||
|
@ -2898,7 +2898,7 @@ void PL::SpatialMap::index_room_connections(OUTPUT_STREAM, instance *R) {
|
|||
if (Wordings::nonempty(RW)) WRITE_TO(TEMP, "%+W", RW);
|
||||
else WRITE_TO(TEMP, "here");
|
||||
WRITE_TO(TEMP, " is .[=0x000A=]");
|
||||
HTML::Javascript::paste_stream(OUT, TEMP);
|
||||
PasteButtons::paste_text(OUT, TEMP);
|
||||
DISCARD_TEXT(TEMP);
|
||||
WRITE(" %+W", DW);
|
||||
}
|
||||
|
|
|
@ -1352,7 +1352,7 @@ void PL::Spatial::index_object_further(OUTPUT_STREAM, instance *I, int depth, in
|
|||
=
|
||||
int PL::Spatial::spatial_add_to_World_index(OUTPUT_STREAM, instance *O) {
|
||||
if ((O) && (Instances::of_kind(O, K_thing))) {
|
||||
HTMLFiles::open_para(OUT, 1, "tight");
|
||||
HTML::open_indented_p(OUT, 1, "tight");
|
||||
instance *P = PL::Spatial::progenitor(O);
|
||||
if (P) {
|
||||
WRITE("<i>initial location:</i> ");
|
||||
|
|
|
@ -120,7 +120,7 @@ fact, end.
|
|||
}
|
||||
|
||||
@<Index the name and recurrence status of the scene@> =
|
||||
HTMLFiles::open_para(OUT, 1, "hanging");
|
||||
HTML::open_indented_p(OUT, 1, "hanging");
|
||||
Index::anchor_numbered(OUT, sc->allocation_id);
|
||||
WRITE("<b>The <i>%+W</i> scene</b>", PL::Scenes::get_name(sc));
|
||||
Index::link(OUT, Wordings::first_wn(ParseTree::get_text(sc->scene_declared_at)));
|
||||
|
@ -130,7 +130,7 @@ fact, end.
|
|||
HTML_CLOSE("p");
|
||||
|
||||
@<Explain the Entire Game scene@> =
|
||||
HTMLFiles::open_para(OUT, 1, "tight");
|
||||
HTML::open_indented_p(OUT, 1, "tight");
|
||||
WRITE("The Entire Game scene is built-in. It is going on whenever play is "
|
||||
"going on. (It is recurring so that if the story ends, but then resumes, "
|
||||
"it too will end but then begin again.)");
|
||||
|
@ -142,11 +142,11 @@ fact, end.
|
|||
LOOP_OVER(rb, rulebook) {
|
||||
if (Rulebooks::is_empty(rb, Rulebooks::scene_context(sc)) == FALSE) {
|
||||
if (rbc++ == 0) {
|
||||
HTMLFiles::open_para(OUT, 1, "hanging");
|
||||
HTML::open_indented_p(OUT, 1, "hanging");
|
||||
WRITE("<i>During this scene:</i>");
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
HTMLFiles::open_para(OUT, 2, "hanging");
|
||||
HTML::open_indented_p(OUT, 2, "hanging");
|
||||
WRITE("<i>%+W</i>", rb->primary_name); HTML_CLOSE("p");
|
||||
int ignore_me = 0;
|
||||
Rulebooks::index(OUT, rb, "", Rulebooks::scene_context(sc), &ignore_me);
|
||||
|
@ -154,7 +154,7 @@ fact, end.
|
|||
}
|
||||
|
||||
@<Index the conditions for this scene end to occur@> =
|
||||
HTMLFiles::open_para(OUT, 1, "hanging");
|
||||
HTML::open_indented_p(OUT, 1, "hanging");
|
||||
WRITE("<i>%s ", (end==0)?"Begins":"Ends");
|
||||
if (end >= 2) WRITE("%+W ", sc->end_names[end]);
|
||||
WRITE("when:</i> ");
|
||||
|
@ -202,7 +202,7 @@ fact, end.
|
|||
|
||||
@<Index the rules which apply when this scene end occurs@> =
|
||||
if (Rulebooks::is_empty(sc->end_rulebook[end], Rulebooks::no_rule_context()) == FALSE) {
|
||||
HTMLFiles::open_para(OUT, 1, "hanging");
|
||||
HTML::open_indented_p(OUT, 1, "hanging");
|
||||
WRITE("<i>What happens:</i>"); HTML_CLOSE("p");
|
||||
int ignore_me = 0;
|
||||
Rulebooks::index(OUT, sc->end_rulebook[end], "", Rulebooks::no_rule_context(), &ignore_me);
|
||||
|
@ -226,7 +226,7 @@ on the initial call when |depth| is 0.
|
|||
=
|
||||
void PL::Scenes::Index::index_from_scene(OUTPUT_STREAM, scene *sc, int depth,
|
||||
int end, scene *sc_from, scene **sorted, int nr) {
|
||||
HTMLFiles::open_para(OUT, depth+1, "tight");
|
||||
HTML::open_indented_p(OUT, depth+1, "tight");
|
||||
@<Indicate the route by which this scene was reached@>;
|
||||
@<Name the scene in the table, italicised if we've seen it already@>;
|
||||
if (sc->indexed == FALSE) {
|
||||
|
|
|
@ -1231,12 +1231,12 @@ int PL::Actions::Patterns::compare_specificity(action_pattern *ap1, action_patte
|
|||
if ((ap1->valid == FALSE) && (ap2->valid != FALSE)) return -1;
|
||||
if ((ap1->valid != FALSE) && (ap2->valid == FALSE)) return 1;
|
||||
|
||||
c_s_stage_law = "III.1 - Object To Which Rule Applies";
|
||||
c_s_stage_law = I"III.1 - Object To Which Rule Applies";
|
||||
|
||||
rv = Specifications::compare_specificity(ap1->parameter_spec, ap2->parameter_spec, NULL);
|
||||
if (rv != 0) return rv;
|
||||
|
||||
c_s_stage_law = "III.2.1 - Action/Where/Going In Exotic Ways";
|
||||
c_s_stage_law = I"III.2.1 - Action/Where/Going In Exotic Ways";
|
||||
|
||||
rct1 = PL::Actions::Patterns::ap_count_going(ap1); rct2 = PL::Actions::Patterns::ap_count_going(ap2);
|
||||
if (rct1 > rct2) return 1;
|
||||
|
@ -1251,7 +1251,7 @@ int PL::Actions::Patterns::compare_specificity(action_pattern *ap1, action_patte
|
|||
rv = Specifications::compare_specificity(ap1->through_spec, ap2->through_spec, NULL);
|
||||
if (rv != 0) return rv;
|
||||
|
||||
c_s_stage_law = "III.2.2 - Action/Where/Room Where Action Takes Place";
|
||||
c_s_stage_law = I"III.2.2 - Action/Where/Room Where Action Takes Place";
|
||||
|
||||
rct1 = PL::Actions::Patterns::ap_count_rooms(ap1); rct2 = PL::Actions::Patterns::ap_count_rooms(ap2);
|
||||
if (rct1 > rct2) return 1;
|
||||
|
@ -1284,22 +1284,22 @@ int PL::Actions::Patterns::compare_specificity(action_pattern *ap1, action_patte
|
|||
rv = Specifications::compare_specificity(ap1->to_spec, ap2->to_spec, NULL);
|
||||
if (rv != 0) return rv;
|
||||
|
||||
c_s_stage_law = "III.2.3 - Action/Where/In The Presence Of";
|
||||
c_s_stage_law = I"III.2.3 - Action/Where/In The Presence Of";
|
||||
|
||||
rv = Specifications::compare_specificity(ap1->presence_spec, ap2->presence_spec, NULL);
|
||||
if (rv != 0) return rv;
|
||||
|
||||
c_s_stage_law = "III.2.4 - Action/Where/Other Optional Clauses";
|
||||
c_s_stage_law = I"III.2.4 - Action/Where/Other Optional Clauses";
|
||||
|
||||
rv = PL::Actions::Patterns::compare_specificity_of_apoc_list(ap1, ap2);
|
||||
if (rv != 0) return rv;
|
||||
|
||||
c_s_stage_law = "III.3.1 - Action/What/Second Thing Acted On";
|
||||
c_s_stage_law = I"III.3.1 - Action/What/Second Thing Acted On";
|
||||
|
||||
rv = Specifications::compare_specificity(ap1->second_spec, ap2->second_spec, NULL);
|
||||
if (rv != 0) return rv;
|
||||
|
||||
c_s_stage_law = "III.3.2 - Action/What/Thing Acted On";
|
||||
c_s_stage_law = I"III.3.2 - Action/What/Thing Acted On";
|
||||
|
||||
rv = Specifications::compare_specificity(ap1->noun_spec, ap2->noun_spec, NULL);
|
||||
if (rv != 0) return rv;
|
||||
|
@ -1307,27 +1307,27 @@ int PL::Actions::Patterns::compare_specificity(action_pattern *ap1, action_patte
|
|||
if ((ap1->nowhere_flag) && (ap2->nowhere_flag == FALSE)) return -1;
|
||||
if ((ap1->nowhere_flag == FALSE) && (ap2->nowhere_flag)) return 1;
|
||||
|
||||
c_s_stage_law = "III.3.3 - Action/What/Actor Performing Action";
|
||||
c_s_stage_law = I"III.3.3 - Action/What/Actor Performing Action";
|
||||
|
||||
rv = Specifications::compare_specificity(ap1->actor_spec, ap2->actor_spec, NULL);
|
||||
if (rv != 0) return rv;
|
||||
|
||||
c_s_stage_law = "III.4.1 - Action/How/What Happens";
|
||||
c_s_stage_law = I"III.4.1 - Action/How/What Happens";
|
||||
|
||||
rv = PL::Actions::Lists::compare_specificity(ap1->action, ap2->action);
|
||||
if (rv != 0) return rv;
|
||||
|
||||
c_s_stage_law = "III.5.1 - Action/When/Duration";
|
||||
c_s_stage_law = I"III.5.1 - Action/When/Duration";
|
||||
|
||||
rv = Occurrence::compare_specificity(&(ap1->duration), &(ap2->duration));
|
||||
if (rv != 0) return rv;
|
||||
|
||||
c_s_stage_law = "III.5.2 - Action/When/Circumstances";
|
||||
c_s_stage_law = I"III.5.2 - Action/When/Circumstances";
|
||||
|
||||
rv = Conditions::compare_specificity_of_CONDITIONs(ap1->when, ap2->when);
|
||||
if (rv != 0) return rv;
|
||||
|
||||
c_s_stage_law = "III.6.1 - Action/Name/Is This Named";
|
||||
c_s_stage_law = I"III.6.1 - Action/Name/Is This Named";
|
||||
|
||||
if ((PL::Actions::Patterns::is_named(ap1)) && (PL::Actions::Patterns::is_named(ap2) == FALSE))
|
||||
return 1;
|
||||
|
|
|
@ -1426,7 +1426,7 @@ int PL::Parsing::Lines::index_list_with_action(OUTPUT_STREAM, grammar_line *gl)
|
|||
TEMPORARY_TEXT(trueverb);
|
||||
if (Wordings::nonempty(VW))
|
||||
WRITE_TO(trueverb, "%W", Wordings::one_word(Wordings::first_wn(VW)));
|
||||
HTMLFiles::open_para(OUT, 2, "hanging");
|
||||
HTML::open_indented_p(OUT, 2, "hanging");
|
||||
WRITE(""");
|
||||
PL::Actions::Index::verb_definition(OUT,
|
||||
Lexer::word_text(gl->original_text), trueverb, VW);
|
||||
|
@ -1453,7 +1453,7 @@ void PL::Parsing::Lines::index_list_for_token(OUTPUT_STREAM, grammar_line *gl) {
|
|||
TEMPORARY_TEXT(trueverb);
|
||||
if (Wordings::nonempty(VW))
|
||||
WRITE_TO(trueverb, "%W", Wordings::one_word(Wordings::first_wn(VW)));
|
||||
HTMLFiles::open_para(OUT, 2, "hanging");
|
||||
HTML::open_indented_p(OUT, 2, "hanging");
|
||||
if (k++ == 0) WRITE("="); else WRITE("or");
|
||||
WRITE(" "");
|
||||
PL::Actions::Index::verb_definition(OUT,
|
||||
|
|
|
@ -421,7 +421,7 @@ void PL::Parsing::Verbs::index_tokens(OUTPUT_STREAM) {
|
|||
|
||||
void PL::Parsing::Verbs::index_tokens_for(OUTPUT_STREAM, wording W, char *special, parse_node *where,
|
||||
grammar_line *defns, text_stream *help, char *explanation) {
|
||||
HTMLFiles::open_para(OUT, 1, "tight");
|
||||
HTML::open_indented_p(OUT, 1, "tight");
|
||||
WRITE("\"[");
|
||||
if (special) WRITE("%s", special); else WRITE("%+W", W);
|
||||
WRITE("]\"");
|
||||
|
|
|
@ -77,7 +77,9 @@ text_stream *Index::open_file(text_stream *index_leaf, text_stream *title, int s
|
|||
|
||||
@<Set the current index page@>;
|
||||
|
||||
HTMLFiles::html_header(OUT, title);
|
||||
HTML::header(OUT, title,
|
||||
Supervisor::file_from_installation(CSS_FOR_STANDARD_PAGES_IRES),
|
||||
Supervisor::file_from_installation(JAVASCRIPT_FOR_STANDARD_PAGES_IRES));
|
||||
index_file_counter++;
|
||||
if (Str::get_first_char(title) == '<') {
|
||||
Index::index_banner_line(OUT, 1, I"^", I"Details",
|
||||
|
@ -303,6 +305,8 @@ void Index::index_banner_line(OUTPUT_STREAM, int N, text_stream *sym, text_strea
|
|||
|
||||
@h So here goes with the CSS and Javascript.
|
||||
|
||||
@d ADDITIONAL_SCRIPTING_HTML_CALLBACK Index::scripting
|
||||
|
||||
=
|
||||
void Index::scripting(OUTPUT_STREAM) {
|
||||
if (current_index_page == NULL) return;
|
||||
|
@ -743,7 +747,7 @@ void Index::complete(void) {
|
|||
|
||||
void Index::close_index_file(void) {
|
||||
if (ifl == NULL) return;
|
||||
HTMLFiles::html_footer(ifl);
|
||||
HTML::footer(ifl);
|
||||
STREAM_CLOSE(ifl); ifl = NULL;
|
||||
}
|
||||
|
||||
|
@ -785,7 +789,7 @@ void Index::link_to_location(OUTPUT_STREAM, source_location sl, int nonbreaking_
|
|||
}
|
||||
return;
|
||||
}
|
||||
HTMLFiles::html_source_link(OUT, sl, nonbreaking_space);
|
||||
SourceLinks::link(OUT, sl, nonbreaking_space);
|
||||
}
|
||||
|
||||
@h Links to detail pages.
|
||||
|
@ -862,7 +866,7 @@ void Index::noextra_link(OUTPUT_STREAM) {
|
|||
=
|
||||
void Index::extra_div_open(OUTPUT_STREAM, int id, int indent, char *colour) {
|
||||
HTML_OPEN_WITH("div", "id=\"extra%d\" style=\"display: none;\"", id);
|
||||
HTMLFiles::open_para(OUT, indent, "");
|
||||
HTML::open_indented_p(OUT, indent, "");
|
||||
HTML::open_coloured_box(OUT, colour, ROUND_BOX_TOP+ROUND_BOX_BOTTOM);
|
||||
}
|
||||
|
||||
|
@ -874,7 +878,7 @@ void Index::extra_div_close(OUTPUT_STREAM, char *colour) {
|
|||
|
||||
void Index::extra_div_open_nested(OUTPUT_STREAM, int id, int indent) {
|
||||
HTML_OPEN_WITH("div", "id=\"extra%d\" style=\"display: none;\"", id);
|
||||
HTMLFiles::open_para(OUT, indent, "");
|
||||
HTML::open_indented_p(OUT, indent, "");
|
||||
}
|
||||
|
||||
void Index::extra_div_close_nested(OUTPUT_STREAM) {
|
||||
|
|
|
@ -43,22 +43,9 @@ void Problems::Buffer::redirect_problem_sentence(parse_node *from, parse_node *A
|
|||
redirected_sentence = from; redirected_to_A = A; redirected_to_B = B;
|
||||
}
|
||||
|
||||
@ A special escape sequence, marked by starting and finishing with a character
|
||||
which otherwise can never occur, is expanded to a source code link. If we used
|
||||
an asterisk to denote this, then a source reference is fed into
|
||||
|HTMLFiles::char_out| as the following stream of characters:
|
||||
@ These two special character codes are used as a temporary measure to
|
||||
mask out angle brackets which we don't want to interpret as HTML:
|
||||
|
||||
|*source text*Source/story.ni*14*|
|
||||
|
||||
(with |SOURCE_REF_CHAR| used in place of the asterisk).
|
||||
|
||||
But of course we don't use an asterisk as trigger -- we use character |F0|.
|
||||
Arguably this is dodgy, since the character is legal in ISO Latin-1. But it
|
||||
is a lower-case Icelandic eth, which is not allowed in unquoted Inform 7 source
|
||||
text (because of being absent from the ZSCII character set).
|
||||
|
||||
@d SOURCE_REF_CHAR L'\xf0'
|
||||
@d FORCE_NEW_PARA_CHAR L'\xd0'
|
||||
@d PROTECTED_LT_CHAR L'\x01'
|
||||
@d PROTECTED_GT_CHAR L'\x02'
|
||||
|
||||
|
@ -70,7 +57,7 @@ void Problems::Buffer::copy_source_reference_into_problem_buffer(wording W) {
|
|||
if (referred) {
|
||||
WRITE_TO(file, "%f", TextFromFiles::get_filename(referred));
|
||||
#ifdef HTML_MODULE
|
||||
pathname *proj = HTMLFiles::get_link_abbreviation_path();
|
||||
pathname *proj = HTML::get_link_abbreviation_path();
|
||||
if (proj) {
|
||||
TEMPORARY_TEXT(project_prefix);
|
||||
WRITE_TO(project_prefix, "%p", proj);
|
||||
|
|
|
@ -75,11 +75,8 @@ void Problems::show_problem_location(parse_node_tree *T) {
|
|||
parse_node *problem_headings[NO_HEADING_LEVELS];
|
||||
int i, f = FALSE;
|
||||
if (problem_count == 0) {
|
||||
#ifdef CORE_MODULE
|
||||
if (Problems::Issue::internal_errors_have_occurred())
|
||||
HTMLFiles::html_outcome_image(problems_file, "ni_failed_badly", "Failed");
|
||||
else
|
||||
HTMLFiles::html_outcome_image(problems_file, "ni_failed", "Failed");
|
||||
#ifdef FIRST_PROBLEM_CALLBACK
|
||||
FIRST_PROBLEM_CALLBACK(problems_file);
|
||||
#endif
|
||||
for (i=0; i<NO_HEADING_LEVELS; i++) last_problem_headings[i] = NULL;
|
||||
}
|
||||
|
|
|
@ -234,7 +234,7 @@ void Problems::Issue::problem_documentation_links(OUTPUT_STREAM) {
|
|||
wchar_t *chap = NULL, *sec = NULL;
|
||||
wchar_t *leaf = Index::DocReferences::link_if_possible_once(sigil_of_latest_unlinked_problem, &chap, &sec);
|
||||
if (leaf) {
|
||||
HTMLFiles::open_para(OUT, 2, "tight");
|
||||
HTML::open_indented_p(OUT, 2, "tight");
|
||||
HTML_OPEN_WITH("a", "href=inform:/%w.html", leaf);
|
||||
HTML_TAG_WITH("img", "border=0 src=inform:/doc_images/help.png");
|
||||
HTML_CLOSE("a");
|
||||
|
|
|
@ -23,24 +23,9 @@ DECLARE_CLASS(compatibility_specification)
|
|||
|
||||
=
|
||||
void ArchModule::start(void) {
|
||||
@<Register this module's memory allocation reasons@>;
|
||||
@<Register this module's stream writers@>;
|
||||
@<Register this module's debugging log aspects@>;
|
||||
@<Register this module's debugging log writers@>;
|
||||
Architectures::create();
|
||||
TargetVMs::create();
|
||||
}
|
||||
|
||||
void ArchModule::end(void) {
|
||||
}
|
||||
|
||||
@<Register this module's memory allocation reasons@> =
|
||||
;
|
||||
|
||||
@<Register this module's stream writers@> =
|
||||
;
|
||||
|
||||
@<Register this module's debugging log aspects@> =
|
||||
;
|
||||
|
||||
@<Register this module's debugging log writers@> =
|
||||
;
|
||||
|
|
|
@ -2,32 +2,18 @@
|
|||
|
||||
Setting up the use of this module.
|
||||
|
||||
@ This section simoly sets up the module in ways expected by //foundation//, and
|
||||
contains no code of interest. The following constant exists only in tools
|
||||
@ This section simoly sets up the module in ways expected by //foundation//,
|
||||
and contains no code of interest. The following constant exists only in tools
|
||||
which use this module:
|
||||
|
||||
@d HTML_MODULE TRUE
|
||||
|
||||
@ Like all modules, this one must define a |start| and |end| function:
|
||||
@ Like all modules, this one must define a |start| and |end| function; the
|
||||
following have been thoroughly debugged and only rarely give trouble --
|
||||
|
||||
=
|
||||
void HTMLModule::start(void) {
|
||||
@<Register this module's memory allocation reasons@>;
|
||||
@<Register this module's stream writers@>;
|
||||
@<Register this module's debugging log aspects@>;
|
||||
@<Register this module's debugging log writers@>;
|
||||
}
|
||||
|
||||
void HTMLModule::end(void) {
|
||||
}
|
||||
|
||||
@<Register this module's memory allocation reasons@> =
|
||||
;
|
||||
|
||||
@<Register this module's stream writers@> =
|
||||
;
|
||||
|
||||
@<Register this module's debugging log aspects@> =
|
||||
;
|
||||
|
||||
@<Register this module's debugging log writers@> =
|
||||
;
|
||||
|
|
|
@ -1,18 +1,13 @@
|
|||
[HTML::Documentation::] HTML Documentation.
|
||||
[DocumentationRenderer::] Documentation Renderer.
|
||||
|
||||
To translate a passage of source text into HTML-format documentation,
|
||||
for use in the automatically generated documentation pages on each installed
|
||||
extension.
|
||||
To render a passage of extension documentation as HTML.
|
||||
|
||||
@ This is a port of a simplified version of the Inform documentation tool
|
||||
|indoc|, and like all Perl scripts ported to C, it bears a few scars.
|
||||
|
||||
Documentation is extracted from extensions by lexing them (ignoring all
|
||||
of the actual source text and picking up only after the divider line)
|
||||
and then running the code below on the word range for the lexed
|
||||
documentation. Our task is therefore to print out this documentation
|
||||
in an HTML format which matches the look and feel of pages produced
|
||||
by |indoc| for the manuals.
|
||||
@h Disclaimer.
|
||||
The following code originated as a port of a simplified version of an early
|
||||
form of the Inform documentation tool //indoc//: in general, that will do a
|
||||
better all-round job, but this cut-down version is adequate for what we use
|
||||
it for, which is to make extension documentation pages. Those use a much
|
||||
simplified range of syntax compared to the full gamut known to //indoc//.
|
||||
|
||||
@h Links and leafnames.
|
||||
Matters are complicated because an extension typically has not only a
|
||||
|
@ -41,7 +36,7 @@ This will fail if anyone's extension has a title ending in |-eg| followed
|
|||
by a number. I believe I can live with the guilt.
|
||||
|
||||
=
|
||||
void HTML::Documentation::href_of_example(OUTPUT_STREAM, text_stream *base_leafname,
|
||||
void DocumentationRenderer::href_of_example(OUTPUT_STREAM, text_stream *base_leafname,
|
||||
int to_example_variant, int to_example_anchor) {
|
||||
for (int i=0, L = Str::len(base_leafname); i<L; i++) {
|
||||
if ((Str::includes_wide_string_at(base_leafname, L"-eg", i)) &&
|
||||
|
@ -64,11 +59,11 @@ matches successfully and sets the level to 2 and the name to the word range
|
|||
|
||||
=
|
||||
<extension-documentation-heading> ::=
|
||||
chapter : ... | ==> 1
|
||||
section : ... ==> 2
|
||||
chapter : ... | ==> 1
|
||||
section : ... ==> 2
|
||||
|
||||
@ =
|
||||
int HTML::Documentation::extension_documentation_heading(wording W, int *level, wording *HW) {
|
||||
int DocumentationRenderer::extension_documentation_heading(wording W, int *level, wording *HW) {
|
||||
if (<extension-documentation-heading>(W)) {
|
||||
if (Wordings::length(W) > 10) return FALSE; /* not enough space: this runs into the end-of-file padding */
|
||||
*level = <<r>>;
|
||||
|
@ -90,26 +85,31 @@ more exacting specification: a paragraph in the shape
|
|||
which would result in the name being set to the range "Gelignite Anderson",
|
||||
an asterisk count of 3, and the rubric being "A Tale of the Texas Oilmen".
|
||||
|
||||
Note the unusual use of the Preform escape character |\| below: this is
|
||||
because |***| is a reserved token in Preform, whereas we want the literal
|
||||
text of three asterisks in a row.
|
||||
|
||||
=
|
||||
<extension-example-header> ::=
|
||||
example : <row-of-asterisks> ... - ... | ==> R[1]
|
||||
example : ... - ... ==> 0
|
||||
example : <row-of-asterisks> ... - ... | ==> R[1]
|
||||
example : ... - ... ==> 0
|
||||
|
||||
<row-of-asterisks> ::=
|
||||
* | ==> 1
|
||||
* | ==> 1
|
||||
** | ==> 2
|
||||
\*** | ==> 3
|
||||
**** ==> 4
|
||||
\*** | ==> 3
|
||||
**** ==> 4
|
||||
|
||||
@ =
|
||||
int HTML::Documentation::extension_documentation_example(wording W,
|
||||
int DocumentationRenderer::extension_documentation_example(wording W,
|
||||
int *asterisks, wording *egn, wording *egr) {
|
||||
if (Wordings::length(W) > 10) return FALSE; /* not enough space: this runs into the end-of-file padding */
|
||||
if (Wordings::length(W) > 10) return FALSE; /* not enough space */
|
||||
if (<extension-example-header>(W)) {
|
||||
wording NW = GET_RW(<extension-example-header>, 1);
|
||||
wording RW = Wordings::first_word(GET_RW(<extension-example-header>, 2));
|
||||
int r2 = Wordings::first_wn(RW);
|
||||
while ((r2 <= Wordings::last_wn(W)) && ((Lexer::word(r2) == PARBREAK_V) == FALSE)) r2++;
|
||||
while ((r2 <= Wordings::last_wn(W)) &&
|
||||
((Lexer::word(r2) == PARBREAK_V) == FALSE)) r2++;
|
||||
if (r2 >= Wordings::last_wn(W)) return FALSE;
|
||||
r2--;
|
||||
/* a successful match has now been made */
|
||||
|
@ -120,32 +120,33 @@ int HTML::Documentation::extension_documentation_example(wording W,
|
|||
}
|
||||
|
||||
@h The table of contents.
|
||||
The user sees chapters as A subheadings, numbered upwards from 1, and
|
||||
sees sections as B subheadings, numbered from 1 within each chapter.
|
||||
It is legal to have only A subheadings; only B subheadings; or a mixture
|
||||
of the two.
|
||||
The user sees chapters as A subheadings, numbered upwards from 1, and sees
|
||||
sections as B subheadings, numbered from 1 within each chapter. It is legal to
|
||||
have only A subheadings; only B subheadings; or a mixture of the two.
|
||||
|
||||
If a scan can find any headings at all then we will wish to typeset
|
||||
a table of contents up front. The following routine looks for what material
|
||||
might go into a TOC, and sets one if it finds anything: otherwise, it sets
|
||||
nothing and has no effect. Because of the compulsory paragraph break
|
||||
following the divider line in the extension, we can safely assume that
|
||||
every headng will follow a paragraph break word, even one right at the
|
||||
top of the extension's documentation.
|
||||
If a scan can find any headings at all then we will wish to typeset a table of
|
||||
contents up front. The following routine looks for what material might go into
|
||||
a TOC, and sets one if it finds anything: otherwise, it sets nothing and has
|
||||
no effect. Because of the compulsory paragraph break following the divider
|
||||
line in the extension, we can safely assume that every headng will follow a
|
||||
paragraph break word, even one right at the top of the extension's
|
||||
documentation.
|
||||
|
||||
(Examples are included in the table of contents only if they occur after
|
||||
the first heading, which I think is reasonable enough: there can be at most
|
||||
26 per extension, enabling them to be lettered as Example A to Example Z.)
|
||||
(Examples are included in the table of contents only if they occur after the
|
||||
first heading, which I think is reasonable enough: there can be at most 26 per
|
||||
extension, enabling them to be lettered as Example A to Example Z.)
|
||||
|
||||
=
|
||||
void HTML::Documentation::set_table_of_contents(wording W, OUTPUT_STREAM, text_stream *base_leafname) {
|
||||
void DocumentationRenderer::table_of_contents(wording W, OUTPUT_STREAM, text_stream *base_leafname) {
|
||||
int heading_count = 0, chapter_count = 0, section_count = 0, example_count = 0;
|
||||
LOOP_THROUGH_WORDING(i, W) {
|
||||
int edhl, asterisks;
|
||||
wording NW = EMPTY_WORDING, RUBW = EMPTY_WORDING;
|
||||
if (Lexer::word(i) == PARBREAK_V) { /* the lexer records this to mean a paragraph break */
|
||||
while (Lexer::word(i) == PARBREAK_V) i++; if (i>Wordings::last_wn(W)) break;
|
||||
if (HTML::Documentation::extension_documentation_heading(Wordings::from(W, i), &edhl, &NW)) {
|
||||
if (Lexer::word(i) == PARBREAK_V) {
|
||||
while (Lexer::word(i) == PARBREAK_V) i++;
|
||||
if (i>Wordings::last_wn(W)) break;
|
||||
if (DocumentationRenderer::extension_documentation_heading(
|
||||
Wordings::from(W, i), &edhl, &NW)) {
|
||||
heading_count++;
|
||||
if (heading_count == 1) {
|
||||
HTML_CLOSE("p");
|
||||
|
@ -154,14 +155,14 @@ void HTML::Documentation::set_table_of_contents(wording W, OUTPUT_STREAM, text_s
|
|||
}
|
||||
if (edhl == 1) {
|
||||
chapter_count++; section_count = 0;
|
||||
if (chapter_count > 1) HTML_TAG("br"); /* skip a line between chapters in TOC */
|
||||
if (chapter_count > 1) HTML_TAG("br"); /* skip a line between chapters */
|
||||
}
|
||||
if (edhl == 2) section_count++;
|
||||
@<Typeset the table of contents entry for this heading@>;
|
||||
i = Wordings::last_wn(NW); continue;
|
||||
}
|
||||
if ((heading_count > 0) && (example_count < 26) &&
|
||||
(HTML::Documentation::extension_documentation_example(
|
||||
(DocumentationRenderer::extension_documentation_example(
|
||||
Wordings::from(W, i), &asterisks, &NW, &RUBW))) {
|
||||
if (++example_count == 1) {
|
||||
HTML_TAG("br");
|
||||
|
@ -191,7 +192,8 @@ These are the destinations of links from heading lines in the TOC.
|
|||
switch (edhl) {
|
||||
case 1:
|
||||
HTML_OPEN("b");
|
||||
HTML_OPEN_WITH("a", "style=\"text-decoration: none\" href=#docsec%d", heading_count);
|
||||
HTML_OPEN_WITH("a",
|
||||
"style=\"text-decoration: none\" href=#docsec%d", heading_count);
|
||||
HTML::begin_colour(OUT, I"000000");
|
||||
WRITE("Chapter %d: ", chapter_count);
|
||||
HTML::end_colour(OUT);
|
||||
|
@ -213,7 +215,7 @@ These are the destinations of links from heading lines in the TOC.
|
|||
break;
|
||||
default: internal_error("unable to set this heading level in extension TOC");
|
||||
}
|
||||
HTML::Documentation::set_body_text(NW, OUT, EDOC_FRAGMENT_ONLY, NULL);
|
||||
DocumentationRenderer::set_body_text(NW, OUT, EDOC_FRAGMENT_ONLY, NULL);
|
||||
HTML_TAG("br");
|
||||
|
||||
@ The TOC entries for examples are similar. Here the link is to the variant
|
||||
|
@ -225,12 +227,12 @@ far as the user is concerned it opens the example and goes there.
|
|||
WRITE(" "); /* always indent TOC entries for examples */
|
||||
TEMPORARY_TEXT(link);
|
||||
WRITE_TO(link, "style=\"text-decoration: none\" href=\"");
|
||||
HTML::Documentation::href_of_example(link, base_leafname, example_count, example_count);
|
||||
DocumentationRenderer::href_of_example(link, base_leafname, example_count, example_count);
|
||||
WRITE_TO(link, "\"");
|
||||
HTML_OPEN_WITH("a", "%S", link);
|
||||
HTML::begin_colour(OUT, I"000000");
|
||||
PUT('A'+example_count-1); /* the letter A to Z */
|
||||
HTML::Documentation::set_body_text(NW, OUT, EDOC_FRAGMENT_ONLY, NULL);
|
||||
DocumentationRenderer::set_body_text(NW, OUT, EDOC_FRAGMENT_ONLY, NULL);
|
||||
HTML::end_colour(OUT);
|
||||
HTML_CLOSE("a");
|
||||
HTML_TAG("br");
|
||||
|
@ -247,7 +249,7 @@ far as the user is concerned it opens the example and goes there.
|
|||
@d EDOC_FRAGMENT_ONLY -2 /* must differ from this and from all example variant numbers */
|
||||
|
||||
=
|
||||
int HTML::Documentation::set_body_text(wording W, OUTPUT_STREAM,
|
||||
int DocumentationRenderer::set_body_text(wording W, OUTPUT_STREAM,
|
||||
int example_which_is_open, text_stream *base_leafname) {
|
||||
int heading_count = 0, chapter_count = 0, section_count = 0, example_count = 0;
|
||||
int mid_example = FALSE, skipping_text_of_an_example = FALSE,
|
||||
|
@ -262,7 +264,7 @@ int HTML::Documentation::set_body_text(wording W, OUTPUT_STREAM,
|
|||
while (Lexer::word(i) == PARBREAK_V) i++;
|
||||
if (i>Wordings::last_wn(W)) break; /* treat multiple paragraph breaks as one */
|
||||
@<Determine indentation of new paragraph@>;
|
||||
if (HTML::Documentation::extension_documentation_heading(Wordings::from(W, i), &edhl, &NW)) {
|
||||
if (DocumentationRenderer::extension_documentation_heading(Wordings::from(W, i), &edhl, &NW)) {
|
||||
heading_count++;
|
||||
if (edhl == 1) {
|
||||
chapter_count++; section_count = 0;
|
||||
|
@ -275,7 +277,7 @@ int HTML::Documentation::set_body_text(wording W, OUTPUT_STREAM,
|
|||
@<Typeset the heading of this chapter or section@>;
|
||||
i = Wordings::last_wn(NW); continue;
|
||||
}
|
||||
if ((example_count < 26) && (HTML::Documentation::extension_documentation_example(
|
||||
if ((example_count < 26) && (DocumentationRenderer::extension_documentation_example(
|
||||
Wordings::from(W, i), &asterisks, &NW, &RUBW))) {
|
||||
skipping_text_of_an_example = FALSE;
|
||||
if (mid_example) @<Close the previous example's text@>;
|
||||
|
@ -366,7 +368,7 @@ can move on to the subsequent word.
|
|||
|| (p[0] == '(') || (p[0] == '{') || (p[0] == '}'))
|
||||
&& (compare_word(i-1, OPENBRACKET_V)==FALSE))
|
||||
WRITE(" "); /* restore normal spacing around punctuation */
|
||||
for (j=0; p[j]; j++) HTMLFiles::char_out(OUT, p[j]); /* set the actual word */
|
||||
for (j=0; p[j]; j++) HTML::put(OUT, p[j]); /* set the actual word */
|
||||
if (Lexer::word(i) == OPENI6_V) close_I6_position = i+1; /* ensure I6 literals are closed */
|
||||
|
||||
@ A paste causes the same material to be set twice: once in the argument to
|
||||
|
@ -386,7 +388,7 @@ but does not advance |i| commensurately.
|
|||
if ((j<y) && ((Lexer::break_before(j) == '\t') || (Lexer::indentation_level(j) > 0))) continue;
|
||||
y = possible_end; break;
|
||||
}
|
||||
HTML::Javascript::paste_W(OUT, Wordings::new(x, y));
|
||||
PasteButtons::paste_W(OUT, Wordings::new(x, y));
|
||||
|
||||
@ The first step of indentation is handled using the |<blockquote>| tag;
|
||||
within that, further tab stops are simulated by printing a row of four
|
||||
|
@ -441,7 +443,7 @@ anchor |#docsecN|.
|
|||
WRITE("%d: ", section_count);
|
||||
break;
|
||||
}
|
||||
HTML::Documentation::set_body_text(NW, OUT, EDOC_FRAGMENT_ONLY, NULL);
|
||||
DocumentationRenderer::set_body_text(NW, OUT, EDOC_FRAGMENT_ONLY, NULL);
|
||||
HTML::end_colour(OUT);
|
||||
HTML_CLOSE("b");
|
||||
|
||||
|
@ -473,12 +475,12 @@ in the next section.
|
|||
WRITE(" Example ");
|
||||
HTML::end_colour(OUT);
|
||||
HTML::begin_colour(OUT, I"000000");
|
||||
HTML::Documentation::set_body_text(NW, OUT, EDOC_FRAGMENT_ONLY, base_leafname);
|
||||
DocumentationRenderer::set_body_text(NW, OUT, EDOC_FRAGMENT_ONLY, base_leafname);
|
||||
HTML::end_colour(OUT);
|
||||
HTML_CLOSE("b");
|
||||
HTML_CLOSE("a"); /* end the textual link */
|
||||
HTML_TAG("br");
|
||||
HTML::Documentation::set_body_text(RUBW, OUT, EDOC_FRAGMENT_ONLY, base_leafname);
|
||||
DocumentationRenderer::set_body_text(RUBW, OUT, EDOC_FRAGMENT_ONLY, base_leafname);
|
||||
HTML_OPEN("p");
|
||||
|
||||
HTML_CLOSE("td");
|
||||
|
@ -519,9 +521,9 @@ closes it up, if it's currently open.
|
|||
TEMPORARY_TEXT(url);
|
||||
WRITE_TO(url, "href=\"");
|
||||
if (example_count == example_which_is_open) /* this example currently open */
|
||||
HTML::Documentation::href_of_example(url, base_leafname, EDOC_ALL_EXAMPLES_CLOSED, example_count);
|
||||
DocumentationRenderer::href_of_example(url, base_leafname, EDOC_ALL_EXAMPLES_CLOSED, example_count);
|
||||
else /* this example not yet open */
|
||||
HTML::Documentation::href_of_example(url, base_leafname, example_count, example_count);
|
||||
DocumentationRenderer::href_of_example(url, base_leafname, example_count, example_count);
|
||||
WRITE_TO(url, "\" style=\"text-decoration: none\"");
|
||||
HTML_OPEN_WITH("a", "%S", url);
|
||||
DISCARD_TEXT(url);
|
||||
|
@ -536,25 +538,17 @@ and this is fiddly but elementary in the usual way of HTML tables:
|
|||
HTML::begin_plain_html_table(OUT);
|
||||
HTML::first_html_column(OUT, 0);
|
||||
|
||||
@ Drinka.
|
||||
|
||||
@<End table cell for I7 table in extension documentation@> =
|
||||
HTML::end_colour(OUT);
|
||||
HTML::next_html_column(OUT, 0);
|
||||
|
||||
@ Pinta.
|
||||
|
||||
@<Begin table cell for I7 table in extension documentation@> =
|
||||
HTML::begin_colour(OUT, I"000080");
|
||||
|
||||
@ Milka.
|
||||
|
||||
@<Begin new row of I7 table in extension documentation@> =
|
||||
HTML::end_html_row(OUT);
|
||||
HTML::first_html_column(OUT, 0);
|
||||
|
||||
@ Day.
|
||||
|
||||
@<End I7 table in extension documentation@> =
|
||||
HTML::end_html_row(OUT);
|
||||
HTML::end_html_table(OUT);
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue