mirror of
https://github.com/ganelson/inform.git
synced 2024-06-26 04:00:43 +03:00
Moved IFM into foundation
This commit is contained in:
parent
563142e730
commit
e8a656bc67
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
[Version](notes/versioning.md): 10.2.0-beta+6X05 'Krypton' (24 August 2023)
|
||||
[Version](notes/versioning.md): 10.2.0-beta+6X06 'Krypton' (25 August 2023)
|
||||
|
||||
## About Inform
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: beta
|
||||
Build Date: 24 August 2023
|
||||
Build Number: 6X05
|
||||
Build Date: 25 August 2023
|
||||
Build Number: 6X06
|
||||
|
|
|
@ -59,7 +59,7 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../services.html">Services</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-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">
|
||||
<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#SP6">§6. File-opener buttons</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></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
|
||||
|
@ -120,7 +120,7 @@ in raw form in the argument to <span class="extract"><span class="extract-syntax
|
|||
</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="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#SP5">§5</a>, <a href="2-pb.html#SP5_1">§5.1</a>, <a href="2-pb.html#SP5_1_1">§5.1.1</a>, <a href="2-pb.html#SP5_1_2">§5.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>
|
||||
|
@ -145,7 +145,7 @@ to call a suitable function.
|
|||
<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="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">PasteButtons::paste_text_using</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PasteButtons::paste_text_using</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_text_using</span></span>:<br/><a href="2-pb.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="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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">paste_icon</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="identifier-syntax">paste_icon</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -153,7 +153,7 @@ to call a suitable function.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">paste_icon</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">"class=\"pastelink\" href=\"javascript:pasteCode("</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><a href="2-pb.html#SP5" 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>
|
||||
|
@ -165,7 +165,24 @@ to call a suitable function.
|
|||
<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>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>In the following, the source of the text can be either a range of words
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>This is a new-look paste button, using a "command-V" ideograph rather than
|
||||
a somewhat enigmatic icon.
|
||||
</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::paste_text_new_style</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">matter</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">paste</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::paste_ideograph</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">paste</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_text_using</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">paste</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">paste</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PasteButtons::paste_ideograph</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="comment-syntax"> the Unicode for "place of interest", the Swedish castle which became the Apple action symbol</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<span class=\"paste\">%cV</span>"</span><span class="plain-syntax">, </span><span class="constant-syntax">0x2318</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </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.
|
||||
|
@ -173,16 +190,16 @@ The conversion to UTF-8 is performed in <span class="extract"><span class="extra
|
|||
</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::argument</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::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="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="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="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#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Write word range as Javascript string</span><span class="named-paragraph-number">5.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="SP4_1" class="paragraph-anchor"></a><b>§4.1. </b>Writing a word range is much harder. In effect, we have to provide an
|
||||
<p class="commentary firstcommentary"><a id="SP5_1" class="paragraph-anchor"></a><b>§5.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>
|
||||
|
@ -207,7 +224,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">4.1</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">5.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -236,21 +253,21 @@ stops or more.
|
|||
<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-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="named-paragraph-container code-font"><a href="2-pb.html#SP5_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">5.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-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="named-paragraph-container code-font"><a href="2-pb.html#SP5_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">5.1.2</span></a></span><span class="plain-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">'\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-pb.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_1_1" class="paragraph-anchor"></a><b>§4.1.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#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_1_1" class="paragraph-anchor"></a><b>§5.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">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">Restore inter-word spaces unless this would be unnatural</span><span class="named-paragraph-number">5.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -260,14 +277,14 @@ But we want to restore the more natural spacing.
|
|||
<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-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-pb.html#SP4_1">§4.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_1_2" class="paragraph-anchor"></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>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pb.html#SP5_1">§5.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_1_2" class="paragraph-anchor"></a><b>§5.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">4.1.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">5.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -278,8 +295,8 @@ again:
|
|||
<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-pb.html#SP4_1">§4.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. File-opener buttons. </b>Nothing to do with pastes: this is a completely different sort of button,
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pb.html#SP5_1">§5.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. 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>
|
||||
|
|
|
@ -614,7 +614,7 @@ nests, respectively.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">shared_nest_list</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="function-syntax">Supervisor::internal</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">Supervisor::internal</span></span>:<br/>Project Services - <a href="5-ps2.html#SP39">§39</a><br/>Extensions Index Page - <a href="7-eip.html#SP1_1">§1.1</a><br/>Documentation Compiler - <a href="7-dc.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::internal</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">Supervisor::internal</span></span>:<br/>Project Services - <a href="5-ps2.html#SP39">§39</a><br/>Extensions Index Page - <a href="7-eip.html#SP1_1">§1.1</a><br/>Documentation Renderer - <a href="7-dr.html#SP2">§2</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">RUN_ONLY_FROM_PHASE</span><span class="plain-syntax">(</span><span class="constant-syntax">NESTED_INBUILD_PHASE</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">shared_internal_nest</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -74,7 +74,6 @@ which use this module:
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">build_skill_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">build_step_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">build_vertex_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">cdoc_example_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">compiled_documentation_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">control_structure_phrase_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">copy_error_CLASS</span>
|
||||
|
@ -107,7 +106,6 @@ which use this module:
|
|||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">build_skill</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">build_step</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">build_vertex</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">cdoc_example</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">control_structure_phrase</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">compiled_documentation</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">copy_error</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -151,7 +151,7 @@ can't install to a read-only nest.
|
|||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b></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">Nests::get_location</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">Nests::get_location</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP15">§15</a><br/>Extensions Index Page - <a href="7-eip.html#SP1_2_1">§1.2.1</a><br/>The Installer - <a href="7-ti.html#SP3_2">§3.2</a><br/>Documentation Compiler - <a href="7-dc.html#SP8">§8</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">Nests::get_location</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">Nests::get_location</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP15">§15</a><br/>Extensions Index Page - <a href="7-eip.html#SP1_2_1">§1.2.1</a><br/>The Installer - <a href="7-ti.html#SP3_2">§3.2</a><br/>Documentation Renderer - <a href="7-dr.html#SP2">§2</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"> </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="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">location</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -111,7 +111,7 @@ compiled, is a file vertex.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">build_vertex</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure build_vertex is accessed in 1/sm, 3/ib, 3/bs2, 3/is, 3/is3, 3/is4, 4/em, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/st, 6/hdn, 6/inc, 7/tm, 7/eip, 7/ti, 7/tc, 7/dc, 7/dr, 7/dim and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure build_vertex is accessed in 1/sm, 3/ib, 3/bs2, 3/is, 3/is3, 3/is4, 4/em, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/st, 6/hdn, 6/inc, 7/tm, 7/eip, 7/ti, 7/tc, 7/dc, 7/dr and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Creation. </b>First, the three colours of vertex.
|
||||
</p>
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ assimilating a binary for a kit is a skill.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure build_skill is accessed in 2/gnr, 7/dc, 7/dr, 7/dim and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure build_skill is accessed in 2/gnr, 7/dr and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>Skills provide two method functions: one constructs a shell command to
|
||||
perform the skill, and the other performs the skill directly by calling some
|
||||
function within the current executable. These methods are optional, and if
|
||||
|
|
|
@ -953,7 +953,7 @@ This is that time.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">synopsis</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">E</span><span class="plain-syntax">-></span><span class="identifier-syntax">read_into_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">doc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TextFromFiles::torn_off_documentation</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">read_into_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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">doc</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">documentation</span><span class="plain-syntax"> = </span><a href="7-dc.html#SP7" class="function-link"><span class="function-syntax">DocumentationCompiler::compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">doc</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">doc</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">documentation</span><span class="plain-syntax"> = </span><a href="7-dc.html#SP6" class="function-link"><span class="function-syntax">DocumentationCompiler::compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">doc</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">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">documentation</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">E</span><span class="plain-syntax">-></span><span class="identifier-syntax">read_into_file</span><span class="plain-syntax">-></span><span class="identifier-syntax">your_ref</span><span class="plain-syntax"> = </span><span class="identifier-syntax">STORE_POINTER_inbuild_copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-es.html#SP10_2" class="named-paragraph-link"><span class="named-paragraph">Break the text into sentences</span><span class="named-paragraph-number">10.2</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -1047,7 +1047,7 @@ then its sentences will go to the extension's own tree.
|
|||
<span class="plain-syntax"> </span><a href="2-cps.html#SP5" class="function-link"><span class="function-syntax">Copies::attach_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">, </span><a href="2-ce.html#SP2" class="function-link"><span class="function-syntax">CopyErrors::new_T</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EXT_MISWORDED_CE</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">error_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">error_text</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">E</span><span class="plain-syntax">-></span><span class="identifier-syntax">documentation</span><span class="plain-syntax"> = </span><a href="7-dc.html#SP3" class="function-link"><span class="function-syntax">DocumentationCompiler::compile_from_path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="identifier-syntax">documentation</span><span class="plain-syntax"> = </span><a href="7-dc.html#SP2" class="function-link"><span class="function-syntax">DocumentationCompiler::compile_from_path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-es.html#SP12">§12</a>.</li></ul>
|
||||
|
|
|
@ -77,7 +77,7 @@ it's really not much more than a tree of Markdown:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">compiled_documentation</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">compiled_documentation</span><span class="plain-syntax"> *</span><span class="function-syntax">DocumentationCompiler::new_wrapper</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">DocumentationCompiler::new_wrapper</span></span>:<br/><a href="7-dc.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">source</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">compiled_documentation</span><span class="plain-syntax"> *</span><span class="function-syntax">DocumentationCompiler::new_wrapper</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">DocumentationCompiler::new_wrapper</span></span>:<br/><a href="7-dc.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">source</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">compiled_documentation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cd</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">compiled_documentation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">title</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">cd</span><span class="plain-syntax">-></span><span class="element-syntax">original</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">source</span><span class="plain-syntax">);</span>
|
||||
|
@ -105,52 +105,27 @@ it's really not much more than a tree of Markdown:
|
|||
<span class="plain-syntax">} </span><span class="reserved-syntax">satellite_test_case</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure compiled_documentation is accessed in 2/wrk, 2/edt, 2/cps, 2/rqr, 2/jm, 3/bg, 3/is, 4/ebm, 4/km, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps2, 6/inc, 7/tm, 7/eip, 7/ti, 7/tc, 7/dr and here.</li><li>The structure satellite_test_case is accessed in 5/ks and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>Lettered examples have a "difficulty rating" in stars, 0 to 4. Numbers are unique
|
||||
from 1, 2, ...; letters are unique from A, B, C, ...
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>We can compile either from a file...
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">cdoc_example</span><span class="plain-syntax"> {</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">name</span><span class="plain-syntax">;</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">description</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">star_count</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">number</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">letter</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">cdoc_example</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">cdoc_example</span><span class="plain-syntax"> *</span><span class="function-syntax">DocumentationCompiler::new_example_alone</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">DocumentationCompiler::new_example_alone</span></span>:<br/><a href="7-dc.html#SP3_1_2">§3.1.2</a><br/>Documentation in Markdown - <a href="7-dim.html#SP2">§2</a></span></button><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="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">desc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">star_count</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ecount</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">cdoc_example</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">cdoc_example</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</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">E</span><span class="plain-syntax">-></span><span class="element-syntax">description</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">desc</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">star_count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">star_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">number</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ecount</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">letter</span><span class="plain-syntax"> = </span><span class="character-syntax">'A'</span><span class="plain-syntax"> + (</span><span class="reserved-syntax">char</span><span class="plain-syntax">) </span><span class="identifier-syntax">ecount</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure cdoc_example is accessed in 3/bs2, 7/dr, 7/dim and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>We can compile either from a file...
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">compiled_documentation</span><span class="plain-syntax"> *</span><span class="function-syntax">DocumentationCompiler::compile_from_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">DocumentationCompiler::compile_from_path</span></span>:<br/>Extension Services - <a href="5-es.html#SP12_1">§12.1</a><br/>The Mini-Website - <a href="7-tm.html#SP7_1_2">§7.1.2</a></span></button><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="reserved-syntax">compiled_documentation</span><span class="plain-syntax"> *</span><span class="function-syntax">DocumentationCompiler::compile_from_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">DocumentationCompiler::compile_from_path</span></span>:<br/>Extension Services - <a href="5-es.html#SP12_1">§12.1</a><br/>The Mini-Website - <a href="7-tm.html#SP7_1_2">§7.1.2</a></span></button><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="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">associated_extension</span><span class="plain-syntax">) {</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="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">I</span><span class="string-syntax">"Documentation.md"</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">TextFiles::exists</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="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="reserved-syntax">compiled_documentation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cd</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP6" class="function-link"><span class="function-syntax">DocumentationCompiler::compile_from_file</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">associated_extension</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP5" class="function-link"><span class="function-syntax">DocumentationCompiler::compile_from_file</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">associated_extension</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">cd</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="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="identifier-syntax">EP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Examples"</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">egs</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="7-dc.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Scan EP directory for examples</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="7-dc.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Scan EP directory for examples</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">egs</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">EP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Tests"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-dc.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Scan EP directory for examples</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="7-dc.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Scan EP directory for examples</span><span class="named-paragraph-number">2.1</span></a></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">cd</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3_1" class="paragraph-anchor"></a><b>§3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Scan EP directory for examples</span><span class="named-paragraph-number">3.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP2_1" class="paragraph-anchor"></a><b>§2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Scan EP directory for examples</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">
|
||||
|
@ -183,7 +158,7 @@ from 1, 2, ...; letters are unique from A, B, C, ...
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TextFiles::exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">IF</span><span class="plain-syntax">)) </span><span class="identifier-syntax">stc</span><span class="plain-syntax">-></span><span class="element-syntax">ideal_transcript</span><span class="plain-syntax"> = </span><span class="identifier-syntax">IF</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">ideal_leafname</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">stc</span><span class="plain-syntax">-></span><span class="element-syntax">is_example</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-dc.html#SP3_1_2" class="named-paragraph-link"><span class="named-paragraph">Scan the example for its header and content</span><span class="named-paragraph-number">3.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-dc.html#SP2_1_2" class="named-paragraph-link"><span class="named-paragraph">Scan the example for its header and content</span><span class="named-paragraph-number">2.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">stc</span><span class="plain-syntax">, </span><span class="reserved-syntax">satellite_test_case</span><span class="plain-syntax">, </span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">cases</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -191,8 +166,8 @@ from 1, 2, ...; letters are unique from A, B, C, ...
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Directories::close</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-dc.html#SP3">§3</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_1_1" class="paragraph-anchor"></a><b>§3.1.1. </b></p>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-dc.html#SP2">§2</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_1_1" class="paragraph-anchor"></a><b>§2.1.1. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">example_scanning_state</span><span class="plain-syntax"> {</span>
|
||||
|
@ -206,8 +181,8 @@ from 1, 2, ...; letters are unique from A, B, C, ...
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">past_header</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">example_scanning_state</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure example_scanning_state is accessed in 5/es, 7/tc, 7/dim and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_1_2" class="paragraph-anchor"></a><b>§3.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Scan the example for its header and content</span><span class="named-paragraph-number">3.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>The structure example_scanning_state is accessed in 5/es, 7/tc and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_1_2" class="paragraph-anchor"></a><b>§2.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Scan the example for its header and content</span><span class="named-paragraph-number">2.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -221,29 +196,29 @@ from 1, 2, ...; letters are unique from A, B, C, ...
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">ess</span><span class="plain-syntax">.</span><span class="element-syntax">past_header</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">ess</span><span class="plain-syntax">.</span><span class="element-syntax">scanning</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">(); </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">ess</span><span class="plain-syntax">.</span><span class="element-syntax">scanning</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Filenames::get_leafname</span><span class="plain-syntax">(</span><span class="identifier-syntax">stc</span><span class="plain-syntax">-></span><span class="element-syntax">test_file</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TextFiles::read</span><span class="plain-syntax">(</span><span class="identifier-syntax">stc</span><span class="plain-syntax">-></span><span class="element-syntax">test_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="string-syntax">"unable to read file of example"</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> &</span><a href="7-dc.html#SP5" class="function-link"><span class="function-syntax">DocumentationCompiler::read_example_helper</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, &</span><span class="identifier-syntax">ess</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> &</span><a href="7-dc.html#SP4" class="function-link"><span class="function-syntax">DocumentationCompiler::read_example_helper</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, &</span><span class="identifier-syntax">ess</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">markdown_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt_placement_node</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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ess</span><span class="plain-syntax">.</span><span class="element-syntax">placement</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">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">alt_placement_node</span><span class="plain-syntax"> = </span><a href="7-dim.html#SP6" class="function-link"><span class="function-syntax">DocumentationInMarkdown::find_section</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">alt_tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ess</span><span class="plain-syntax">.</span><span class="element-syntax">placement</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">alt_placement_node</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InformFlavouredMarkdown::find_section</span><span class="plain-syntax">(</span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">alt_tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ess</span><span class="plain-syntax">.</span><span class="element-syntax">placement</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">"Looking for %S.\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ess</span><span class="plain-syntax">.</span><span class="identifier-syntax">placement</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_placement_node</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-dc.html#SP4" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP3" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"example gives a Location which is not the name of any section"</span><span class="plain-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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ess</span><span class="plain-syntax">.</span><span class="element-syntax">desc</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP4" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP3" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"example does not give its Description"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">cdoc_example</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eg</span><span class="plain-syntax"> = </span><a href="7-dc.html#SP2" class="function-link"><span class="function-syntax">DocumentationCompiler::new_example_alone</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">IFM_example</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eg</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InformFlavouredMarkdown::new_example</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ess</span><span class="plain-syntax">.</span><span class="element-syntax">long_title</span><span class="plain-syntax">, </span><span class="identifier-syntax">ess</span><span class="plain-syntax">.</span><span class="element-syntax">desc</span><span class="plain-syntax">, </span><span class="identifier-syntax">ess</span><span class="plain-syntax">.</span><span class="element-syntax">star_count</span><span class="plain-syntax">, ++(</span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">total_examples</span><span class="plain-syntax">));</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">markdown_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eg_header</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Markdown::new_item</span><span class="plain-syntax">(</span><span class="constant-syntax">INFORM_EXAMPLE_HEADING_MIT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">eg_header</span><span class="plain-syntax">-></span><span class="identifier-syntax">user_state</span><span class="plain-syntax"> = </span><span class="identifier-syntax">STORE_POINTER_cdoc_example</span><span class="plain-syntax">(</span><span class="identifier-syntax">eg</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">markdown_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eg_header</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Markdown::new_item</span><span class="plain-syntax">(</span><span class="identifier-syntax">INFORM_EXAMPLE_HEADING_MIT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">eg_header</span><span class="plain-syntax">-></span><span class="identifier-syntax">user_state</span><span class="plain-syntax"> = </span><span class="identifier-syntax">STORE_POINTER_IFM_example</span><span class="plain-syntax">(</span><span class="identifier-syntax">eg</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">markdown_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">md</span><span class="plain-syntax"> = </span><span class="identifier-syntax">alt_placement_node</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">md</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">md</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">alt_tree</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">;</span>
|
||||
|
@ -259,11 +234,11 @@ from 1, 2, ...; letters are unique from A, B, C, ...
|
|||
<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">ess</span><span class="plain-syntax">.</span><span class="element-syntax">body_text</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">markdown_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt_ecd</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Markdown::parse_extended</span><span class="plain-syntax">(</span><span class="identifier-syntax">ess</span><span class="plain-syntax">.</span><span class="element-syntax">body_text</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dim.html#SP1" class="function-link"><span class="function-syntax">DocumentationInMarkdown::extension_flavoured_Markdown</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InformFlavouredMarkdown::variation</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">eg_header</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax"> = </span><span class="identifier-syntax">alt_ecd</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Markdown::debug_subtree</span><span class="plain-syntax">(</span><span class="identifier-syntax">DL</span><span class="plain-syntax">, </span><span class="identifier-syntax">eg_header</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><a href="7-dc.html#SP4" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP3" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"example does not give any actual content"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
|
@ -271,21 +246,21 @@ from 1, 2, ...; letters are unique from A, B, C, ...
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">markdown_item</span><span class="plain-syntax">, </span><span class="identifier-syntax">ess</span><span class="plain-syntax">.</span><span class="element-syntax">errors</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Markdown::add_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">alt_tree</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-dc.html#SP3_1">§3.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-dc.html#SP2_1">§2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </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">DocumentationCompiler::example_error</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">DocumentationCompiler::example_error</span></span>:<br/><a href="7-dc.html#SP3_1_2">§3.1.2</a>, <a href="7-dc.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">example_scanning_state</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ess</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">DocumentationCompiler::example_error</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">DocumentationCompiler::example_error</span></span>:<br/><a href="7-dc.html#SP2_1_2">§2.1.2</a>, <a href="7-dc.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">example_scanning_state</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ess</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">err</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">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="string-syntax">"Example file '%S': %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ess</span><span class="plain-syntax">-></span><span class="element-syntax">scanning</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">markdown_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><a href="7-dim.html#SP2" class="function-link"><span class="function-syntax">DocumentationInMarkdown::error_item</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">markdown_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InformFlavouredMarkdown::error_item</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">markdown_item</span><span class="plain-syntax">, </span><span class="identifier-syntax">ess</span><span class="plain-syntax">-></span><span class="element-syntax">errors</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </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">DocumentationCompiler::read_example_helper</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">DocumentationCompiler::read_example_helper</span></span>:<br/><a href="7-dc.html#SP3_1_2">§3.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">DocumentationCompiler::read_example_helper</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">DocumentationCompiler::read_example_helper</span></span>:<br/><a href="7-dc.html#SP2_1_2">§2.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v_state</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">example_scanning_state</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ess</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">example_scanning_state</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">v_state</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">tfp</span><span class="plain-syntax">-></span><span class="identifier-syntax">line_count</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
|
@ -294,18 +269,18 @@ from 1, 2, ...; letters are unique from A, B, C, ...
|
|||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Example *- *(%**) *(%c+?)"</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ess</span><span class="plain-syntax">-></span><span class="element-syntax">star_count</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ess</span><span class="plain-syntax">-></span><span class="element-syntax">star_count</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP4" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP3" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"this example should be marked (before the title) '*', '**', '***' or '****' for difficulty"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ess</span><span class="plain-syntax">-></span><span class="element-syntax">star_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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ess</span><span class="plain-syntax">-></span><span class="element-syntax">star_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">4</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP4" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP3" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"four stars '****' is the maximum difficulty rating allowed"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ess</span><span class="plain-syntax">-></span><span class="element-syntax">star_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ess</span><span class="plain-syntax">-></span><span class="element-syntax">long_title</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP4" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP3" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"titling line of example file is malformed"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Regexp::dispose_of</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
|
||||
|
@ -316,11 +291,11 @@ from 1, 2, ...; letters are unique from A, B, C, ...
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">I</span><span class="string-syntax">"Location"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">ess</span><span class="plain-syntax">-></span><span class="element-syntax">placement</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1]);</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">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">I</span><span class="string-syntax">"Description"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">ess</span><span class="plain-syntax">-></span><span class="element-syntax">desc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP4" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP3" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"unknown datum in header line of example file"</span><span class="plain-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="plain-syntax"> </span><a href="7-dc.html#SP4" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP3" class="function-link"><span class="function-syntax">DocumentationCompiler::example_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ess</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"header line of example file is malformed"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Regexp::dispose_of</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
|
||||
|
@ -329,16 +304,16 @@ from 1, 2, ...; letters are unique from A, B, C, ...
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">compiled_documentation</span><span class="plain-syntax"> *</span><span class="function-syntax">DocumentationCompiler::compile_from_file</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">DocumentationCompiler::compile_from_file</span></span>:<br/><a href="7-dc.html#SP3">§3</a></span></button><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="reserved-syntax">compiled_documentation</span><span class="plain-syntax"> *</span><span class="function-syntax">DocumentationCompiler::compile_from_file</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">DocumentationCompiler::compile_from_file</span></span>:<br/><a href="7-dc.html#SP2">§2</a></span></button><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">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">associated_extension</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">TextFiles::read</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="string-syntax">"unable to read file of documentation"</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> &</span><a href="7-dc.html#SP6" class="function-link"><span class="function-syntax">DocumentationCompiler::read_file_helper</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">temp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> &</span><a href="7-dc.html#SP5" class="function-link"><span class="function-syntax">DocumentationCompiler::read_file_helper</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">temp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">compiled_documentation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cd</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP7" class="function-link"><span class="function-syntax">DocumentationCompiler::compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">temp</span><span class="plain-syntax">, </span><span class="identifier-syntax">associated_extension</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP6" class="function-link"><span class="function-syntax">DocumentationCompiler::compile</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">temp</span><span class="plain-syntax">, </span><span class="identifier-syntax">associated_extension</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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cd</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -349,11 +324,11 @@ from 1, 2, ...; letters are unique from A, B, C, ...
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">contents</span><span class="plain-syntax">, </span><span class="string-syntax">"%S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>...or from text:
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>...or from text:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">compiled_documentation</span><span class="plain-syntax"> *</span><span class="function-syntax">DocumentationCompiler::compile</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">DocumentationCompiler::compile</span></span>:<br/><a href="7-dc.html#SP6">§6</a><br/>Extension Services - <a href="5-es.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">source</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">compiled_documentation</span><span class="plain-syntax"> *</span><span class="function-syntax">DocumentationCompiler::compile</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">DocumentationCompiler::compile</span></span>:<br/><a href="7-dc.html#SP5">§5</a><br/>Extension Services - <a href="5-es.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">source</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">associated_extension</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SVEXPLAIN</span><span class="plain-syntax">(1, </span><span class="string-syntax">"(compiling documentation: %d chars)\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">source</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">compiled_documentation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cd</span><span class="plain-syntax"> = </span><a href="7-dc.html#SP1" class="function-link"><span class="function-syntax">DocumentationCompiler::new_wrapper</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">source</span><span class="plain-syntax">);</span>
|
||||
|
@ -362,25 +337,12 @@ from 1, 2, ...; letters are unique from A, B, C, ...
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">title</span><span class="plain-syntax">, </span><span class="string-syntax">"%X"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">associated_extension</span><span class="plain-syntax">-></span><span class="element-syntax">as_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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::is_whitespace</span><span class="plain-syntax">(</span><span class="identifier-syntax">source</span><span class="plain-syntax">)) </span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">empty</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">cd</span><span class="plain-syntax">-></span><span class="element-syntax">alt_tree</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Markdown::parse_extended</span><span class="plain-syntax">(</span><span class="identifier-syntax">source</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dim.html#SP1" class="function-link"><span class="function-syntax">DocumentationInMarkdown::extension_flavoured_Markdown</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InformFlavouredMarkdown::variation</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">cd</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="function-syntax">DocumentationCompiler::get_language</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">DocumentationCompiler::get_language</span></span>:<br/>Documentation in Markdown - <a href="7-dim.html#SP7">§7</a>, <a href="7-dim.html#SP7_2">§7.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</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><a href="1-ic.html#SP16" 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">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"> </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="identifier-syntax">LP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><a href="2-nst.html#SP5" class="function-link"><span class="function-syntax">Nests::get_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"PLs"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Languages::set_default_directory</span><span class="plain-syntax">(</span><span class="identifier-syntax">LP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Languages::find_by_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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">pl</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Did not load %S!\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</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">pl</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="7-tc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-tm.html">tm</a></li><li class="progresssection"><a href="7-eip.html">eip</a></li><li class="progresssection"><a href="7-ti.html">ti</a></li><li class="progresssection"><a href="7-tc.html">tc</a></li><li class="progresscurrent">dc</li><li class="progresssection"><a href="7-dr.html">dr</a></li><li class="progresssection"><a href="7-dim.html">dim</a></li><li class="progressnext"><a href="7-dr.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="7-tc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-tm.html">tm</a></li><li class="progresssection"><a href="7-eip.html">eip</a></li><li class="progresssection"><a href="7-ti.html">ti</a></li><li class="progresssection"><a href="7-tc.html">tc</a></li><li class="progresscurrent">dc</li><li class="progresssection"><a href="7-dr.html">dr</a></li><li class="progressnext"><a href="7-dr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -94,6 +94,11 @@ except the examples, and then up to 26 pages holding the content of examples A t
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">DocumentationRenderer::as_HTML</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::as_HTML</span></span>:<br/>Extension Services - <a href="5-es.html#SP13">§13</a><br/>The Mini-Website - <a href="7-tm.html#SP7">§7</a>, <a href="7-tm.html#SP7_1_2">§7.1.2</a></span></button><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="reserved-syntax">compiled_documentation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cd</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">extras</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><a href="1-ic.html#SP16" 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">N</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">LP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><a href="2-nst.html#SP5" class="function-link"><span class="function-syntax">Nests::get_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"PLs"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Languages::set_default_directory</span><span class="plain-syntax">(</span><span class="identifier-syntax">LP</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">cd</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">OUT</span><span class="plain-syntax"> = </span><a href="7-dr.html#SP1" class="function-link"><span class="function-syntax">DocumentationRenderer::open_subpage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"index.html"</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">OUT</span><span class="plain-syntax">) {</span>
|
||||
|
@ -137,7 +142,7 @@ except the examples, and then up to 26 pages holding the content of examples A t
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">total_headings</span><span class="plain-syntax">[1] > </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="comment-syntax"> there are chapters</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dr.html#SP7" class="function-link"><span class="function-syntax">DocumentationRenderer::render_toc</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">cd</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">"em"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dr.html#SP8" class="function-link"><span class="function-syntax">DocumentationRenderer::render_text</span></a><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">"Click on Chapter, Section or Example numbers to read"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InformFlavouredMarkdown::render_text</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">"Click on Chapter, Section or Example numbers to read"</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">"em"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">markdown_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">md</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">alt_tree</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</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">md</span><span class="plain-syntax">) && ((</span><span class="identifier-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> != </span><span class="identifier-syntax">HEADING_MIT</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Markdown::get_heading_level</span><span class="plain-syntax">(</span><span class="identifier-syntax">md</span><span class="plain-syntax">) > </span><span class="constant-syntax">1</span><span class="plain-syntax">))) {</span>
|
||||
|
@ -148,7 +153,7 @@ except the examples, and then up to 26 pages holding the content of examples A t
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">markdown_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">md</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">alt_tree</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">; </span><span class="identifier-syntax">md</span><span class="plain-syntax">; </span><span class="identifier-syntax">md</span><span class="plain-syntax"> = </span><span class="identifier-syntax">md</span><span class="plain-syntax">-></span><span class="identifier-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">md</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">HEADING_MIT</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Markdown::get_heading_level</span><span class="plain-syntax">(</span><span class="identifier-syntax">md</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">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Markdown::render_extended</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">md</span><span class="plain-syntax">, </span><a href="7-dim.html#SP1" class="function-link"><span class="function-syntax">DocumentationInMarkdown::extension_flavoured_Markdown</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Markdown::render_extended</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">md</span><span class="plain-syntax">, </span><span class="identifier-syntax">InformFlavouredMarkdown::variation</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-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="comment-syntax"> there are only sections and examples, or not even that</span>
|
||||
|
@ -157,12 +162,12 @@ except the examples, and then up to 26 pages holding the content of examples A t
|
|||
<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">cd</span><span class="plain-syntax">-></span><span class="element-syntax">empty</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><a href="7-dr.html#SP8" class="function-link"><span class="function-syntax">DocumentationRenderer::render_text</span></a><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">"None is provided."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InformFlavouredMarkdown::render_text</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">"None is provided."</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">else</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">"class=\"markdowncontent\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Markdown::render_extended</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">alt_tree</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dim.html#SP1" class="function-link"><span class="function-syntax">DocumentationInMarkdown::extension_flavoured_Markdown</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InformFlavouredMarkdown::variation</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>
|
||||
|
@ -274,14 +279,14 @@ extension.
|
|||
|
||||
<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">E</span><span class="plain-syntax">-></span><span class="element-syntax">rubric_as_lexed</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><a href="7-dr.html#SP8" class="function-link"><span class="function-syntax">DocumentationRenderer::render_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">rubric_as_lexed</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InformFlavouredMarkdown::render_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">rubric_as_lexed</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="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">E</span><span class="plain-syntax">-></span><span class="element-syntax">extra_credit_as_lexed</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">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"em"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dr.html#SP8" class="function-link"><span class="function-syntax">DocumentationRenderer::render_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">extra_credit_as_lexed</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InformFlavouredMarkdown::render_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">extra_credit_as_lexed</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">"em"</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>
|
||||
|
@ -291,7 +296,7 @@ extension.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"compatibility"</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_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dr.html#SP8" class="function-link"><span class="function-syntax">DocumentationRenderer::render_text</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="identifier-syntax">parsed_from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InformFlavouredMarkdown::render_text</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="identifier-syntax">parsed_from</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>
|
||||
|
@ -326,23 +331,23 @@ in a hierarchical fashion.
|
|||
<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><a href="7-dr.html#SP7" class="function-link"><span class="function-syntax">DocumentationRenderer::link_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">md</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Markdown::render_extended</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">md</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dim.html#SP1" class="function-link"><span class="function-syntax">DocumentationInMarkdown::extension_flavoured_Markdown</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InformFlavouredMarkdown::variation</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_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::end_span</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">"li"</span><span class="plain-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">md</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="constant-syntax">INFORM_EXAMPLE_HEADING_MIT</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">md</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax"> == </span><span class="identifier-syntax">INFORM_EXAMPLE_HEADING_MIT</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">"li"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"exco%d\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">cdoc_example</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_cdoc_example</span><span class="plain-syntax">(</span><span class="identifier-syntax">md</span><span class="plain-syntax">-></span><span class="identifier-syntax">user_state</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">IFM_example</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_IFM_example</span><span class="plain-syntax">(</span><span class="identifier-syntax">md</span><span class="plain-syntax">-></span><span class="identifier-syntax">user_state</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">"style=\"text-decoration: none\" href=\"eg%d.html#eg%d\""</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">number</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">number</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="identifier-syntax">number</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="identifier-syntax">number</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_span</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">"indexblack"</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Example %c &mdash; "</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">letter</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dr.html#SP8" class="function-link"><span class="function-syntax">DocumentationRenderer::render_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</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">"Example %c &mdash; "</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="identifier-syntax">letter</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InformFlavouredMarkdown::render_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</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">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_span</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">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">)</span>
|
||||
|
@ -354,12 +359,23 @@ in a hierarchical fashion.
|
|||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">DocumentationRenderer::render_example</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">DocumentationRenderer::render_example</span></span>:<br/><a href="7-dr.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">compiled_documentation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cd</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">eg</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">"div"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">markdown_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt_EN</span><span class="plain-syntax"> = </span><a href="7-dim.html#SP7" class="function-link"><span class="function-syntax">DocumentationInMarkdown::find_example</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">alt_tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">eg</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">markdown_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt_EN</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InformFlavouredMarkdown::find_example</span><span class="plain-syntax">(</span><span class="identifier-syntax">cd</span><span class="plain-syntax">-></span><span class="element-syntax">alt_tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">eg</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_EN</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">"Example %d is missing"</span><span class="plain-syntax">, </span><span class="identifier-syntax">eg</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">cdoc_example</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_cdoc_example</span><span class="plain-syntax">(</span><span class="identifier-syntax">alt_EN</span><span class="plain-syntax">-></span><span class="identifier-syntax">user_state</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dim.html#SP5" class="function-link"><span class="function-syntax">DocumentationInMarkdown::render_example_heading</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">alt_EN</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">IFM_example</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_IFM_example</span><span class="plain-syntax">(</span><span class="identifier-syntax">alt_EN</span><span class="plain-syntax">-></span><span class="identifier-syntax">user_state</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">alt_EN</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</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=\"eg%d.html\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="identifier-syntax">number</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InformFlavouredMarkdown::render_example_heading</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">link</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">link</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">markdown_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">passage_node</span><span class="plain-syntax"> = </span><span class="identifier-syntax">alt_EN</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</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">passage_node</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Markdown::render_extended</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">passage_node</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InformFlavouredMarkdown::variation</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">passage_node</span><span class="plain-syntax"> = </span><span class="identifier-syntax">passage_node</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</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">"div"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-dr.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Enter the small print</span><span class="named-paragraph-number">3.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="comment-syntax"> WRITE("This example is drawn from ");</span>
|
||||
|
@ -398,25 +414,15 @@ in a hierarchical fashion.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::begins_with</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">wanted</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">rendering</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">found</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">rendering</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</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">rendering</span><span class="plain-syntax">) </span><span class="identifier-syntax">Markdown::render_extended</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">md</span><span class="plain-syntax">, </span><a href="7-dim.html#SP1" class="function-link"><span class="function-syntax">DocumentationInMarkdown::extension_flavoured_Markdown</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">rendering</span><span class="plain-syntax">) </span><span class="identifier-syntax">Markdown::render_extended</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">md</span><span class="plain-syntax">, </span><span class="identifier-syntax">InformFlavouredMarkdown::variation</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">md</span><span class="plain-syntax"> = </span><span class="identifier-syntax">md</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</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">found</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">"Chapter %d is missing"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ch</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>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </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">DocumentationRenderer::render_text</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">DocumentationRenderer::render_text</span></span>:<br/><a href="7-dr.html#SP3">§3</a>, <a href="7-dr.html#SP6">§6</a>, <a href="7-dr.html#SP7">§7</a><br/>The Mini-Website - <a href="7-tm.html#SP8">§8</a><br/>Documentation in Markdown - <a href="7-dim.html#SP5">§5</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">text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">markdown_item</span><span class="plain-syntax"> *</span><span class="identifier-syntax">md</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Markdown::parse_inline</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">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=\"markdowncontent\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Markdown::render</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">md</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>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="7-dc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-tm.html">tm</a></li><li class="progresssection"><a href="7-eip.html">eip</a></li><li class="progresssection"><a href="7-ti.html">ti</a></li><li class="progresssection"><a href="7-tc.html">tc</a></li><li class="progresssection"><a href="7-dc.html">dc</a></li><li class="progresscurrent">dr</li><li class="progresssection"><a href="7-dim.html">dim</a></li><li class="progressnext"><a href="7-dim.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="7-dc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-tm.html">tm</a></li><li class="progresssection"><a href="7-eip.html">eip</a></li><li class="progresssection"><a href="7-ti.html">ti</a></li><li class="progresssection"><a href="7-tc.html">tc</a></li><li class="progresssection"><a href="7-dc.html">dc</a></li><li class="progresscurrent">dr</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -530,7 +530,7 @@ 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">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">res</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="plain-syntax"> </span><a href="7-tm.html#SP9" class="function-link"><span class="function-syntax">ExtensionWebsite::paste_button</span></a><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_new_style</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><a href="7-eip.html#SP3" class="function-link"><span class="function-syntax">ExtensionIndex::add_to_key</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">key_list</span><span class="plain-syntax">, </span><span class="constant-syntax">PASTE_SYMBOL</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"Source text to Include this (click to paste in)"</span><span class="plain-syntax">);</span>
|
||||
|
@ -697,7 +697,7 @@ the first and last word and just look at what is in between:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">eki</span><span class="plain-syntax">-></span><span class="element-syntax">gloss</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">gloss</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">eki</span><span class="plain-syntax">-></span><span class="element-syntax">displayed</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">eki</span><span class="plain-syntax">-></span><span class="element-syntax">ideograph</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">as_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"paste"</span><span class="plain-syntax">)) </span><a href="7-tm.html#SP9" class="function-link"><span class="function-syntax">ExtensionWebsite::paste_ideograph</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">eki</span><span class="plain-syntax">-></span><span class="element-syntax">ideograph</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::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">as_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"paste"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">PasteButtons::paste_ideograph</span><span class="plain-syntax">(</span><span class="identifier-syntax">eki</span><span class="plain-syntax">-></span><span class="element-syntax">ideograph</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::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">as_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"install"</span><span class="plain-syntax">)) </span><a href="7-ti.html#SP7" class="function-link"><span class="function-syntax">ExtensionInstaller::install_icon</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">eki</span><span class="plain-syntax">-></span><span class="element-syntax">ideograph</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::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">as_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"uninstall"</span><span class="plain-syntax">)) </span><a href="7-ti.html#SP7" class="function-link"><span class="function-syntax">ExtensionInstaller::uninstall_icon</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">eki</span><span class="plain-syntax">-></span><span class="element-syntax">ideograph</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">eki</span><span class="plain-syntax">, </span><span class="reserved-syntax">extensions_key_item</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
|
||||
|
@ -874,7 +874,7 @@ handed to <span class="extract"><span class="extract-syntax">qsort</span></span>
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="7-tm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-tm.html">tm</a></li><li class="progresscurrent">eip</li><li class="progresssection"><a href="7-ti.html">ti</a></li><li class="progresssection"><a href="7-tc.html">tc</a></li><li class="progresssection"><a href="7-dc.html">dc</a></li><li class="progresssection"><a href="7-dr.html">dr</a></li><li class="progresssection"><a href="7-dim.html">dim</a></li><li class="progressnext"><a href="7-ti.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="7-tm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-tm.html">tm</a></li><li class="progresscurrent">eip</li><li class="progresssection"><a href="7-ti.html">ti</a></li><li class="progresssection"><a href="7-tc.html">tc</a></li><li class="progresssection"><a href="7-dc.html">dc</a></li><li class="progresssection"><a href="7-dr.html">dr</a></li><li class="progressnext"><a href="7-ti.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -330,7 +330,7 @@ are legal.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="7-ti.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-tm.html">tm</a></li><li class="progresssection"><a href="7-eip.html">eip</a></li><li class="progresssection"><a href="7-ti.html">ti</a></li><li class="progresscurrent">tc</li><li class="progresssection"><a href="7-dc.html">dc</a></li><li class="progresssection"><a href="7-dr.html">dr</a></li><li class="progresssection"><a href="7-dim.html">dim</a></li><li class="progressnext"><a href="7-dc.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="7-ti.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-tm.html">tm</a></li><li class="progresssection"><a href="7-eip.html">eip</a></li><li class="progresssection"><a href="7-ti.html">ti</a></li><li class="progresscurrent">tc</li><li class="progresssection"><a href="7-dc.html">dc</a></li><li class="progresssection"><a href="7-dr.html">dr</a></li><li class="progressnext"><a href="7-dc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -338,7 +338,7 @@ produces a second report.
|
|||
<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">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">search_result</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="plain-syntax"> </span><a href="7-tm.html#SP9" class="function-link"><span class="function-syntax">ExtensionWebsite::paste_button</span></a><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_new_style</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;<i>'Include'</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">"li"</span><span class="plain-syntax">);</span>
|
||||
|
@ -877,7 +877,7 @@ produces a second report.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ti.html#SP7">§7</a> (twice).</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="7-eip.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-tm.html">tm</a></li><li class="progresssection"><a href="7-eip.html">eip</a></li><li class="progresscurrent">ti</li><li class="progresssection"><a href="7-tc.html">tc</a></li><li class="progresssection"><a href="7-dc.html">dc</a></li><li class="progresssection"><a href="7-dr.html">dr</a></li><li class="progresssection"><a href="7-dim.html">dim</a></li><li class="progressnext"><a href="7-tc.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="7-eip.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-tm.html">tm</a></li><li class="progresssection"><a href="7-eip.html">eip</a></li><li class="progresscurrent">ti</li><li class="progresssection"><a href="7-tc.html">tc</a></li><li class="progresssection"><a href="7-dc.html">dc</a></li><li class="progresssection"><a href="7-dr.html">dr</a></li><li class="progressnext"><a href="7-tc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -299,7 +299,7 @@ examples provided in the extension.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Pathnames::create_in_file_system</span><span class="plain-syntax">(</span><span class="identifier-syntax">KP</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">KD</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">location_if_path</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Documentation"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">compiled_documentation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">doc</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dc.html#SP3" class="function-link"><span class="function-syntax">DocumentationCompiler::compile_from_path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">KD</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-dc.html#SP2" class="function-link"><span class="function-syntax">DocumentationCompiler::compile_from_path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">KD</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">doc</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax"> = </span><a href="7-dr.html#SP1" class="function-link"><span class="function-syntax">DocumentationRenderer::open_subpage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">KP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"index.html"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dr.html#SP5" class="function-link"><span class="function-syntax">DocumentationRenderer::render_header</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="element-syntax">as_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">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">);</span>
|
||||
|
@ -361,7 +361,7 @@ examples provided in the extension.
|
|||
<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">no_EXW_breadcrumbs</span><span class="plain-syntax">-1) && (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">EXW_breakcrumb_URLs</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">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=\"%S\" class=\"registrycontentslink\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">EXW_breakcrumb_URLs</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dr.html#SP8" class="function-link"><span class="function-syntax">DocumentationRenderer::render_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">EXW_breadcrumb_titles</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">InformFlavouredMarkdown::render_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">EXW_breadcrumb_titles</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">no_EXW_breadcrumbs</span><span class="plain-syntax">-1) && (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">EXW_breakcrumb_URLs</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">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -370,32 +370,15 @@ examples provided in the extension.
|
|||
<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_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"headingrubric\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_span</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">"headingpanelrubricalt"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dr.html#SP8" class="function-link"><span class="function-syntax">DocumentationRenderer::render_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">subtitle</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InformFlavouredMarkdown::render_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">subtitle</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_span</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">"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="identifier-syntax">no_EXW_breadcrumbs</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>This is a new-look paste button, using a "command-V" ideograph rather than
|
||||
a somewhat enigmatic icon.
|
||||
</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">ExtensionWebsite::paste_button</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">ExtensionWebsite::paste_button</span></span>:<br/>Extensions Index Page - <a href="7-eip.html#SP1_2_2_4_4_1">§1.2.2.4.4.1</a><br/>The Installer - <a href="7-ti.html#SP2_5_2">§2.5.2</a><br/>Documentation in Markdown - <a href="7-dim.html#SP7_2">§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">matter</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">paste</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="7-tm.html#SP9" class="function-link"><span class="function-syntax">ExtensionWebsite::paste_ideograph</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">paste</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text_using</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">paste</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">paste</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionWebsite::paste_ideograph</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">ExtensionWebsite::paste_ideograph</span></span>:<br/>Extensions Index Page - <a href="7-eip.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="plain-syntax"> </span><span class="comment-syntax"> the Unicode for "place of interest", the Swedish castle which became the Apple action symbol</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<span class=\"paste\">%cV</span>"</span><span class="plain-syntax">, </span><span class="constant-syntax">0x2318</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="6-vmg.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresscurrent">tm</li><li class="progresssection"><a href="7-eip.html">eip</a></li><li class="progresssection"><a href="7-ti.html">ti</a></li><li class="progresssection"><a href="7-tc.html">tc</a></li><li class="progresssection"><a href="7-dc.html">dc</a></li><li class="progresssection"><a href="7-dr.html">dr</a></li><li class="progresssection"><a href="7-dim.html">dim</a></li><li class="progressnext"><a href="7-eip.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-vmg.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresscurrent">tm</li><li class="progresssection"><a href="7-eip.html">eip</a></li><li class="progresssection"><a href="7-ti.html">ti</a></li><li class="progresssection"><a href="7-tc.html">tc</a></li><li class="progresssection"><a href="7-dc.html">dc</a></li><li class="progresssection"><a href="7-dr.html">dr</a></li><li class="progressnext"><a href="7-eip.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -330,11 +330,6 @@
|
|||
<spon class="sectiontitle">Documentation Renderer</span></a> -
|
||||
<span class="sectionpurpose">To render a passage of extension documentation as HTML.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="7-dim.html">
|
||||
<spon class="sectiontitle">Documentation in Markdown</span></a> -
|
||||
<span class="sectionpurpose">To provide a variation on Markdown for extension documentation.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -15,7 +15,6 @@ which use this module:
|
|||
@e build_skill_CLASS
|
||||
@e build_step_CLASS
|
||||
@e build_vertex_CLASS
|
||||
@e cdoc_example_CLASS
|
||||
@e compiled_documentation_CLASS
|
||||
@e control_structure_phrase_CLASS
|
||||
@e copy_error_CLASS
|
||||
|
@ -48,7 +47,6 @@ DECLARE_CLASS(build_script)
|
|||
DECLARE_CLASS(build_skill)
|
||||
DECLARE_CLASS(build_step)
|
||||
DECLARE_CLASS(build_vertex)
|
||||
DECLARE_CLASS(cdoc_example)
|
||||
DECLARE_CLASS(control_structure_phrase)
|
||||
DECLARE_CLASS(compiled_documentation)
|
||||
DECLARE_CLASS(copy_error)
|
||||
|
|
|
@ -46,29 +46,6 @@ typedef struct satellite_test_case {
|
|||
CLASS_DEFINITION
|
||||
} satellite_test_case;
|
||||
|
||||
@ Lettered examples have a "difficulty rating" in stars, 0 to 4. Numbers are unique
|
||||
from 1, 2, ...; letters are unique from A, B, C, ...
|
||||
|
||||
=
|
||||
typedef struct cdoc_example {
|
||||
struct text_stream *name;
|
||||
struct text_stream *description;
|
||||
int star_count;
|
||||
int number;
|
||||
char letter;
|
||||
CLASS_DEFINITION
|
||||
} cdoc_example;
|
||||
|
||||
cdoc_example *DocumentationCompiler::new_example_alone(text_stream *title, text_stream *desc, int star_count, int ecount) {
|
||||
cdoc_example *E = CREATE(cdoc_example);
|
||||
E->name = Str::duplicate(title);
|
||||
E->description = Str::duplicate(desc);
|
||||
E->star_count = star_count;
|
||||
E->number = ecount;
|
||||
E->letter = 'A' + (char) ecount - 1;
|
||||
return E;
|
||||
}
|
||||
|
||||
@ We can compile either from a file...
|
||||
|
||||
=
|
||||
|
@ -157,7 +134,7 @@ typedef struct example_scanning_state {
|
|||
if (Str::len(ess.placement) == 0) {
|
||||
;
|
||||
} else {
|
||||
alt_placement_node = DocumentationInMarkdown::find_section(cd->alt_tree, ess.placement);
|
||||
alt_placement_node = InformFlavouredMarkdown::find_section(cd->alt_tree, ess.placement);
|
||||
LOG("Looking for %S.\n", ess.placement);
|
||||
if (alt_placement_node == NULL) {
|
||||
DocumentationCompiler::example_error(&ess,
|
||||
|
@ -169,11 +146,11 @@ typedef struct example_scanning_state {
|
|||
DocumentationCompiler::example_error(&ess,
|
||||
I"example does not give its Description");
|
||||
}
|
||||
cdoc_example *eg = DocumentationCompiler::new_example_alone(
|
||||
IFM_example *eg = InformFlavouredMarkdown::new_example(
|
||||
ess.long_title, ess.desc, ess.star_count, ++(cd->total_examples));
|
||||
|
||||
markdown_item *eg_header = Markdown::new_item(INFORM_EXAMPLE_HEADING_MIT);
|
||||
eg_header->user_state = STORE_POINTER_cdoc_example(eg);
|
||||
eg_header->user_state = STORE_POINTER_IFM_example(eg);
|
||||
markdown_item *md = alt_placement_node;
|
||||
if (md == NULL) {
|
||||
md = cd->alt_tree->down;
|
||||
|
@ -189,7 +166,7 @@ typedef struct example_scanning_state {
|
|||
}
|
||||
if (Str::len(ess.body_text) > 0) {
|
||||
markdown_item *alt_ecd = Markdown::parse_extended(ess.body_text,
|
||||
DocumentationInMarkdown::extension_flavoured_Markdown());
|
||||
InformFlavouredMarkdown::variation());
|
||||
eg_header->down = alt_ecd->down;
|
||||
Markdown::debug_subtree(DL, eg_header);
|
||||
} else {
|
||||
|
@ -205,7 +182,7 @@ typedef struct example_scanning_state {
|
|||
void DocumentationCompiler::example_error(example_scanning_state *ess, text_stream *text) {
|
||||
text_stream *err = Str::new();
|
||||
WRITE_TO(err, "Example file '%S': %S", ess->scanning, text);
|
||||
markdown_item *E = DocumentationInMarkdown::error_item(err);
|
||||
markdown_item *E = InformFlavouredMarkdown::error_item(err);
|
||||
ADD_TO_LINKED_LIST(E, markdown_item, ess->errors);
|
||||
}
|
||||
|
||||
|
@ -286,19 +263,6 @@ compiled_documentation *DocumentationCompiler::compile(text_stream *source,
|
|||
WRITE_TO(cd->title, "%X", cd->associated_extension->as_copy->edition->work);
|
||||
if (Str::is_whitespace(source)) cd->empty = TRUE;
|
||||
else cd->alt_tree = Markdown::parse_extended(source,
|
||||
DocumentationInMarkdown::extension_flavoured_Markdown());
|
||||
InformFlavouredMarkdown::variation());
|
||||
return cd;
|
||||
}
|
||||
|
||||
@
|
||||
|
||||
=
|
||||
programming_language *DocumentationCompiler::get_language(text_stream *name) {
|
||||
inbuild_nest *N = Supervisor::internal();
|
||||
if (N == NULL) return NULL;
|
||||
pathname *LP = Pathnames::down(Nests::get_location(N), I"PLs");
|
||||
Languages::set_default_directory(LP);
|
||||
programming_language *pl = Languages::find_by_name(name, NULL, FALSE);
|
||||
if (pl == NULL) LOG("Did not load %S!\n", name);
|
||||
return pl;
|
||||
}
|
||||
|
|
|
@ -34,6 +34,11 @@ except the examples, and then up to 26 pages holding the content of examples A t
|
|||
|
||||
=
|
||||
void DocumentationRenderer::as_HTML(pathname *P, compiled_documentation *cd, text_stream *extras) {
|
||||
inbuild_nest *N = Supervisor::internal();
|
||||
if (N) {
|
||||
pathname *LP = Pathnames::down(Nests::get_location(N), I"PLs");
|
||||
Languages::set_default_directory(LP);
|
||||
}
|
||||
if (cd) {
|
||||
text_stream *OUT = DocumentationRenderer::open_subpage(P, I"index.html");
|
||||
if (OUT) {
|
||||
|
@ -75,7 +80,7 @@ void DocumentationRenderer::render_index_page(OUTPUT_STREAM, compiled_documentat
|
|||
if (cd->total_headings[1] > 0) { /* there are chapters */
|
||||
DocumentationRenderer::render_toc(OUT, cd);
|
||||
HTML_OPEN("em");
|
||||
DocumentationRenderer::render_text(OUT, I"Click on Chapter, Section or Example numbers to read");
|
||||
InformFlavouredMarkdown::render_text(OUT, I"Click on Chapter, Section or Example numbers to read");
|
||||
HTML_CLOSE("em");
|
||||
markdown_item *md = cd->alt_tree->down;
|
||||
if ((md) && ((md->type != HEADING_MIT) || (Markdown::get_heading_level(md) > 1))) {
|
||||
|
@ -86,7 +91,7 @@ void DocumentationRenderer::render_index_page(OUTPUT_STREAM, compiled_documentat
|
|||
for (markdown_item *md = cd->alt_tree->down; md; md = md->next) {
|
||||
if ((md->type == HEADING_MIT) && (Markdown::get_heading_level(md) == 1))
|
||||
break;
|
||||
Markdown::render_extended(OUT, md, DocumentationInMarkdown::extension_flavoured_Markdown());
|
||||
Markdown::render_extended(OUT, md, InformFlavouredMarkdown::variation());
|
||||
}
|
||||
}
|
||||
} else { /* there are only sections and examples, or not even that */
|
||||
|
@ -95,12 +100,12 @@ void DocumentationRenderer::render_index_page(OUTPUT_STREAM, compiled_documentat
|
|||
HTML_CLOSE("p");
|
||||
if (cd->empty) {
|
||||
HTML_OPEN("p");
|
||||
DocumentationRenderer::render_text(OUT, I"None is provided.");
|
||||
InformFlavouredMarkdown::render_text(OUT, I"None is provided.");
|
||||
HTML_CLOSE("p");
|
||||
} else {
|
||||
HTML_OPEN_WITH("div", "class=\"markdowncontent\"");
|
||||
Markdown::render_extended(OUT, cd->alt_tree,
|
||||
DocumentationInMarkdown::extension_flavoured_Markdown());
|
||||
InformFlavouredMarkdown::variation());
|
||||
HTML_CLOSE("div");
|
||||
}
|
||||
}
|
||||
|
@ -202,14 +207,14 @@ void DocumentationRenderer::render_extension_details(OUTPUT_STREAM, inform_exten
|
|||
|
||||
if (Str::len(E->rubric_as_lexed) > 0) {
|
||||
HTML_OPEN("p");
|
||||
DocumentationRenderer::render_text(OUT, E->rubric_as_lexed);
|
||||
InformFlavouredMarkdown::render_text(OUT, E->rubric_as_lexed);
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
||||
if (Str::len(E->extra_credit_as_lexed) > 0) {
|
||||
HTML_OPEN("p");
|
||||
HTML_OPEN("em");
|
||||
DocumentationRenderer::render_text(OUT, E->extra_credit_as_lexed);
|
||||
InformFlavouredMarkdown::render_text(OUT, E->extra_credit_as_lexed);
|
||||
HTML_CLOSE("em");
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
@ -219,7 +224,7 @@ void DocumentationRenderer::render_extension_details(OUTPUT_STREAM, inform_exten
|
|||
WRITE("compatibility");
|
||||
HTML_CLOSE("p");
|
||||
HTML_OPEN("p");
|
||||
DocumentationRenderer::render_text(OUT, C->parsed_from);
|
||||
InformFlavouredMarkdown::render_text(OUT, C->parsed_from);
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
}
|
||||
|
@ -253,7 +258,7 @@ void DocumentationRenderer::render_toc_r(OUTPUT_STREAM, markdown_item *md, int L
|
|||
HTML_OPEN("b");
|
||||
DocumentationRenderer::link_to(OUT, md);
|
||||
Markdown::render_extended(OUT, md->down,
|
||||
DocumentationInMarkdown::extension_flavoured_Markdown());
|
||||
InformFlavouredMarkdown::variation());
|
||||
HTML_CLOSE("a");
|
||||
HTML_CLOSE("b");
|
||||
HTML::end_span(OUT);
|
||||
|
@ -262,14 +267,14 @@ void DocumentationRenderer::render_toc_r(OUTPUT_STREAM, markdown_item *md, int L
|
|||
}
|
||||
if (md->type == INFORM_EXAMPLE_HEADING_MIT) {
|
||||
HTML_OPEN_WITH("li", "class=\"exco%d\"", L);
|
||||
cdoc_example *E = RETRIEVE_POINTER_cdoc_example(md->user_state);
|
||||
IFM_example *E = RETRIEVE_POINTER_IFM_example(md->user_state);
|
||||
TEMPORARY_TEXT(link)
|
||||
WRITE_TO(link, "style=\"text-decoration: none\" href=\"eg%d.html#eg%d\"",
|
||||
E->number, E->number);
|
||||
HTML::begin_span(OUT, I"indexblack");
|
||||
HTML_OPEN_WITH("a", "%S", link);
|
||||
WRITE("Example %c — ", E->letter);
|
||||
DocumentationRenderer::render_text(OUT, E->name);
|
||||
InformFlavouredMarkdown::render_text(OUT, E->name);
|
||||
HTML_CLOSE("a");
|
||||
HTML::end_span(OUT);
|
||||
DISCARD_TEXT(link)
|
||||
|
@ -281,12 +286,23 @@ void DocumentationRenderer::render_toc_r(OUTPUT_STREAM, markdown_item *md, int L
|
|||
|
||||
void DocumentationRenderer::render_example(OUTPUT_STREAM, compiled_documentation *cd, int eg) {
|
||||
HTML_OPEN("div");
|
||||
markdown_item *alt_EN = DocumentationInMarkdown::find_example(cd->alt_tree, eg);
|
||||
markdown_item *alt_EN = InformFlavouredMarkdown::find_example(cd->alt_tree, eg);
|
||||
if (alt_EN == NULL) {
|
||||
WRITE("Example %d is missing", eg);
|
||||
} else {
|
||||
cdoc_example *E = RETRIEVE_POINTER_cdoc_example(alt_EN->user_state);
|
||||
DocumentationInMarkdown::render_example_heading(OUT, E, alt_EN->down);
|
||||
IFM_example *E = RETRIEVE_POINTER_IFM_example(alt_EN->user_state);
|
||||
TEMPORARY_TEXT(link)
|
||||
if (alt_EN->down) {
|
||||
WRITE_TO(link, "style=\"text-decoration: none\" href=\"eg%d.html\"", E->number);
|
||||
InformFlavouredMarkdown::render_example_heading(OUT, E, link);
|
||||
}
|
||||
DISCARD_TEXT(link)
|
||||
markdown_item *passage_node = alt_EN->down;
|
||||
while (passage_node) {
|
||||
Markdown::render_extended(OUT, passage_node,
|
||||
InformFlavouredMarkdown::variation());
|
||||
passage_node = passage_node->next;
|
||||
}
|
||||
HTML_CLOSE("div");
|
||||
@<Enter the small print@>;
|
||||
/* WRITE("This example is drawn from ");
|
||||
|
@ -325,19 +341,9 @@ void DocumentationRenderer::render_chapter(OUTPUT_STREAM, compiled_documentation
|
|||
if (Str::begins_with(S, wanted)) { rendering = TRUE; found = TRUE; }
|
||||
else rendering = FALSE;
|
||||
}
|
||||
if (rendering) Markdown::render_extended(OUT, md, DocumentationInMarkdown::extension_flavoured_Markdown());
|
||||
if (rendering) Markdown::render_extended(OUT, md, InformFlavouredMarkdown::variation());
|
||||
md = md->next;
|
||||
}
|
||||
if (found == FALSE) WRITE("Chapter %d is missing", ch);
|
||||
HTML_CLOSE("div");
|
||||
}
|
||||
|
||||
@
|
||||
|
||||
=
|
||||
void DocumentationRenderer::render_text(OUTPUT_STREAM, text_stream *text) {
|
||||
markdown_item *md = Markdown::parse_inline(text);
|
||||
HTML_OPEN_WITH("span", "class=\"markdowncontent\"");
|
||||
Markdown::render(OUT, md);
|
||||
HTML_CLOSE("span");
|
||||
}
|
||||
|
|
|
@ -1,664 +0,0 @@
|
|||
[DocumentationInMarkdown::] Documentation in Markdown.
|
||||
|
||||
To provide a variation on Markdown for extension documentation.
|
||||
|
||||
@ Plain CommonMark would not give us the bells and whistles we want, and would
|
||||
also allow rather more HTML liberty than is a good idea here. So:
|
||||
|
||||
@e INFORM_HEADINGS_MARKDOWNFEATURE
|
||||
@e PASTE_ICONS_MARKDOWNFEATURE
|
||||
|
||||
@e INFORM_EXAMPLE_HEADING_MIT
|
||||
@e INFORM_ERROR_MARKER_MIT
|
||||
|
||||
=
|
||||
markdown_variation *extension_flavoured_Markdown = NULL;
|
||||
|
||||
markdown_variation *DocumentationInMarkdown::extension_flavoured_Markdown(void) {
|
||||
if (extension_flavoured_Markdown) return extension_flavoured_Markdown;
|
||||
extension_flavoured_Markdown = MarkdownVariations::new(I"Inform-flavoured Markdown");
|
||||
MarkdownVariations::make_GitHub_features_active(extension_flavoured_Markdown);
|
||||
|
||||
MarkdownVariations::remove_feature(extension_flavoured_Markdown, HTML_BLOCKS_MARKDOWNFEATURE);
|
||||
MarkdownVariations::remove_feature(extension_flavoured_Markdown, INLINE_HTML_MARKDOWNFEATURE);
|
||||
|
||||
markdown_feature *Inform_headings = MarkdownVariations::new_feature(I"Inform_headings", INFORM_HEADINGS_MARKDOWNFEATURE);
|
||||
METHOD_ADD(Inform_headings, POST_PHASE_I_MARKDOWN_MTID, DocumentationInMarkdown::Inform_headings_intervene_after_Phase_I);
|
||||
MarkdownVariations::add_feature(extension_flavoured_Markdown, INFORM_HEADINGS_MARKDOWNFEATURE);
|
||||
|
||||
markdown_feature *paste_icons = MarkdownVariations::new_feature(I"paste icons", PASTE_ICONS_MARKDOWNFEATURE);
|
||||
METHOD_ADD(paste_icons, RENDER_MARKDOWN_MTID, DocumentationInMarkdown::paste_icons_renderer);
|
||||
METHOD_ADD(paste_icons, POST_PHASE_I_MARKDOWN_MTID, DocumentationInMarkdown::paste_icons_intervene_after_Phase_I);
|
||||
MarkdownVariations::add_feature(extension_flavoured_Markdown, PASTE_ICONS_MARKDOWNFEATURE);
|
||||
|
||||
Markdown::new_container_block_type(INFORM_EXAMPLE_HEADING_MIT, I"INFORM_EXAMPLE_HEADING");
|
||||
Markdown::new_leaf_block_type(INFORM_ERROR_MARKER_MIT, I"INFORM_ERROR_MARKER");
|
||||
|
||||
return extension_flavoured_Markdown;
|
||||
}
|
||||
|
||||
@ Markdown paragraphs which take the following shapes are to be headings:
|
||||
= (text)
|
||||
Chapter: Survey and Prospecting
|
||||
Section: Black Gold
|
||||
Example: *** Gelignite Anderson - A Tale of the Texas Oilmen
|
||||
=
|
||||
where in each case the colon can equally be a hyphen, and with optional
|
||||
space either side.
|
||||
|
||||
=
|
||||
void DocumentationInMarkdown::Inform_headings_intervene_after_Phase_I(markdown_feature *feature,
|
||||
markdown_item *tree, md_links_dictionary *link_references) {
|
||||
int example_number = 0;
|
||||
DocumentationInMarkdown::Inform_headings_r(tree, &example_number);
|
||||
DocumentationInMarkdown::regroup_examples_r(tree, &example_number);
|
||||
int section_number = 0, chapter_number = 0;
|
||||
TEMPORARY_TEXT(latest)
|
||||
DocumentationInMarkdown::number_headings_r(tree, §ion_number, &chapter_number, latest, 0);
|
||||
DISCARD_TEXT(latest)
|
||||
}
|
||||
|
||||
void DocumentationInMarkdown::Inform_headings_r(markdown_item *md, int *example_number) {
|
||||
if (md->type == PARAGRAPH_MIT) {
|
||||
text_stream *line = md->stashed;
|
||||
match_results mr = Regexp::create_mr();
|
||||
if ((Regexp::match(&mr, line, L"Section *: *(%c+?)")) ||
|
||||
(Regexp::match(&mr, line, L"Section *- *(%c+?)"))) {
|
||||
MDBlockParser::change_type(NULL, md, HEADING_MIT);
|
||||
Markdown::set_heading_level(md, 2);
|
||||
Str::clear(line);
|
||||
WRITE_TO(line, "%S", mr.exp[0]);
|
||||
} else if ((Regexp::match(&mr, line, L"Chapter *: *(%c+?)")) ||
|
||||
(Regexp::match(&mr, line, L"Chapter *- *(%c+?)"))) {
|
||||
MDBlockParser::change_type(NULL, md, HEADING_MIT);
|
||||
Markdown::set_heading_level(md, 1);
|
||||
Str::clear(line);
|
||||
WRITE_TO(line, "%S", mr.exp[0]);
|
||||
} else if ((Regexp::match(&mr, line, L"Example *: *(%**) *(%c+?)")) ||
|
||||
(Regexp::match(&mr, line, L"Example *- *(%**) *(%c+?)"))) {
|
||||
MDBlockParser::change_type(NULL, md, INFORM_EXAMPLE_HEADING_MIT);
|
||||
int star_count = Str::len(mr.exp[0]);
|
||||
cdoc_example *new_eg = DocumentationCompiler::new_example_alone(mr.exp[1], NULL,
|
||||
star_count, ++(*example_number));
|
||||
if (star_count == 0) {
|
||||
markdown_item *E = DocumentationInMarkdown::error_item(
|
||||
I"this example should be marked (before the title) '*', '**', '***' or '****' for difficulty");
|
||||
E->next = md->next; md->next = E;
|
||||
}
|
||||
if (star_count > 4) {
|
||||
markdown_item *E = DocumentationInMarkdown::error_item(
|
||||
I"four stars '****' is the maximum difficulty rating allowed");
|
||||
E->next = md->next; md->next = E;
|
||||
}
|
||||
md->user_state = STORE_POINTER_cdoc_example(new_eg);
|
||||
}
|
||||
Regexp::dispose_of(&mr);
|
||||
}
|
||||
for (markdown_item *ch = md->down; ch; ch=ch->next) {
|
||||
DocumentationInMarkdown::Inform_headings_r(ch, example_number);
|
||||
}
|
||||
}
|
||||
|
||||
markdown_item *DocumentationInMarkdown::error_item(text_stream *text) {
|
||||
markdown_item *E = Markdown::new_item(INFORM_ERROR_MARKER_MIT);
|
||||
E->stashed = Str::duplicate(text);
|
||||
return E;
|
||||
}
|
||||
|
||||
@ =
|
||||
void DocumentationInMarkdown::regroup_examples_r(markdown_item *md, int *example_number) {
|
||||
if (md->type == INFORM_EXAMPLE_HEADING_MIT) {
|
||||
if (md->down == NULL) {
|
||||
markdown_item *run_from = md->next;
|
||||
if (run_from) {
|
||||
markdown_item *run_to = run_from, *prev = NULL;
|
||||
while (run_to) {
|
||||
if (run_to->type == INFORM_EXAMPLE_HEADING_MIT) break;
|
||||
if ((run_to->type == HEADING_MIT) && (Markdown::get_heading_level(run_to) <= 2)) break;
|
||||
prev = run_to;
|
||||
run_to = run_to->next;
|
||||
}
|
||||
if (prev) {
|
||||
md->down = run_from; md->next = run_to; prev->next = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (markdown_item *ch = md->down; ch; ch=ch->next) {
|
||||
DocumentationInMarkdown::regroup_examples_r(ch, example_number);
|
||||
}
|
||||
}
|
||||
|
||||
@ =
|
||||
void DocumentationInMarkdown::number_headings_r(markdown_item *md,
|
||||
int *section_number, int *chapter_number, text_stream *latest, int level) {
|
||||
if (md->type == HEADING_MIT) {
|
||||
switch (Markdown::get_heading_level(md)) {
|
||||
case 1: {
|
||||
if (level > 1) {
|
||||
MDBlockParser::change_type(NULL, md, PARAGRAPH_MIT);
|
||||
} else {
|
||||
md->user_state = STORE_POINTER_text_stream(md->stashed);
|
||||
(*chapter_number)++;
|
||||
(*section_number) = 0;
|
||||
Str::clear(latest);
|
||||
WRITE_TO(latest, "Chapter %d: %S", *chapter_number, md->stashed);
|
||||
md->stashed = Str::duplicate(latest);
|
||||
text_stream *url = Str::new();
|
||||
WRITE_TO(url, "chapter%d.html", *chapter_number);
|
||||
md->user_state = STORE_POINTER_text_stream(url);
|
||||
}
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
if (level > 1) {
|
||||
MDBlockParser::change_type(NULL, md, PARAGRAPH_MIT);
|
||||
} else {
|
||||
md->user_state = STORE_POINTER_text_stream(md->stashed);
|
||||
(*section_number)++;
|
||||
Str::clear(latest);
|
||||
WRITE_TO(latest, "Section ");
|
||||
if (*chapter_number > 0) WRITE_TO(latest, "%d.", *chapter_number);
|
||||
WRITE_TO(latest, "%d: %S", *section_number, md->stashed);
|
||||
md->stashed = Str::duplicate(latest);
|
||||
text_stream *url = Str::new();
|
||||
if (*chapter_number > 0)
|
||||
WRITE_TO(url, "chapter%d.html", *chapter_number);
|
||||
WRITE_TO(url, "#section%d", *section_number);
|
||||
md->user_state = STORE_POINTER_text_stream(url);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (markdown_item *ch = md->down; ch; ch=ch->next) {
|
||||
DocumentationInMarkdown::number_headings_r(ch, section_number, chapter_number,
|
||||
latest, level + 1);
|
||||
}
|
||||
}
|
||||
|
||||
void DocumentationInMarkdown::paste_icons_intervene_after_Phase_I(markdown_feature *feature,
|
||||
markdown_item *tree, md_links_dictionary *link_references) {
|
||||
DocumentationInMarkdown::paiapi_r(tree);
|
||||
}
|
||||
|
||||
void DocumentationInMarkdown::paiapi_r(markdown_item *md) {
|
||||
markdown_item *current_sample = NULL;
|
||||
for (markdown_item *ch = md->down; ch; ch=ch->next) {
|
||||
if ((ch->type == CODE_BLOCK_MIT) && (Str::prefix_eq(ch->stashed, I"{*}", 3))) {
|
||||
ch->user_state = STORE_POINTER_markdown_item(ch);
|
||||
current_sample = ch;
|
||||
Str::delete_first_character(ch->stashed);
|
||||
Str::delete_first_character(ch->stashed);
|
||||
Str::delete_first_character(ch->stashed);
|
||||
} else if ((ch->type == CODE_BLOCK_MIT) &&
|
||||
(Str::prefix_eq(ch->stashed, I"{**}", 3)) && (current_sample)) {
|
||||
ch->user_state = STORE_POINTER_markdown_item(current_sample);
|
||||
Str::delete_first_character(ch->stashed);
|
||||
Str::delete_first_character(ch->stashed);
|
||||
Str::delete_first_character(ch->stashed);
|
||||
Str::delete_first_character(ch->stashed);
|
||||
}
|
||||
DocumentationInMarkdown::paiapi_r(ch);
|
||||
if (ch->type == CODE_BLOCK_MIT) {
|
||||
TEMPORARY_TEXT(detabbed)
|
||||
for (int i=0, margin=0; i<Str::len(ch->stashed); i++) {
|
||||
wchar_t c = Str::get_at(ch->stashed, i);
|
||||
if (c == '\t') {
|
||||
PUT_TO(detabbed, ' '); margin++;
|
||||
while (margin % 4 != 0) { PUT_TO(detabbed, ' '); margin++; }
|
||||
} else {
|
||||
PUT_TO(detabbed, c); margin++;
|
||||
if (c == '\n') margin = 0;
|
||||
}
|
||||
}
|
||||
Str::clear(ch->stashed);
|
||||
WRITE_TO(ch->stashed, "%S", detabbed);
|
||||
DISCARD_TEXT(detabbed);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int DocumentationInMarkdown::paste_icons_renderer(markdown_feature *feature, text_stream *OUT,
|
||||
markdown_item *md, int mode) {
|
||||
if (md->type == HEADING_MIT) {
|
||||
int L = Markdown::get_heading_level(md);
|
||||
switch (L) {
|
||||
case 1: HTML_OPEN("h2"); break;
|
||||
case 2: HTML_OPEN("h3"); break;
|
||||
case 3: HTML_OPEN("h4"); break;
|
||||
case 4: HTML_OPEN("h5"); break;
|
||||
default: HTML_OPEN("h6"); break;
|
||||
}
|
||||
TEMPORARY_TEXT(anchor)
|
||||
if (L <= 2) {
|
||||
text_stream *url = RETRIEVE_POINTER_text_stream(md->user_state);
|
||||
for (int i=0; i<Str::len(url); i++)
|
||||
if (Str::get_at(url, i) == '#')
|
||||
for (i++; i<Str::len(url); i++)
|
||||
PUT_TO(anchor, Str::get_at(url, i));
|
||||
}
|
||||
if (Str::len(anchor) > 0) {
|
||||
HTML_OPEN_WITH("span", "id=%S", anchor);
|
||||
} else {
|
||||
HTML_OPEN("span");
|
||||
}
|
||||
DISCARD_TEXT(anchor)
|
||||
Markdown::render_extended(OUT, md->down, DocumentationInMarkdown::extension_flavoured_Markdown());
|
||||
HTML_CLOSE("span");
|
||||
switch (L) {
|
||||
case 1: HTML_CLOSE("h2"); break;
|
||||
case 2: HTML_CLOSE("h3"); break;
|
||||
case 3: HTML_CLOSE("h4"); break;
|
||||
case 4: HTML_CLOSE("h5"); break;
|
||||
default: HTML_CLOSE("h6"); break;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
if (md->type == INFORM_EXAMPLE_HEADING_MIT) {
|
||||
cdoc_example *E = RETRIEVE_POINTER_cdoc_example(md->user_state);
|
||||
DocumentationInMarkdown::render_example_heading(OUT, E, NULL);
|
||||
return TRUE;
|
||||
}
|
||||
if (md->type == CODE_BLOCK_MIT) {
|
||||
DocumentationInMarkdown::render_code_block(OUT, md, mode);
|
||||
return TRUE;
|
||||
}
|
||||
if (md->type == BLOCK_QUOTE_MIT) {
|
||||
if ((md->down) && (md->down->type == PARAGRAPH_MIT)) {
|
||||
match_results mr = Regexp::create_mr();
|
||||
if ((Regexp::match(&mr, md->down->stashed, L"phrase: *{(%c*?)} *(%c+?)\n(%c*)")) ||
|
||||
(Regexp::match(&mr, md->down->stashed, L"(phrase): *(%c+?)\n(%c*)"))) {
|
||||
HTML_OPEN_WITH("div", "class=\"definition\"");
|
||||
HTML_OPEN_WITH("p", "class=\"defnprototype\"");
|
||||
WRITE("%S", mr.exp[1]);
|
||||
HTML_CLOSE("p");
|
||||
HTML_TAG("br");
|
||||
markdown_item *remainder = Markdown::parse_inline_extended(mr.exp[2], DocumentationInMarkdown::extension_flavoured_Markdown());
|
||||
Markdown::render_extended(OUT, remainder, DocumentationInMarkdown::extension_flavoured_Markdown());
|
||||
for (markdown_item *ch = md->down->next; ch; ch = ch->next)
|
||||
Markdown::render_extended(OUT, ch, DocumentationInMarkdown::extension_flavoured_Markdown());
|
||||
HTML_CLOSE("div");
|
||||
Regexp::dispose_of(&mr);
|
||||
return TRUE;
|
||||
}
|
||||
Regexp::dispose_of(&mr);
|
||||
}
|
||||
}
|
||||
if (md->type == CODE_MIT) {
|
||||
if (mode & TAGS_MDRMODE) {
|
||||
if (Markdown::get_backtick_count(md) == 1) {
|
||||
HTML_OPEN_WITH("code", "class=\"inlinesourcetext\"");
|
||||
} else {
|
||||
HTML_OPEN_WITH("code", "class=\"inlinecode\"");
|
||||
}
|
||||
}
|
||||
mode = mode & (~ESCAPES_MDRMODE);
|
||||
mode = mode & (~ENTITIES_MDRMODE);
|
||||
MDRenderer::slice(OUT, md, mode);
|
||||
if (mode & TAGS_MDRMODE) HTML_CLOSE("code");
|
||||
return TRUE;
|
||||
}
|
||||
if (md->type == INFORM_ERROR_MARKER_MIT) {
|
||||
HTML_OPEN_WITH("p", "class=\"documentationerrorbox\"");
|
||||
HTML::begin_span(OUT, I"documentationerror");
|
||||
WRITE("Error: %S", md->stashed);
|
||||
HTML_CLOSE("span");
|
||||
HTML_CLOSE("p");
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ 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,
|
||||
in the following section. The left-hand cell then contains a further table,
|
||||
in the next section.
|
||||
|
||||
=
|
||||
void DocumentationInMarkdown::render_example_heading(OUTPUT_STREAM, cdoc_example *E,
|
||||
markdown_item *passage_node) {
|
||||
TEMPORARY_TEXT(link)
|
||||
WRITE_TO(link, "style=\"text-decoration: none\" href=\"eg%d.html\"", E->number);
|
||||
|
||||
HTML_TAG("hr"); /* rule a line before the example heading */
|
||||
|
||||
HTML_OPEN_WITH("div", "class=\"examplebox\"");
|
||||
|
||||
/* Left hand cell: the oval icon */
|
||||
HTML_OPEN_WITH("div", "class=\"exampleleft\"");
|
||||
HTML_OPEN_WITH("span", "id=eg%d", E->number); /* provide the anchor point */
|
||||
@<Typeset the lettered oval example icon@>;
|
||||
HTML_CLOSE("span"); /* end the textual link */
|
||||
HTML_CLOSE("div");
|
||||
|
||||
/* Right hand cell: the asterisks and title, with rubric underneath */
|
||||
HTML_OPEN_WITH("div", "class=\"exampleright\"");
|
||||
if (passage_node == NULL) HTML_OPEN_WITH("a", "%S", link);
|
||||
for (int asterisk = 0; asterisk < E->star_count; asterisk++)
|
||||
PUT(0x2605); /* the Unicode for "black star" emoji */
|
||||
/* or 0x2B50 is the Unicode for "star" emoji */
|
||||
/* or again, could use the asterisk.png image in the app */
|
||||
WRITE(" ");
|
||||
HTML_OPEN("b");
|
||||
HTML::begin_span(OUT, I"indexdarkgrey");
|
||||
WRITE(" Example ");
|
||||
HTML::end_span(OUT);
|
||||
HTML::begin_span(OUT, I"indexblack");
|
||||
DocumentationRenderer::render_text(OUT, E->name);
|
||||
HTML_TAG("br");
|
||||
DocumentationRenderer::render_text(OUT, E->description);
|
||||
HTML::end_span(OUT);
|
||||
HTML_CLOSE("b");
|
||||
if (passage_node == NULL) HTML_CLOSE("a"); /* Link does not cover body, only heading */
|
||||
HTML_CLOSE("div");
|
||||
|
||||
HTML_CLOSE("div");
|
||||
|
||||
if (passage_node) {
|
||||
while (passage_node) {
|
||||
Markdown::render_extended(OUT, passage_node,
|
||||
DocumentationInMarkdown::extension_flavoured_Markdown());
|
||||
passage_node = passage_node->next;
|
||||
}
|
||||
}
|
||||
|
||||
DISCARD_TEXT(link)
|
||||
}
|
||||
|
||||
@ 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,
|
||||
one-cell-in-one-row table, use CSS to make a transparent PNG image of an oval
|
||||
the background image for the table, then put a boldface letter in the centre
|
||||
of its one and only cell. (Things were even worse when IE6 for Windows still
|
||||
had its infamous PNG transparency bug.)
|
||||
|
||||
@<Typeset the lettered oval example icon@> =
|
||||
if (passage_node == NULL) HTML_OPEN_WITH("a", "%S", link);
|
||||
HTML::begin_span(OUT, I"extensionexampleletter");
|
||||
PUT(E->letter);
|
||||
HTML::end_span(OUT);
|
||||
if (passage_node == NULL) HTML_CLOSE("a");
|
||||
|
||||
@ =
|
||||
markdown_item *DocumentationInMarkdown::find_section(markdown_item *tree, text_stream *name) {
|
||||
if (Str::len(name) == 0) return NULL;
|
||||
markdown_item *result = NULL;
|
||||
DocumentationInMarkdown::find(tree, name, &result);
|
||||
return result;
|
||||
}
|
||||
|
||||
void DocumentationInMarkdown::find(markdown_item *md, text_stream *name, markdown_item **result) {
|
||||
if (md->type == HEADING_MIT) {
|
||||
switch (Markdown::get_heading_level(md)) {
|
||||
case 1:
|
||||
case 2: {
|
||||
int i=0;
|
||||
for (; i<Str::len(md->stashed); i++)
|
||||
if (Str::get_at(md->stashed, i) == ':') { i+=2; break; }
|
||||
if (i + Str::len(name) == Str::len(md->stashed)) {
|
||||
int fail = FALSE;
|
||||
for (int j=0; j<Str::len(name); j++, i++)
|
||||
if (Str::get_at(name, j) != Str::get_at(md->stashed, i)) { fail = TRUE; break; }
|
||||
if ((fail == FALSE) && (*result == NULL)) *result = md;
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (markdown_item *ch = md->down; ch; ch=ch->next) {
|
||||
DocumentationInMarkdown::find(ch, name, result);
|
||||
}
|
||||
}
|
||||
|
||||
@ =
|
||||
markdown_item *DocumentationInMarkdown::find_example(markdown_item *tree, int eg) {
|
||||
if (eg <= 0) return NULL;
|
||||
markdown_item *result = NULL;
|
||||
int counter = 0;
|
||||
DocumentationInMarkdown::find_e(tree, eg, &result, &counter);
|
||||
return result;
|
||||
}
|
||||
|
||||
void DocumentationInMarkdown::find_e(markdown_item *md, int eg, markdown_item **result, int *counter) {
|
||||
if (md->type == INFORM_EXAMPLE_HEADING_MIT) {
|
||||
(*counter)++;
|
||||
if (*counter == eg) *result = md;
|
||||
}
|
||||
for (markdown_item *ch = md->down; ch; ch=ch->next) {
|
||||
DocumentationInMarkdown::find_e(ch, eg, result, counter);
|
||||
}
|
||||
}
|
||||
|
||||
void DocumentationInMarkdown::render_code_block(OUTPUT_STREAM, markdown_item *md, int mode) {
|
||||
text_stream *language_text = md->info_string;
|
||||
if (Str::len(language_text) == 0) {
|
||||
for (int i=0; i<Str::len(md->stashed); i++)
|
||||
if ((Str::get_at(md->stashed, i) == '>') &&
|
||||
((i==0) || (Str::get_at(md->stashed, i-1) == '\n')))
|
||||
language_text = I"transcript";
|
||||
if (Str::len(language_text) == 0) language_text = I"inform";
|
||||
}
|
||||
if ((Str::eq_insensitive(language_text, I"inform")) ||
|
||||
(Str::eq_insensitive(language_text, I"inform7"))) {
|
||||
@<Render as Inform 7 source text@>;
|
||||
} else {
|
||||
TEMPORARY_TEXT(language)
|
||||
TEMPORARY_TEXT(language_rendered)
|
||||
for (int i=0; i<Str::len(language_text); i++) {
|
||||
wchar_t c = Str::get_at(language_text, i);
|
||||
if ((c == ' ') || (c == '\t')) break;
|
||||
PUT_TO(language, c);
|
||||
}
|
||||
if (Str::len(language) > 0) {
|
||||
md->sliced_from = language;
|
||||
md->from = 0; md->to = Str::len(language) - 1;
|
||||
MDRenderer::slice(language_rendered, md, mode | ENTITIES_MDRMODE);
|
||||
}
|
||||
programming_language *pl = NULL;
|
||||
if (Str::len(language_rendered) > 0) {
|
||||
if (mode & TAGS_MDRMODE)
|
||||
HTML_OPEN_WITH("div", "class=\"extract-%S\"", language_rendered);
|
||||
}
|
||||
if (mode & TAGS_MDRMODE) HTML_OPEN("pre");
|
||||
if (Str::len(language_rendered) > 0) {
|
||||
if (mode & TAGS_MDRMODE)
|
||||
HTML_OPEN_WITH("code", "class=\"language-%S\"", language_rendered);
|
||||
pl = DocumentationCompiler::get_language(language_rendered);
|
||||
if (pl == NULL) LOG("Unable to find language <%S>\n", language_rendered);
|
||||
} else {
|
||||
if (mode & TAGS_MDRMODE) HTML_OPEN("code");
|
||||
}
|
||||
|
||||
Painter::reset_syntax_colouring(pl);
|
||||
TEMPORARY_TEXT(line)
|
||||
TEMPORARY_TEXT(line_colouring)
|
||||
for (int k=0; k<Str::len(md->stashed); k++) {
|
||||
if (Str::get_at(md->stashed, k) == '\n') {
|
||||
@<Render line as code@>;
|
||||
Str::clear(line);
|
||||
Str::clear(line_colouring);
|
||||
} else {
|
||||
PUT_TO(line, Str::get_at(md->stashed, k));
|
||||
}
|
||||
if ((k == Str::len(md->stashed) - 1) && (Str::len(line) > 0)) @<Render line as code@>;
|
||||
}
|
||||
HTML_CLOSE("span");
|
||||
DISCARD_TEXT(line)
|
||||
DISCARD_TEXT(line_colouring)
|
||||
if (mode & TAGS_MDRMODE) HTML_CLOSE("code");
|
||||
if (mode & TAGS_MDRMODE) HTML_CLOSE("pre");
|
||||
if (Str::len(language_rendered) > 0) {
|
||||
if (mode & TAGS_MDRMODE) HTML_CLOSE("div");
|
||||
}
|
||||
DISCARD_TEXT(language_rendered)
|
||||
DISCARD_TEXT(language)
|
||||
}
|
||||
}
|
||||
|
||||
@<Render line as code@> =
|
||||
if (pl) Painter::syntax_colour(pl, NULL, line, line_colouring, FALSE);
|
||||
DocumentationInMarkdown::syntax_coloured_code(OUT, line, line_colouring,
|
||||
0, Str::len(line), mode);
|
||||
if (mode & TAGS_MDRMODE) WRITE("<br>"); else WRITE(" ");
|
||||
|
||||
@<Render as Inform 7 source text@> =
|
||||
HTML_OPEN("blockquote");
|
||||
if (GENERAL_POINTER_IS_NULL(md->user_state) == FALSE) {
|
||||
markdown_item *first = RETRIEVE_POINTER_markdown_item(md->user_state);
|
||||
TEMPORARY_TEXT(accumulated)
|
||||
for (markdown_item *ch = md; ch; ch = ch->next) {
|
||||
if (ch->type == CODE_BLOCK_MIT) {
|
||||
if (GENERAL_POINTER_IS_NULL(ch->user_state) == FALSE) {
|
||||
markdown_item *latest = RETRIEVE_POINTER_markdown_item(ch->user_state);
|
||||
if (first == latest) WRITE_TO(accumulated, "%S", ch->stashed);
|
||||
}
|
||||
}
|
||||
}
|
||||
ExtensionWebsite::paste_button(OUT, accumulated);
|
||||
}
|
||||
TEMPORARY_TEXT(colouring)
|
||||
programming_language *default_language = DocumentationCompiler::get_language(I"Inform");
|
||||
programming_language *pl = default_language;
|
||||
if (pl) {
|
||||
Painter::reset_syntax_colouring(pl);
|
||||
Painter::syntax_colour(pl, NULL, md->stashed, colouring, FALSE);
|
||||
if (Str::eq(pl->language_name, I"Inform")) {
|
||||
int ts = FALSE;
|
||||
for (int i=0; i<Str::len(colouring); i++) {
|
||||
if (Str::get_at(colouring, i) == STRING_COLOUR) {
|
||||
wchar_t c = Str::get_at(md->stashed, i);
|
||||
if (c == '[') ts = TRUE;
|
||||
if (ts) Str::put_at(colouring, i, EXTRACT_COLOUR);
|
||||
if (c == ']') ts = FALSE;
|
||||
} else ts = FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
HTML::begin_span(OUT, I"indexdullblue");
|
||||
int tabulating = FALSE, tabular = FALSE, line_count = 0;
|
||||
TEMPORARY_TEXT(line)
|
||||
TEMPORARY_TEXT(line_colouring)
|
||||
for (int k=0; k<Str::len(md->stashed); k++) {
|
||||
if (Str::get_at(md->stashed, k) == '\n') {
|
||||
@<Render line@>;
|
||||
Str::clear(line);
|
||||
Str::clear(line_colouring);
|
||||
} else {
|
||||
PUT_TO(line, Str::get_at(md->stashed, k));
|
||||
PUT_TO(line_colouring, Str::get_at(colouring, k));
|
||||
}
|
||||
if ((k == Str::len(md->stashed) - 1) && (Str::len(line) > 0)) @<Render line@>;
|
||||
}
|
||||
HTML_CLOSE("span");
|
||||
if (tabulating) @<End I7 table in extension documentation@>;
|
||||
HTML_CLOSE("blockquote");
|
||||
DISCARD_TEXT(line)
|
||||
DISCARD_TEXT(line_colouring)
|
||||
|
||||
@<Render line@> =
|
||||
line_count++;
|
||||
if (Str::is_whitespace(line)) tabular = FALSE;
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, line, L"Table %c*")) tabular = TRUE;
|
||||
Regexp::dispose_of(&mr);
|
||||
if (tabular) {
|
||||
if (tabulating) {
|
||||
@<Begin new row of I7 table in extension documentation@>;
|
||||
} else {
|
||||
@<Begin I7 table in extension documentation@>;
|
||||
tabulating = TRUE;
|
||||
}
|
||||
int cell_from = 0, cell_to = 0, i = 0;
|
||||
@<Begin table cell for I7 table in extension documentation@>;
|
||||
for (; i<Str::len(line); i++) {
|
||||
if (Str::get_at(line, i) == '\t') {
|
||||
@<End table cell for I7 table in extension documentation@>;
|
||||
while (Str::get_at(line, i) == '\t') i++;
|
||||
@<Begin table cell for I7 table in extension documentation@>;
|
||||
i--;
|
||||
} else {
|
||||
cell_to++;
|
||||
}
|
||||
}
|
||||
@<End table cell for I7 table in extension documentation@>;
|
||||
@<End row of I7 table in extension documentation@>;
|
||||
} else {
|
||||
if (line_count > 1) HTML_TAG("br");
|
||||
if (tabulating) {
|
||||
@<End I7 table in extension documentation@>;
|
||||
tabulating = FALSE;
|
||||
}
|
||||
int indentation = 0;
|
||||
int z=0, spaces = 0;
|
||||
for (; z<Str::len(line); z++)
|
||||
if (Str::get_at(line, z) == ' ') { spaces++; if (spaces == 4) { indentation++; spaces = 0; } }
|
||||
else if (Str::get_at(line, z) == '\t') { indentation++; spaces = 0; }
|
||||
else break;
|
||||
for (int n=0; n<indentation; n++) WRITE(" ");
|
||||
DocumentationInMarkdown::syntax_coloured_code(OUT, line, line_colouring,
|
||||
z, Str::len(line), mode);
|
||||
}
|
||||
WRITE("\n");
|
||||
|
||||
@ 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:
|
||||
|
||||
@<Begin I7 table in extension documentation@> =
|
||||
HTML::end_span(OUT);
|
||||
HTML_TAG("br");
|
||||
HTML::begin_plain_html_table(OUT);
|
||||
HTML::first_html_column(OUT, 0);
|
||||
|
||||
@<End table cell for I7 table in extension documentation@> =
|
||||
DocumentationInMarkdown::syntax_coloured_code(OUT, line, line_colouring,
|
||||
cell_from, cell_to, mode);
|
||||
HTML::end_span(OUT);
|
||||
HTML::next_html_column(OUT, 0);
|
||||
|
||||
@<Begin table cell for I7 table in extension documentation@> =
|
||||
cell_from = i; cell_to = cell_from;
|
||||
HTML::begin_span(OUT, I"indexdullblue");
|
||||
|
||||
@<Begin new row of I7 table in extension documentation@> =
|
||||
HTML::first_html_column(OUT, 0);
|
||||
|
||||
@<End row of I7 table in extension documentation@> =
|
||||
HTML::end_html_row(OUT);
|
||||
|
||||
@<End I7 table in extension documentation@> =
|
||||
HTML::end_html_table(OUT);
|
||||
HTML::begin_span(OUT, I"indexdullblue");
|
||||
|
||||
@ =
|
||||
void DocumentationInMarkdown::syntax_coloured_code(OUTPUT_STREAM, text_stream *text,
|
||||
text_stream *colouring, int from, int to, int mode) {
|
||||
wchar_t current_col = 0;
|
||||
for (int i=from; i<to; i++) {
|
||||
wchar_t c = Str::get_at(text, i);
|
||||
wchar_t col = Str::get_at(colouring, i);
|
||||
if (col != current_col) {
|
||||
if (current_col) HTML_CLOSE("span");
|
||||
text_stream *span_class = NULL;
|
||||
switch (col) {
|
||||
case DEFINITION_COLOUR: span_class = I"syntaxdefinition"; break;
|
||||
case FUNCTION_COLOUR: span_class = I"syntaxfunction"; break;
|
||||
case RESERVED_COLOUR: span_class = I"syntaxreserved"; break;
|
||||
case ELEMENT_COLOUR: span_class = I"syntaxelement"; break;
|
||||
case IDENTIFIER_COLOUR: span_class = I"syntaxidentifier"; break;
|
||||
case CHARACTER_COLOUR: span_class = I"syntaxcharacter"; break;
|
||||
case CONSTANT_COLOUR: span_class = I"syntaxconstant"; break;
|
||||
case STRING_COLOUR: span_class = I"syntaxstring"; break;
|
||||
case PLAIN_COLOUR: span_class = I"syntaxplain"; break;
|
||||
case EXTRACT_COLOUR: span_class = I"syntaxextract"; break;
|
||||
case COMMENT_COLOUR: span_class = I"syntaxcomment"; break;
|
||||
}
|
||||
HTML_OPEN_WITH("span", "class=\"%S\"", span_class);
|
||||
current_col = col;
|
||||
}
|
||||
MDRenderer::char(OUT, c, mode);
|
||||
}
|
||||
if (current_col) HTML_CLOSE("span");
|
||||
}
|
|
@ -395,7 +395,7 @@ the usual ones seen in Mac OS X applications such as iTunes.
|
|||
WRITE(" ");
|
||||
TEMPORARY_TEXT(inclusion_text)
|
||||
WRITE_TO(inclusion_text, "Include %X.\n\n\n", res->copy->edition->work);
|
||||
ExtensionWebsite::paste_button(OUT, inclusion_text);
|
||||
PasteButtons::paste_text_new_style(OUT, inclusion_text);
|
||||
DISCARD_TEXT(inclusion_text)
|
||||
ExtensionIndex::add_to_key(key_list, PASTE_SYMBOL,
|
||||
I"Source text to Include this (click to paste in)");
|
||||
|
@ -539,7 +539,7 @@ void ExtensionIndex::add_to_key(linked_list *L, char *URL, text_stream *gloss) {
|
|||
eki->gloss = Str::duplicate(gloss);
|
||||
eki->displayed = FALSE;
|
||||
eki->ideograph = Str::new();
|
||||
if (Str::eq(as_text, I"paste")) ExtensionWebsite::paste_ideograph(eki->ideograph);
|
||||
if (Str::eq(as_text, I"paste")) PasteButtons::paste_ideograph(eki->ideograph);
|
||||
if (Str::eq(as_text, I"install")) ExtensionInstaller::install_icon(eki->ideograph);
|
||||
if (Str::eq(as_text, I"uninstall")) ExtensionInstaller::uninstall_icon(eki->ideograph);
|
||||
ADD_TO_LINKED_LIST(eki, extensions_key_item, L);
|
||||
|
|
|
@ -241,7 +241,7 @@ void ExtensionInstaller::install(inbuild_copy *C, int confirmed, pathname *to_to
|
|||
WRITE(" ");
|
||||
TEMPORARY_TEXT(inclusion_text)
|
||||
WRITE_TO(inclusion_text, "Include %X.\n\n\n", search_result->copy->edition->work);
|
||||
ExtensionWebsite::paste_button(OUT, inclusion_text);
|
||||
PasteButtons::paste_text_new_style(OUT, inclusion_text);
|
||||
DISCARD_TEXT(inclusion_text)
|
||||
WRITE(" <i>'Include'</i>");
|
||||
HTML_CLOSE("li");
|
||||
|
|
|
@ -281,7 +281,7 @@ void ExtensionWebsite::titling_and_navigation(OUTPUT_STREAM, text_stream *subtit
|
|||
if ((i != no_EXW_breadcrumbs-1) && (Str::len(EXW_breakcrumb_URLs[i]) > 0)) {
|
||||
HTML_OPEN_WITH("a", "href=\"%S\" class=\"registrycontentslink\"", EXW_breakcrumb_URLs[i]);
|
||||
}
|
||||
DocumentationRenderer::render_text(OUT, EXW_breadcrumb_titles[i]);
|
||||
InformFlavouredMarkdown::render_text(OUT, EXW_breadcrumb_titles[i]);
|
||||
if ((i != no_EXW_breadcrumbs-1) && (Str::len(EXW_breakcrumb_URLs[i]) > 0)) {
|
||||
HTML_CLOSE("a");
|
||||
}
|
||||
|
@ -290,25 +290,9 @@ void ExtensionWebsite::titling_and_navigation(OUTPUT_STREAM, text_stream *subtit
|
|||
HTML_CLOSE("div");
|
||||
HTML_OPEN_WITH("div", "class=\"headingrubric\"");
|
||||
HTML::begin_span(OUT, I"headingpanelrubricalt");
|
||||
DocumentationRenderer::render_text(OUT, subtitle);
|
||||
InformFlavouredMarkdown::render_text(OUT, subtitle);
|
||||
HTML::end_span(OUT);
|
||||
HTML_CLOSE("div");
|
||||
HTML_CLOSE("div");
|
||||
no_EXW_breadcrumbs = 0;
|
||||
}
|
||||
|
||||
@ This is a new-look paste button, using a "command-V" ideograph rather than
|
||||
a somewhat enigmatic icon.
|
||||
|
||||
=
|
||||
void ExtensionWebsite::paste_button(OUTPUT_STREAM, text_stream *matter) {
|
||||
TEMPORARY_TEXT(paste)
|
||||
ExtensionWebsite::paste_ideograph(paste);
|
||||
PasteButtons::paste_text_using(OUT, matter, paste);
|
||||
DISCARD_TEXT(paste)
|
||||
WRITE(" ");
|
||||
}
|
||||
void ExtensionWebsite::paste_ideograph(OUTPUT_STREAM) {
|
||||
/* the Unicode for "place of interest", the Swedish castle which became the Apple action symbol */
|
||||
WRITE("<span class=\"paste\">%cV</span>", 0x2318);
|
||||
}
|
||||
|
|
|
@ -66,4 +66,3 @@ Chapter 7: Extension Management
|
|||
The Converter
|
||||
Documentation Compiler
|
||||
Documentation Renderer
|
||||
Documentation in Markdown
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Total memory consumption was 142061K = 139 MB
|
||||
Total memory consumption was 142063K = 139 MB
|
||||
|
||||
---- was used for 2129729 objects, in 374742 frames in 0 x 800K = 0K = 0 MB:
|
||||
---- was used for 2129742 objects, in 374755 frames in 0 x 800K = 0K = 0 MB:
|
||||
|
||||
29.7% inter_tree_node_array 60 x 8192 = 491520 objects, 43255680 bytes
|
||||
19.0% text_stream_array 4930 x 100 = 493000 objects, 27765760 bytes
|
||||
|
@ -66,8 +66,8 @@ Total memory consumption was 142061K = 139 MB
|
|||
---- spatial_data 677 objects, 64992 bytes
|
||||
---- kind_constructor 79 objects, 64464 bytes
|
||||
---- linked_list_item_array 4 x 1000 = 4000 objects, 64128 bytes
|
||||
---- scenes_rcd_data 1958 objects, 62656 bytes
|
||||
---- actions_rcd_data 1958 objects, 62656 bytes
|
||||
---- scenes_rcd_data 1958 objects, 62656 bytes
|
||||
---- booking 868 objects, 62496 bytes
|
||||
---- kind_macro_definition 9 objects, 62280 bytes
|
||||
---- command_grammar 130 objects, 58240 bytes
|
||||
|
@ -82,13 +82,13 @@ Total memory consumption was 142061K = 139 MB
|
|||
---- heading 212 objects, 47488 bytes
|
||||
---- to_family_data 527 objects, 42160 bytes
|
||||
---- text_substitution 438 objects, 42048 bytes
|
||||
---- activity_list_array 1 x 1000 objects, 40032 bytes
|
||||
---- anl_clause_array 1 x 1000 objects, 40032 bytes
|
||||
---- activity_list_array 1 x 1000 objects, 40032 bytes
|
||||
---- shared_variable_access_list_array 12 x 100 = 1200 objects, 38784 bytes
|
||||
---- parsing_data 677 objects, 37912 bytes
|
||||
---- production_list 627 objects, 35112 bytes
|
||||
---- counting_data 677 objects, 32496 bytes
|
||||
---- regions_data 677 objects, 32496 bytes
|
||||
---- counting_data 677 objects, 32496 bytes
|
||||
---- property_permission 96 objects, 31488 bytes
|
||||
---- stack_frame_box 307 objects, 29472 bytes
|
||||
---- verb_sense 407 objects, 29304 bytes
|
||||
|
@ -103,15 +103,15 @@ Total memory consumption was 142061K = 139 MB
|
|||
---- nonlocal_variable 94 objects, 20304 bytes
|
||||
---- pipeline_step 15 objects, 20280 bytes
|
||||
---- action_name 90 objects, 20160 bytes
|
||||
---- method 406 objects, 19488 bytes
|
||||
---- method 411 objects, 19728 bytes
|
||||
---- timed_rules_rfd_data 404 objects, 19392 bytes
|
||||
---- build_vertex 157 objects, 18840 bytes
|
||||
---- instance 162 objects, 18144 bytes
|
||||
---- pcalc_prop_deferral 86 objects, 17888 bytes
|
||||
---- to_phrase_request 63 objects, 17136 bytes
|
||||
---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes
|
||||
---- action_name_list_array 1 x 1000 objects, 16032 bytes
|
||||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||
---- action_name_list_array 1 x 1000 objects, 16032 bytes
|
||||
---- md_doc_state 3 objects, 15720 bytes
|
||||
---- adjective 140 objects, 15680 bytes
|
||||
---- JSON_value 174 objects, 15312 bytes
|
||||
|
@ -142,22 +142,22 @@ Total memory consumption was 142061K = 139 MB
|
|||
---- compatibility_specification 100 objects, 4800 bytes
|
||||
---- parsing_pp_data 96 objects, 4608 bytes
|
||||
---- command_line_switch 56 objects, 4480 bytes
|
||||
---- method_set 140 objects, 4480 bytes
|
||||
---- semver_range 42 objects, 4368 bytes
|
||||
---- method_set 136 objects, 4352 bytes
|
||||
---- use_option 31 objects, 4216 bytes
|
||||
---- either_or_property_data 62 objects, 3968 bytes
|
||||
---- parse_node_annotation_type 124 objects, 3968 bytes
|
||||
---- either_or_property_data 62 objects, 3968 bytes
|
||||
---- definition 48 objects, 3456 bytes
|
||||
---- property_setting_bp_data 86 objects, 3440 bytes
|
||||
---- submodule_request 86 objects, 3440 bytes
|
||||
---- property_setting_bp_data 86 objects, 3440 bytes
|
||||
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
|
||||
---- target_vm 21 objects, 3024 bytes
|
||||
---- JSON_type 39 objects, 2808 bytes
|
||||
---- JSON_single_requirement 55 objects, 2640 bytes
|
||||
---- parentage_inference_data 79 objects, 2528 bytes
|
||||
---- part_of_inference_data 79 objects, 2528 bytes
|
||||
---- kind_constructor_instance_rule_array 1 x 100 objects, 2432 bytes
|
||||
---- parentage_inference_data 79 objects, 2528 bytes
|
||||
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
|
||||
---- kind_constructor_instance_rule_array 1 x 100 objects, 2432 bytes
|
||||
---- equation_symbol 30 objects, 2400 bytes
|
||||
---- scene 1 object, 2352 bytes
|
||||
---- build_step 28 objects, 2016 bytes
|
||||
|
@ -167,22 +167,22 @@ Total memory consumption was 142061K = 139 MB
|
|||
---- inform_pipeline 24 objects, 1536 bytes
|
||||
---- inbuild_requirement 37 objects, 1480 bytes
|
||||
---- noun_filter_token 22 objects, 1408 bytes
|
||||
---- inter_node_array 35 objects, 1400 bytes
|
||||
---- special_meaning_holder 35 objects, 1400 bytes
|
||||
---- inter_node_array 35 objects, 1400 bytes
|
||||
---- markdown_feature 29 objects, 1392 bytes
|
||||
---- JSON_requirement 42 objects, 1344 bytes
|
||||
---- constant_phrase 20 objects, 1280 bytes
|
||||
---- table_column 16 objects, 1280 bytes
|
||||
---- invocation_options_array 1 x 100 objects, 1224 bytes
|
||||
---- direction_inference_data 30 objects, 1200 bytes
|
||||
---- markdown_feature 25 objects, 1200 bytes
|
||||
---- inbuild_search_result 29 objects, 1160 bytes
|
||||
---- tree_inventory_item 28 objects, 1120 bytes
|
||||
---- submodule_identity 34 objects, 1088 bytes
|
||||
---- runtime_kind_structure 13 objects, 1040 bytes
|
||||
---- quantifier 16 objects, 1024 bytes
|
||||
---- web_md 7 objects, 1008 bytes
|
||||
---- named_rulebook_outcome 15 objects, 960 bytes
|
||||
---- pipeline_stage 20 objects, 960 bytes
|
||||
---- named_rulebook_outcome 15 objects, 960 bytes
|
||||
---- JSON_pair_requirement 29 objects, 928 bytes
|
||||
---- control_structure_phrase 12 objects, 864 bytes
|
||||
---- cached_understanding 21 objects, 840 bytes
|
||||
|
@ -195,70 +195,70 @@ Total memory consumption was 142061K = 139 MB
|
|||
---- implication 13 objects, 624 bytes
|
||||
---- chapter_md 7 objects, 616 bytes
|
||||
---- code_generation 1 object, 576 bytes
|
||||
---- inter_annotation_form 14 objects, 560 bytes
|
||||
---- generated_segment 14 objects, 560 bytes
|
||||
---- module 7 objects, 560 bytes
|
||||
---- inter_warehouse_room 10 objects, 560 bytes
|
||||
---- inter_annotation_form 14 objects, 560 bytes
|
||||
---- rulebook_outcome 17 objects, 544 bytes
|
||||
---- small_word_set 11 objects, 528 bytes
|
||||
---- equation 4 objects, 480 bytes
|
||||
---- markdown_variation 3 objects, 480 bytes
|
||||
---- i6_memory_setting 15 objects, 480 bytes
|
||||
---- equation 4 objects, 480 bytes
|
||||
---- inbuild_genre 8 objects, 448 bytes
|
||||
---- bp_family 14 objects, 448 bytes
|
||||
---- source_file 5 objects, 440 bytes
|
||||
---- inference_family 11 objects, 440 bytes
|
||||
---- markdown_variation 3 objects, 432 bytes
|
||||
---- article_usage 8 objects, 384 bytes
|
||||
---- grammatical_category 8 objects, 320 bytes
|
||||
---- tree_inventory 1 object, 320 bytes
|
||||
---- module_request 8 objects, 320 bytes
|
||||
---- cached_kind_declaration 8 objects, 320 bytes
|
||||
---- pronoun 8 objects, 320 bytes
|
||||
---- door_dir_notice 5 objects, 320 bytes
|
||||
---- tree_inventory 1 object, 320 bytes
|
||||
---- cached_kind_declaration 8 objects, 320 bytes
|
||||
---- grammatical_category 8 objects, 320 bytes
|
||||
---- module_request 8 objects, 320 bytes
|
||||
---- pronoun 8 objects, 320 bytes
|
||||
---- inter_pipeline 1 object, 312 bytes
|
||||
---- compiled_documentation 3 objects, 288 bytes
|
||||
---- up_family 9 objects, 288 bytes
|
||||
---- contents_entry 7 objects, 280 bytes
|
||||
---- compilation_unit 5 objects, 280 bytes
|
||||
---- door_to_notice 5 objects, 280 bytes
|
||||
---- explicit_bp_data 5 objects, 280 bytes
|
||||
---- verb_usage_tier 5 objects, 240 bytes
|
||||
---- contents_entry 7 objects, 280 bytes
|
||||
---- compilation_unit 5 objects, 280 bytes
|
||||
---- kit_dependency 5 objects, 240 bytes
|
||||
---- verb_usage_tier 5 objects, 240 bytes
|
||||
---- inform_project 1 object, 232 bytes
|
||||
---- adjective_meaning_family 7 objects, 224 bytes
|
||||
---- local_block_value 4 objects, 224 bytes
|
||||
---- adjective_meaning_family 7 objects, 224 bytes
|
||||
---- test_scenario 1 object, 216 bytes
|
||||
---- release_instructions 1 object, 208 bytes
|
||||
---- code_generator 5 objects, 200 bytes
|
||||
---- build_skill 5 objects, 200 bytes
|
||||
---- attachment_instruction 5 objects, 200 bytes
|
||||
---- build_skill 5 objects, 200 bytes
|
||||
---- code_generator 5 objects, 200 bytes
|
||||
---- IFM_example 4 objects, 192 bytes
|
||||
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||
---- cdoc_example 4 objects, 192 bytes
|
||||
---- element_activation 6 objects, 192 bytes
|
||||
---- imperative_defn_family 4 objects, 160 bytes
|
||||
---- inference_subject_family 5 objects, 160 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- imperative_defn_family 4 objects, 160 bytes
|
||||
---- inbuild_nest 3 objects, 120 bytes
|
||||
---- inform_language 1 object, 104 bytes
|
||||
---- md_links_dictionary 3 objects, 96 bytes
|
||||
---- group_together_function 2 objects, 80 bytes
|
||||
---- compile_task_data 1 object, 80 bytes
|
||||
---- article 2 objects, 80 bytes
|
||||
---- build_methodology 1 object, 56 bytes
|
||||
---- group_together_function 2 objects, 80 bytes
|
||||
---- inter_warehouse 1 object, 56 bytes
|
||||
---- build_methodology 1 object, 56 bytes
|
||||
---- figures_data 1 object, 56 bytes
|
||||
---- inform_kit_ittt 1 object, 48 bytes
|
||||
---- HTML_file_state 1 object, 48 bytes
|
||||
---- inform_kit_ittt 1 object, 48 bytes
|
||||
---- I6_generation_data 1 object, 48 bytes
|
||||
---- star_invention 1 object, 48 bytes
|
||||
---- by_function_bp_data 1 object, 40 bytes
|
||||
---- kind_template_definition 1 object, 40 bytes
|
||||
---- target_pragma_setting 1 object, 40 bytes
|
||||
---- loop_over_scope 1 object, 40 bytes
|
||||
---- kind_template_definition 1 object, 40 bytes
|
||||
---- by_function_bp_data 1 object, 40 bytes
|
||||
|
||||
99.9% was used for memory not allocated for objects:
|
||||
100.0% was used for memory not allocated for objects:
|
||||
|
||||
62.9% text stream storage 91601368 bytes in 513441 claims
|
||||
62.9% text stream storage 91603752 bytes in 513451 claims
|
||||
3.7% dictionary storage 5485056 bytes in 7759 claims
|
||||
---- sorting 2624 bytes in 531 claims
|
||||
4.9% source text 7200000 bytes in 3 claims
|
||||
|
@ -276,5 +276,5 @@ Total memory consumption was 142061K = 139 MB
|
|||
---- code generation workspace for objects 3488 bytes in 19 claims
|
||||
0.1% emitter array storage 281184 bytes in 2006 claims
|
||||
|
||||
-134.-3% was overhead - -195438320 bytes = -190857K = -186 MB
|
||||
-134.-3% was overhead - -195438928 bytes = -190858K = -186 MB
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
100.0% in inform7 run
|
||||
67.9% in compilation to Inter
|
||||
45.9% in //Sequence::undertake_queued_tasks//
|
||||
68.0% in compilation to Inter
|
||||
45.7% in //Sequence::undertake_queued_tasks//
|
||||
4.2% in //MajorNodes::pre_pass//
|
||||
3.4% in //MajorNodes::pass_1//
|
||||
1.9% in //ImperativeDefinitions::assess_all//
|
||||
|
@ -13,16 +13,16 @@
|
|||
0.3% in //Sequence::undertake_queued_tasks//
|
||||
0.3% in //Sequence::undertake_queued_tasks//
|
||||
0.3% in //World::stage_V//
|
||||
5.4% not specifically accounted for
|
||||
27.4% in running Inter pipeline
|
||||
5.7% not specifically accounted for
|
||||
27.6% in running Inter pipeline
|
||||
8.8% in step 14/15: generate inform6 -> auto.inf
|
||||
6.9% in step 5/15: load-binary-kits
|
||||
5.7% in step 6/15: make-synoptic-module
|
||||
6.1% in step 6/15: make-synoptic-module
|
||||
1.9% in step 9/15: make-identifiers-unique
|
||||
0.3% in step 12/15: eliminate-redundant-operations
|
||||
0.3% in step 4/15: compile-splats
|
||||
0.3% in step 7/15: shorten-wiring
|
||||
0.3% in step 8/15: detect-indirect-calls
|
||||
2.4% not specifically accounted for
|
||||
2.3% not specifically accounted for
|
||||
3.8% in supervisor
|
||||
0.8% not specifically accounted for
|
||||
0.4% not specifically accounted for
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "Architecture16Kit",
|
||||
"version": "10.2.0-beta+6X05"
|
||||
"version": "10.2.0-beta+6X06"
|
||||
},
|
||||
"compatibility": "16-bit",
|
||||
"kit-details": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "Architecture32Kit",
|
||||
"version": "10.2.0-beta+6X05"
|
||||
"version": "10.2.0-beta+6X06"
|
||||
},
|
||||
"compatibility": "32-bit",
|
||||
"kit-details": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "BasicInformKit",
|
||||
"version": "10.2.0-beta+6X05"
|
||||
"version": "10.2.0-beta+6X06"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "CommandParserKit",
|
||||
"version": "10.2.0-beta+6X05"
|
||||
"version": "10.2.0-beta+6X06"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "EnglishLanguageKit",
|
||||
"version": "10.2.0-beta+6X05"
|
||||
"version": "10.2.0-beta+6X06"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "WorldModelKit",
|
||||
"version": "10.2.0-beta+6X05"
|
||||
"version": "10.2.0-beta+6X06"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -101,6 +101,22 @@ void PasteButtons::paste_inner(OUTPUT_STREAM, int from, int to, text_stream *alt
|
|||
HTML_CLOSE("a");
|
||||
}
|
||||
|
||||
@ This is a new-look paste button, using a "command-V" ideograph rather than
|
||||
a somewhat enigmatic icon.
|
||||
|
||||
=
|
||||
void PasteButtons::paste_text_new_style(OUTPUT_STREAM, text_stream *matter) {
|
||||
TEMPORARY_TEXT(paste)
|
||||
PasteButtons::paste_ideograph(paste);
|
||||
PasteButtons::paste_text_using(OUT, matter, paste);
|
||||
DISCARD_TEXT(paste)
|
||||
WRITE(" ");
|
||||
}
|
||||
void PasteButtons::paste_ideograph(OUTPUT_STREAM) {
|
||||
/* the Unicode for "place of interest", the Swedish castle which became the Apple action symbol */
|
||||
WRITE("<span class=\"paste\">%cV</span>", 0x2318);
|
||||
}
|
||||
|
||||
@ 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
|
||||
|
|
Loading…
Reference in a new issue