1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-17 07:40:47 +03:00

IE-0036 completed

This commit is contained in:
Graham Nelson 2024-05-02 23:31:53 +01:00
parent dc839857d0
commit 7d21367324
76 changed files with 1106 additions and 510 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
[Version](notes/versioning.md): 10.2.0-beta+6X52 'Krypton' (1 May 2024)
[Version](notes/versioning.md): 10.2.0-beta+6X53 'Krypton' (2 May 2024)
## About Inform

View file

@ -1,3 +1,3 @@
Prerelease: beta
Build Date: 1 May 2024
Build Number: 6X52
Build Date: 2 May 2024
Build Number: 6X53

View file

@ -222,7 +222,7 @@ function togglePopup(material_id) {
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_NoSuchLicence</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_EarlyCopyrightDate</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"has too early a copyright date"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"which should be at least 1971."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
@ -355,31 +355,65 @@ function togglePopup(material_id) {
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. </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">LicenceDeclaration::describe</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">LicenceDeclaration::anything_to_declare</span><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">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Task::project</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inbuild_licence</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">proj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">licence</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">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">read_from_JSON</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">discussed_in_source</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="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">inform_extension</span><span class="plain-syntax">, </span><span class="identifier-syntax">proj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">extensions_included</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">licence</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">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">read_from_JSON</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">discussed_in_source</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. </b></p>
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">I6_TEXT_LICENSESFORMAT</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">PLAIN_LICENSESFORMAT</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">HTML_LICENSESFORMAT</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">LicenceDeclaration::describe</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">format</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Task::project</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inbuild_licence</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">proj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">licence</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">mention</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">licences_cited</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">format</span><span class="plain-syntax"> == </span><span class="constant-syntax">HTML_LICENSESFORMAT</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">"&lt;html&gt;&lt;body&gt;\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;h1&gt;Copyright notice&lt;/h1&gt;\n"</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">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">read_from_JSON</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">discussed_in_source</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ldr.html#SP6_2" class="named-paragraph-link"><span class="named-paragraph">Open paragraph</span><span class="named-paragraph-number">6.2</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">"Story "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ldr.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Describe L</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ldr.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">Describe L</span><span class="named-paragraph-number">6.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ldr.html#SP6_3" class="named-paragraph-link"><span class="named-paragraph">Close paragraph</span><span class="named-paragraph-number">6.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="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">inform_extension</span><span class="plain-syntax">, </span><span class="identifier-syntax">proj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">extensions_included</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">E</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">licence</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">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">read_from_JSON</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">discussed_in_source</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ldr.html#SP6_2" class="named-paragraph-link"><span class="named-paragraph">Open paragraph</span><span class="named-paragraph-number">6.2</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">"%X v%v is "</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">on_copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">work</span><span class="plain-syntax">, &amp;(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">on_copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">version</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">mention</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">", included"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ldr.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Describe L</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ldr.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">Describe L</span><span class="named-paragraph-number">6.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ldr.html#SP6_3" class="named-paragraph-link"><span class="named-paragraph">Close paragraph</span><span class="named-paragraph-number">6.3</span></a></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">licences_cited</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">"^For information about and links to full text of licences, "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"see: https:</span><span class="comment-syntax">spdx.org/licenses/\n");</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">licences_cited</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ldr.html#SP6_2" class="named-paragraph-link"><span class="named-paragraph">Open paragraph</span><span class="named-paragraph-number">6.2</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">"For information about and links to full text of licences, see: "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ldr.html#SP7" class="function-link"><span class="function-syntax">LicenceDeclaration::link</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">"https:</span><span class="comment-syntax">spdx.org/licenses/", format);</span>
<span class="string-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ldr.html#SP6_3" class="named-paragraph-link"><span class="named-paragraph">Close paragraph</span><span class="named-paragraph-number">6.3</span></a></span><span class="string-syntax">;</span>
<span class="string-syntax"> }</span>
<span class="string-syntax"> if (format == HTML_LICENSESFORMAT) WRITE("</span><span class="function-syntax">&lt;/body&gt;&lt;/html&gt;</span><span class="plain-syntax">\</span><span class="identifier-syntax">n</span><span class="string-syntax">");</span>
<span class="string-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP5_1" class="paragraph-anchor"></a><b>&#167;5.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Describe L</span><span class="named-paragraph-number">5.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP6_1" class="paragraph-anchor"></a><b>&#167;6.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Describe L</span><span class="named-paragraph-number">6.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -391,10 +425,36 @@ function togglePopup(material_id) {
<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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">rights_history</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">rights_history</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">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">origin_URL</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" See: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">origin_URL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"^\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="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">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">origin_URL</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" See: "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ldr.html#SP7" class="function-link"><span class="function-syntax">LicenceDeclaration::link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">origin_URL</span><span class="plain-syntax">, </span><span class="identifier-syntax">format</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-ldr.html#SP6">&#167;6</a> (twice).</li></ul>
<p class="commentary firstcommentary"><a id="SP6_2" class="paragraph-anchor"></a><b>&#167;6.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Open paragraph</span><span class="named-paragraph-number">6.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">format</span><span class="plain-syntax"> == </span><span class="constant-syntax">HTML_LICENSESFORMAT</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;p&gt;"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-ldr.html#SP6">&#167;6</a> (three times).</li></ul>
<p class="commentary firstcommentary"><a id="SP6_3" class="paragraph-anchor"></a><b>&#167;6.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Close paragraph</span><span class="named-paragraph-number">6.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">format</span><span class="plain-syntax"> == </span><span class="constant-syntax">HTML_LICENSESFORMAT</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;/p&gt;"</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">format</span><span class="plain-syntax"> == </span><span class="constant-syntax">I6_TEXT_LICENSESFORMAT</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"^"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-ldr.html#SP6">&#167;6</a> (three times).</li></ul>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </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">LicenceDeclaration::link</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">LicenceDeclaration::link</span></span>:<br/><a href="3-ldr.html#SP6">&#167;6</a>, <a href="3-ldr.html#SP6_1">&#167;6.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">URL</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">format</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">format</span><span class="plain-syntax"> == </span><span class="constant-syntax">HTML_LICENSESFORMAT</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;a href=\"%S\"&gt;%S&lt;/a&gt;"</span><span class="plain-syntax">, </span><span class="identifier-syntax">URL</span><span class="plain-syntax">, </span><span class="identifier-syntax">URL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">URL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-ldr.html#SP5">&#167;5</a> (twice).</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-ir.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-am.html">1</a></li><li class="progresschapter"><a href="2-bv.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-dlr.html">dlr</a></li><li class="progresssection"><a href="3-pr.html">pr</a></li><li class="progresssection"><a href="3-tr.html">tr</a></li><li class="progresssection"><a href="3-nuor.html">nuor</a></li><li class="progresssection"><a href="3-uor.html">uor</a></li><li class="progresssection"><a href="3-tr2.html">tr2</a></li><li class="progresssection"><a href="3-dbtr.html">dbtr</a></li><li class="progresssection"><a href="3-rpr.html">rpr</a></li><li class="progresssection"><a href="3-nar.html">nar</a></li><li class="progresssection"><a href="3-nlpr.html">nlpr</a></li><li class="progresssection"><a href="3-nrr.html">nrr</a></li><li class="progresssection"><a href="3-npr.html">npr</a></li><li class="progresssection"><a href="3-nvr.html">nvr</a></li><li class="progresssection"><a href="3-nar2.html">nar2</a></li><li class="progresssection"><a href="3-ir.html">ir</a></li><li class="progresscurrent">ldr</li><li class="progresschapter"><a href="4-nr.html">4</a></li><li class="progresschapter"><a href="5-id.html">5</a></li><li class="progresschapter"><a href="6-rls.html">6</a></li><li class="progresschapter"><a href="7-tc.html">7</a></li><li class="progresschapter"><a href="8-kpr.html">8</a></li><li class="progressnext"><a href="4-nr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->

View file

@ -229,6 +229,7 @@ so on. Those absolute basics are made here.
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">MajorNodes::pass_2</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">DialogueBeats::decide_cue_topics</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">LicenceDeclaration::check_licences</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">BibliographicData::fill_licence_variables</span><span class="plain-syntax">)</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-htc.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_5" class="paragraph-anchor"></a><b>&#167;2.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make the model world</span><span class="named-paragraph-number">2.5</span></span><span class="comment-syntax"> =</span>

View file

@ -389,6 +389,11 @@ the command line), but they take no time to generate so we make them anyway.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"there is no current task"</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">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">path</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Metadata.iFiction"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::licenses_file</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">as_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">inform7_task</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"there is no current task"</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">as_HTML</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">path</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Licenses.html"</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">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">path</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Licenses.txt"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::manifest_file</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"there is no current task"</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">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">path</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"manifest.plist"</span><span class="plain-syntax">);</span>

View file

@ -93,18 +93,18 @@ below.
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ComparisonFailed_CALCERROR:</span>
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">K1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(5, </span><span class="identifier-syntax">K2</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">msg</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (((</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K1</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_time</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K2</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_time_period</span><span class="plain-syntax">))) ||</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K2</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_time</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K1</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_time_period</span><span class="plain-syntax">))))</span>
<span class="plain-syntax"> </span><a href="2-si.html#SP6" class="function-link"><span class="function-syntax">StandardProblems::tcp_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ComparisonFailed</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"that would mean comparing two kinds of value which cannot mix - "</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">msg</span><span class="plain-syntax"> = </span><span class="string-syntax">"that would mean comparing two kinds of value which cannot mix - "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"%4 and %5 - so this must be incorrect. Note that 'time period', "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"introduced in Inform in 2024, holds values like '10 minutes', "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and is not the same kind as 'time', which is for times of day "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"like '6:12 PM'. (Before 2024, the same kind was used for both.)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="string-syntax">"like '6:12 PM'. (Before 2024, the same kind was used for both.)"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
<span class="plain-syntax"> </span><a href="2-si.html#SP6" class="function-link"><span class="function-syntax">StandardProblems::tcp_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ComparisonFailed</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"that would mean comparing two kinds of value which cannot mix - "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"%4 and %5 - so this must be incorrect."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">msg</span><span class="plain-syntax"> = </span><span class="string-syntax">"that would mean comparing two kinds of value which cannot mix - "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"%4 and %5 - so this must be incorrect."</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-si.html#SP6" class="function-link"><span class="function-syntax">StandardProblems::tcp_problem</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ComparisonFailed</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">, </span><span class="identifier-syntax">msg</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">BadUniversal1_CALCERROR:</span>
<span class="plain-syntax"> </span><a href="2-sq.html#SP3" class="function-link"><span class="function-syntax">Problems::quote_kind</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">K1</span><span class="plain-syntax">);</span>

View file

@ -59,7 +59,7 @@ function togglePopup(material_id) {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../inform7n.html">Inform7</a></li><li><a href="index.html">if</a></li><li><a href="index.html#2">Chapter 2: Bibliographic Data</a></li><li><b>Bibliographic Data</b></li></ul></div>
<p class="purpose">To manage the special variables providing bibliographic data on the work of IF being generated (title, author's name and so forth), and to write the Library Card in the index.</p>
<ul class="toc"><li><a href="2-bd.html#SP1">&#167;1. Enter the feature</a></li><li><a href="2-bd.html#SP3">&#167;3. Episode sentences</a></li><li><a href="2-bd.html#SP5">&#167;5. Bibliographic variables</a></li><li><a href="2-bd.html#SP8">&#167;8. The opening sentence</a></li><li><a href="2-bd.html#SP10">&#167;10. The IFID</a></li><li><a href="2-bd.html#SP11">&#167;11. Bibliographic text</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="2-bd.html#SP1">&#167;1. Enter the feature</a></li><li><a href="2-bd.html#SP3">&#167;3. Episode sentences</a></li><li><a href="2-bd.html#SP5">&#167;5. Bibliographic variables</a></li><li><a href="2-bd.html#SP8">&#167;8. The opening sentence</a></li><li><a href="2-bd.html#SP10">&#167;10. Licence information</a></li><li><a href="2-bd.html#SP11">&#167;11. The IFID</a></li><li><a href="2-bd.html#SP12">&#167;12. Bibliographic text</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Enter the feature. </b>This chapter defines the "bibliographic data" feature, whose activation
function follows.
@ -179,7 +179,7 @@ which must match:
<span class="plain-syntax"> ==&gt; { -1, - };</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. Bibliographic variables. </b>Most of the bibliographic data on a story is kept global variables, however,
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. Bibliographic variables. </b>Most of the bibliographic data on a story is kept in global variables, however,
which are used to build the iFiction record and the releasing blurb at the end
of a successful compilation. They are:
</p>
@ -192,6 +192,10 @@ of a successful compilation. They are:
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_description_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_creation_year_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_release_number_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_licence_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_copyright_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_origin_URL_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_rights_history_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. </b>As usual, Inform uses these English wordings to detect the creation of the
variables in the Standard Rules, which are in English: so there's no point
@ -205,6 +209,10 @@ in translating this nonterminal to other languages.
<span class="definition-keyword">define</span> <span class="constant-syntax">STORY_DESCRIPTION_BIBV</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">STORY_CREATION_YEAR_BIBV</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">RELEASE_NUMBER_BIBV</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">STORY_LICENCE_BIBV</span><span class="plain-syntax"> </span><span class="constant-syntax">7</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">STORY_COPYRIGHT_BIBV</span><span class="plain-syntax"> </span><span class="constant-syntax">8</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">STORY_ORIGIN_URL_BIBV</span><span class="plain-syntax"> </span><span class="constant-syntax">9</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">STORY_RIGHTS_HISTORY_BIBV</span><span class="plain-syntax"> </span><span class="constant-syntax">10</span>
</pre>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;notable-bibliographic-variables&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
@ -214,7 +222,11 @@ in translating this nonterminal to other languages.
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">genre</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">description</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">creation</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">year</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">release</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">number</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">release</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">number</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">licence</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">copyright</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">origin</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">url</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">rights</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">history</span>
</pre>
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>&#167;7. </b>And we read them here:
@ -244,6 +256,10 @@ in translating this nonterminal to other languages.
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">save</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_LICENCE_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_licence_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_COPYRIGHT_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_copyright_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_ORIGIN_URL_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_origin_URL_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_RIGHTS_HISTORY_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_rights_history_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::make_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
@ -307,7 +323,7 @@ person as the author of the main work.
<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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</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">w1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">BibliographicData::compile_bibliographic_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">w1</span><span class="plain-syntax">), </span><span class="constant-syntax">HTML_BIBTEXT_MODE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-bd.html#SP12" class="function-link"><span class="function-syntax">BibliographicData::compile_bibliographic_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">w1</span><span class="plain-syntax">), </span><span class="constant-syntax">HTML_BIBTEXT_MODE</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">TEMP</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">)) </span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">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">result</span><span class="plain-syntax">;</span>
@ -315,7 +331,58 @@ person as the author of the main work.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>&#167;10. The IFID. </b>The Interactive Fiction ID number for an Inform 7-compiled work is the same
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>&#167;10. Licence information. </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">BibliographicData::fill_licence_variables</span><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">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Task::project</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inbuild_licence</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">proj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">licence</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">val</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">var</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">var</span><span class="plain-syntax"> = </span><span class="identifier-syntax">story_licence_VAR</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">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">standard_licence</span><span class="plain-syntax">) </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">standard_licence</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">SPDX_id</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">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"Unspecified"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Set var to val</span><span class="named-paragraph-number">10.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">var</span><span class="plain-syntax"> = </span><span class="identifier-syntax">story_copyright_VAR</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">val</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">val</span><span class="plain-syntax">, </span><span class="string-syntax">"%S %d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">rights_owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">copyright_year</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">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">revision_year</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">copyright_year</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="string-syntax">"-%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">revision_year</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Set var to val</span><span class="named-paragraph-number">10.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">var</span><span class="plain-syntax"> = </span><span class="identifier-syntax">story_origin_URL_VAR</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">origin_URL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Set var to val</span><span class="named-paragraph-number">10.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">var</span><span class="plain-syntax"> = </span><span class="identifier-syntax">story_rights_history_VAR</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">rights_history</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Set var to val</span><span class="named-paragraph-number">10.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP10_1" class="paragraph-anchor"></a><b>&#167;10.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set var to val</span><span class="named-paragraph-number">10.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">var</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">val_t</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">val_t</span><span class="plain-syntax">, </span><span class="character-syntax">'"'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">) == </span><span class="character-syntax">'"'</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">val_t</span><span class="plain-syntax">, </span><span class="character-syntax">'\''</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">val_t</span><span class="plain-syntax">, </span><span class="identifier-syntax">Str::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">val_t</span><span class="plain-syntax">, </span><span class="character-syntax">'"'</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">TW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">val_t</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">constant_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_unescaped_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">TW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Assertions::PropertyKnowledge::initialise_global_variable</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">var</span><span class="plain-syntax">, </span><span class="identifier-syntax">constant_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">val_t</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP10">&#167;10</a> (four times).</li></ul>
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>&#167;11. The IFID. </b>The Interactive Fiction ID number for an Inform 7-compiled work is the same
as the UUID unique ID generated by the Inform 7 application.
</p>
@ -347,7 +414,7 @@ cases the UUID is empty.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">uuid_text</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>&#167;11. Bibliographic text. </b>"Bibliographic text" is text used in bibliographic data about the work
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. Bibliographic text. </b>"Bibliographic text" is text used in bibliographic data about the work
of IF compiled: for instance, in the iFiction record, or in the Library
Card section of the HTML index. Note that the exact output format depends
on global variables, which allow the bibliographic text writing code to
@ -364,21 +431,21 @@ therefore splits into one of three independent methods.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BibliographicData::compile_bibliographic_text</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">BibliographicData::compile_bibliographic_text</span></span>:<br/><a href="2-bd.html#SP9">&#167;9</a><br/>The iFiction Record - <a href="2-tir.html#SP2">&#167;2</a><br/>The Blurb File - <a href="2-tbf.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">inchar32_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">mode</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">mode</span><span class="plain-syntax"> == </span><span class="constant-syntax">XML_BIBTEXT_MODE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP11_1" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as XML respecting Treaty of Babel rules</span><span class="named-paragraph-number">11.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP12_1" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as XML respecting Treaty of Babel rules</span><span class="named-paragraph-number">12.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">mode</span><span class="plain-syntax"> == </span><span class="constant-syntax">TRUNCATE_BIBTEXT_MODE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP11_4" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as a truncated filename</span><span class="named-paragraph-number">11.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP12_4" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as a truncated filename</span><span class="named-paragraph-number">12.4</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">RTBibliographicData::in_bibliographic_mode</span><span class="plain-syntax">()) || (</span><span class="identifier-syntax">mode</span><span class="plain-syntax"> == </span><span class="constant-syntax">I6_BIBTEXT_MODE</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP11_3" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as an I6 string</span><span class="named-paragraph-number">11.3</span></a></span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP11_2" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as HTML</span><span class="named-paragraph-number">11.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP12_3" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as an I6 string</span><span class="named-paragraph-number">12.3</span></a></span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP12_2" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as HTML</span><span class="named-paragraph-number">12.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP11_1" class="paragraph-anchor"></a><b>&#167;11.1. </b>This looks like a standard routine for converting ISO Latin-1 to UTF-8
<p class="commentary firstcommentary"><a id="SP12_1" class="paragraph-anchor"></a><b>&#167;12.1. </b>This looks like a standard routine for converting ISO Latin-1 to UTF-8
with XML escapes, but there are a few conventions on whitespace, too, in order
to comply with a strict reading of the Treaty of Babel. (This is intended
for fields in iFiction records.)
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as XML respecting Treaty of Babel rules</span><span class="named-paragraph-number">11.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as XML respecting Treaty of Babel rules</span><span class="named-paragraph-number">12.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -422,12 +489,12 @@ for fields in iFiction records.)
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_2" class="paragraph-anchor"></a><b>&#167;11.2. </b>In the HTML version, we want to respect the forcing of newlines, and
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP12">&#167;12</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP12_2" class="paragraph-anchor"></a><b>&#167;12.2. </b>In the HTML version, we want to respect the forcing of newlines, and
also the <span class="extract"><span class="extract-syntax">[']</span></span> escape to obtain a literal single quotation mark.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as HTML</span><span class="named-paragraph-number">11.2</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as HTML</span><span class="named-paragraph-number">12.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -463,12 +530,12 @@ also the <span class="extract"><span class="extract-syntax">[']</span></span> es
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_3" class="paragraph-anchor"></a><b>&#167;11.3. </b>In the Inform 6 string version, we suppress the forcing of newlines, but
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP12">&#167;12</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP12_3" class="paragraph-anchor"></a><b>&#167;12.3. </b>In the Inform 6 string version, we suppress the forcing of newlines, but
otherwise it's much the same.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as an I6 string</span><span class="named-paragraph-number">11.3</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as an I6 string</span><span class="named-paragraph-number">12.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -494,8 +561,8 @@ otherwise it's much the same.
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_4" class="paragraph-anchor"></a><b>&#167;11.4. </b>This code is used to work out a good filename for something given a name
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP12">&#167;12</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP12_4" class="paragraph-anchor"></a><b>&#167;12.4. </b>This code is used to work out a good filename for something given a name
inside Inform. For instance, if a project is called
</p>
@ -531,7 +598,7 @@ German eszet will be barbarously shortened to a single "s", but life is
just too short to care overmuch about this.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as a truncated filename</span><span class="named-paragraph-number">11.4</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as a truncated filename</span><span class="named-paragraph-number">12.4</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -563,7 +630,7 @@ just too short to care overmuch about this.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">black_chars_written</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"story"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP11">&#167;11</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP12">&#167;12</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="1-im.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">bd</li><li class="progresssection"><a href="2-ri.html">ri</a></li><li class="progresssection"><a href="2-tir.html">tir</a></li><li class="progresssection"><a href="2-tbf.html">tbf</a></li><li class="progresschapter"><a href="3-sm.html">3</a></li><li class="progresschapter"><a href="4-ap.html">4</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progresschapter"><a href="6-dlg.html">6</a></li><li class="progressnext"><a href="2-ri.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->

View file

@ -438,8 +438,9 @@ of writing the same thing.
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">problem_count</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ri.html#SP9_1" class="named-paragraph-link"><span class="named-paragraph">Write iFiction record</span><span class="named-paragraph-number">9.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ri.html#SP9_2" class="named-paragraph-link"><span class="named-paragraph">Write release blurb</span><span class="named-paragraph-number">9.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ri.html#SP9_3" class="named-paragraph-link"><span class="named-paragraph">Write manifest file</span><span class="named-paragraph-number">9.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ri.html#SP9_2" class="named-paragraph-link"><span class="named-paragraph">Write licenses file</span><span class="named-paragraph-number">9.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ri.html#SP9_3" class="named-paragraph-link"><span class="named-paragraph">Write release blurb</span><span class="named-paragraph-number">9.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ri.html#SP9_4" class="named-paragraph-link"><span class="named-paragraph">Write manifest file</span><span class="named-paragraph-number">9.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -456,7 +457,23 @@ of writing the same thing.
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_CLOSE</span><span class="plain-syntax">(</span><span class="identifier-syntax">xf</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-ri.html#SP9">&#167;9</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_2" class="paragraph-anchor"></a><b>&#167;9.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write release blurb</span><span class="named-paragraph-number">9.2</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP9_2" class="paragraph-anchor"></a><b>&#167;9.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write licenses file</span><span class="named-paragraph-number">9.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">LicenceDeclaration::anything_to_declare</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">xf_struct</span><span class="plain-syntax">; </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">xf</span><span class="plain-syntax"> = &amp;</span><span class="identifier-syntax">xf_struct</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">Task::licenses_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">my_instructions</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">release_website</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">STREAM_OPEN_TO_FILE</span><span class="plain-syntax">(</span><span class="identifier-syntax">xf</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">UTF8_ENC</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::fatal_on_file</span><span class="plain-syntax">(</span><span class="string-syntax">"Can't open metadata file"</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">format</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PLAIN_LICENSESFORMAT</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">my_instructions</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">release_website</span><span class="plain-syntax">) </span><span class="identifier-syntax">format</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HTML_LICENSESFORMAT</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LicenceDeclaration::describe</span><span class="plain-syntax">(</span><span class="identifier-syntax">xf</span><span class="plain-syntax">, </span><span class="identifier-syntax">format</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_CLOSE</span><span class="plain-syntax">(</span><span class="identifier-syntax">xf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-ri.html#SP9">&#167;9</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_3" class="paragraph-anchor"></a><b>&#167;9.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write release blurb</span><span class="named-paragraph-number">9.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -468,7 +485,7 @@ of writing the same thing.
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_CLOSE</span><span class="plain-syntax">(</span><span class="identifier-syntax">xf</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-ri.html#SP9">&#167;9</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP9_3" class="paragraph-anchor"></a><b>&#167;9.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write manifest file</span><span class="named-paragraph-number">9.3</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP9_4" class="paragraph-anchor"></a><b>&#167;9.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write manifest file</span><span class="named-paragraph-number">9.4</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -90,7 +90,7 @@ for archival re-releases of 1980s IF.)
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">BIBLIOGRAPHIC_TEXT_TRUNCATION</span><span class="plain-syntax"> </span><span class="constant-syntax">31</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BlurbFile::write</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">BlurbFile::write</span></span>:<br/>Release Instructions - <a href="2-ri.html#SP9_2">&#167;9.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">release_instructions</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rel</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BlurbFile::write</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">BlurbFile::write</span></span>:<br/>Release Instructions - <a href="2-ri.html#SP9_3">&#167;9.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">release_instructions</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rel</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">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="named-paragraph-container code-font"><a href="2-tbf.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Compose the blorbed story filename into the TEMP stream</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"! Blurb file created by Inform %B (build %B)\n\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
@ -216,7 +216,7 @@ brackets [THUS].
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"placeholder [IFID] = \"%S\"\n"</span><span class="plain-syntax">, </span><a href="2-bd.html#SP10" class="function-link"><span class="function-syntax">BibliographicData::read_uuid</span></a><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">"placeholder [IFID] = \"%S\"\n"</span><span class="plain-syntax">, </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">BibliographicData::read_uuid</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">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_release_number_VAR</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">"placeholder [RELEASE] = \""</span><span class="plain-syntax">);</span>
@ -297,6 +297,11 @@ own credits.
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"placeholder [OTHERCREDITS] = \"The postcard was written by Andrew Plotkin "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and designed by Lea Albaugh.\"\n"</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">LicenceDeclaration::anything_to_declare</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">"auxiliary \"%f\" \"%S\" \"--\"\n"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Task::licenses_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">release_website</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"Copyright"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-tbf.html#SP1_2">&#167;1.2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2_8" class="paragraph-anchor"></a><b>&#167;1.2.8. </b>Facilities for a Javascript interpreter to play a base64-encoded story
@ -487,7 +492,7 @@ Inblorb to copy out later.
<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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</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">w1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">BibliographicData::compile_bibliographic_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">w1</span><span class="plain-syntax">), </span><span class="identifier-syntax">mode</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-bd.html#SP12" class="function-link"><span class="function-syntax">BibliographicData::compile_bibliographic_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">w1</span><span class="plain-syntax">), </span><span class="identifier-syntax">mode</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>

View file

@ -97,7 +97,7 @@ function togglePopup(material_id) {
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;identification&gt;\n"</span><span class="plain-syntax">); </span><span class="identifier-syntax">INDENT</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;ifid&gt;%S&lt;/ifid&gt;\n"</span><span class="plain-syntax">, </span><a href="2-bd.html#SP10" class="function-link"><span class="function-syntax">BibliographicData::read_uuid</span></a><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">"&lt;ifid&gt;%S&lt;/ifid&gt;\n"</span><span class="plain-syntax">, </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">BibliographicData::read_uuid</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">Task::wraps_existing_storyfile</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">"&lt;ifid&gt;ZCODE-%d-%c%c%c%c%c%c"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">header</span><span class="plain-syntax">[2]*256+</span><span class="identifier-syntax">header</span><span class="plain-syntax">[3],</span>
@ -331,7 +331,7 @@ LISP.
<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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</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">w1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">BibliographicData::compile_bibliographic_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">w1</span><span class="plain-syntax">), </span><span class="constant-syntax">XML_BIBTEXT_MODE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-bd.html#SP12" class="function-link"><span class="function-syntax">BibliographicData::compile_bibliographic_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">w1</span><span class="plain-syntax">), </span><span class="constant-syntax">XML_BIBTEXT_MODE</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>

View file

@ -104,6 +104,14 @@ and there is no need to list both.
<span class="plain-syntax"> </span><a href="3-ce.html#SP2" class="function-link"><span class="function-syntax">CardElement::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Language of play"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^language"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"English"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ce.html#SP2" class="function-link"><span class="function-syntax">CardElement::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"IFID number"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^IFID"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ce.html#SP2" class="function-link"><span class="function-syntax">CardElement::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Story description"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^description"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"None"</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">Metadata::optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^licence"</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><a href="3-ce.html#SP2" class="function-link"><span class="function-syntax">CardElement::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Licence"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^licence"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Unspecified"</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">Metadata::optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^copyright"</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><a href="3-ce.html#SP2" class="function-link"><span class="function-syntax">CardElement::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Copyright"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^copyright"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Unspecified"</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">Metadata::optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^origin"</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><a href="3-ce.html#SP2" class="function-link"><span class="function-syntax">CardElement::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Origin URL"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^origin"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Unspecified"</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">Metadata::optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^rights"</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><a href="3-ce.html#SP2" class="function-link"><span class="function-syntax">CardElement::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Rights history"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^rights"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Unspecified"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>

View file

@ -330,19 +330,19 @@ be caught later on Inform's run.
<span class="plain-syntax"> </span><span class="string-syntax">"that tries to set the value of an unknown property to %4."</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">Problems::quote_property</span><span class="plain-syntax">(6, </span><span class="identifier-syntax">prn</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">msg</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (((</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K1</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_time</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K2</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_time_period</span><span class="plain-syntax">))) ||</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K2</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_time</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K1</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_time_period</span><span class="plain-syntax">))))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::tcp_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_PropertyType</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"that tries to set the value of the '%6' property to %4 - which "</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">msg</span><span class="plain-syntax"> = </span><span class="string-syntax">"that tries to set the value of the '%6' property to %4 - which "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"must be wrong because this property has to be %5. Note that "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"'time period', introduced in Inform in 2024, holds values like "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"'10 minutes', and is not the same kind as 'time', which is for "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"times of day like '6:12 PM'. (Before 2024, the same kind was "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"used for both.)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="string-syntax">"used for both.)"</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">StandardProblems::tcp_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_PropertyType</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"that tries to set the value of the '%6' property to %4 - which "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"must be wrong because this property has to be %5."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">msg</span><span class="plain-syntax"> = </span><span class="string-syntax">"that tries to set the value of the '%6' property to %4 - which "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"must be wrong because this property has to be %5."</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::tcp_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_PropertyType</span><span class="plain-syntax">), </span><span class="identifier-syntax">tck</span><span class="plain-syntax">, </span><span class="identifier-syntax">msg</span><span class="plain-syntax">);</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">NEVER_MATCH</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>

View file

@ -180,19 +180,19 @@ than the number with correct ones
number of successes.
</li></ul>
<pre class="undisplayed-code all-displayed-code code-font">
<span class="plain-syntax">Size of lexicon: 3184 excerpt meanings</span>
<span class="plain-syntax"> Stored among 859 words out of total vocabulary of 10655</span>
<span class="plain-syntax">Size of lexicon: 3188 excerpt meanings</span>
<span class="plain-syntax"> Stored among 859 words out of total vocabulary of 10659</span>
<span class="plain-syntax"> 723 words have a start list: longest belongs to report (with 296 meanings)</span>
<span class="plain-syntax"> 21 words have an end list: longest belongs to digits (with 7 meanings)</span>
<span class="plain-syntax"> 29 words have a middle list: longest belongs to to (with 4 meanings)</span>
<span class="plain-syntax"> 108 words have a subset list: longest belongs to street (with 4 meanings)</span>
<span class="plain-syntax">Number of attempts to retrieve: 110641</span>
<span class="plain-syntax"> of which unsuccessful: 92469</span>
<span class="plain-syntax">Number of attempts to retrieve: 110658</span>
<span class="plain-syntax"> of which unsuccessful: 92486</span>
<span class="plain-syntax"> of which successful: 18172</span>
<span class="plain-syntax">Total attempts to match against excerpt meanings: 280154</span>
<span class="plain-syntax"> of which, total with incorrect hash codes: 257376</span>
<span class="plain-syntax">Total attempts to match against excerpt meanings: 283858</span>
<span class="plain-syntax"> of which, total with incorrect hash codes: 261080</span>
<span class="plain-syntax"> of which, total with correct hash codes: 22778</span>
<span class="plain-syntax"> of which, total which matched: 19943</span>
</pre>

View file

@ -292,13 +292,13 @@ Within each category, items are listed in order of creation.
<pre class="undisplayed-code all-displayed-code code-font">
<span class="plain-syntax">adjective: 142 items</span>
<span class="plain-syntax">article: 2 items</span>
<span class="plain-syntax">noun: 2409 items</span>
<span class="plain-syntax">noun: 2413 items</span>
<span class="plain-syntax">pronoun: 8 items</span>
<span class="plain-syntax">preposition: 274 items</span>
<span class="plain-syntax">determiner: 22 items</span>
<span class="plain-syntax">verb: 109 items</span>
<span class="plain-syntax">verb_form: 388 items</span>
<span class="plain-syntax">total in all categories: 3354</span>
<span class="plain-syntax">total in all categories: 3358</span>
<span class="plain-syntax">adjective: 'even'</span>
<span class="plain-syntax">adjective: 'odd'</span>
@ -1196,6 +1196,10 @@ Within each category, items are listed in order of creation.
<span class="plain-syntax">noun: proper: 'story description'</span>
<span class="plain-syntax">noun: proper: 'release number'</span>
<span class="plain-syntax">noun: proper: 'story creation year'</span>
<span class="plain-syntax">noun: proper: 'story licence'</span>
<span class="plain-syntax">noun: proper: 'story copyright'</span>
<span class="plain-syntax">noun: proper: 'story origin url'</span>
<span class="plain-syntax">noun: proper: 'story rights history'</span>
<span class="plain-syntax">noun: proper: 'figure of cover'</span>
<span class="plain-syntax">noun: proper: 'i6-nothing-constant'</span>
<span class="plain-syntax">noun: proper: 'i6-varying-global'</span>

View file

@ -649,6 +649,10 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
<span class="definition-keyword">enum</span> <span class="constant-syntax">SERIAL_MD_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">LANGUAGE_MD_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">DESCRIPTION_MD_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">LICENCE_MD_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">COPYRIGHT_MD_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">ORIGIN_URL_MD_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">RIGHTS_HISTORY_MD_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">EPISODE_NUMBER_MD_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">SERIES_NAME_MD_HL</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">YEAR_MD_HL</span>
@ -676,6 +680,10 @@ and <a href="../pipeline-module/4-tsk.html" class="internal">The Standard Kits (
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">SERIAL_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^serial"</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">LANGUAGE_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^language"</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">DESCRIPTION_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^description"</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">LICENCE_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^licence"</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">COPYRIGHT_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^copyright"</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">ORIGIN_URL_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^origin"</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">RIGHTS_HISTORY_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^rights"</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">EPISODE_NUMBER_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^episode"</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">SERIES_NAME_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^series"</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">H_C_T</span><span class="plain-syntax">(</span><span class="constant-syntax">YEAR_MD_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^year"</span><span class="plain-syntax">)</span>

View file

@ -229,7 +229,7 @@ function togglePopup(material_id) {
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COPYRIGHT_LICENCES_HL</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">licences</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LicenceDeclaration::describe</span><span class="plain-syntax">(</span><span class="identifier-syntax">licences</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LicenceDeclaration::describe</span><span class="plain-syntax">(</span><span class="identifier-syntax">licences</span><span class="plain-syntax">, </span><span class="identifier-syntax">I6_TEXT_LICENSESFORMAT</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">licences</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><a href="2-emt.html#SP7" class="function-link"><span class="function-syntax">Emit::text_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">licences</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="2-emt.html#SP6" class="function-link"><span class="function-syntax">Emit::numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>

View file

@ -233,6 +233,10 @@ not compile to any data in the object code:
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP7" class="function-link"><span class="function-syntax">Emit::text_constant</span></a><span class="plain-syntax">(</span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">YEAR_MD_HL</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"(This year)"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP10" class="function-link"><span class="function-syntax">Emit::initial_value_as_raw_text</span></a><span class="plain-syntax">(</span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">LICENCE_MD_HL</span><span class="plain-syntax">), </span><span class="identifier-syntax">story_licence_VAR</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP10" class="function-link"><span class="function-syntax">Emit::initial_value_as_raw_text</span></a><span class="plain-syntax">(</span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">COPYRIGHT_MD_HL</span><span class="plain-syntax">), </span><span class="identifier-syntax">story_copyright_VAR</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP10" class="function-link"><span class="function-syntax">Emit::initial_value_as_raw_text</span></a><span class="plain-syntax">(</span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">ORIGIN_URL_MD_HL</span><span class="plain-syntax">), </span><span class="identifier-syntax">story_origin_URL_VAR</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP10" class="function-link"><span class="function-syntax">Emit::initial_value_as_raw_text</span></a><span class="plain-syntax">(</span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">RIGHTS_HISTORY_MD_HL</span><span class="plain-syntax">), </span><span class="identifier-syntax">story_rights_history_VAR</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-bd.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>The IFID is written into the compiled story file, too, both in order

View file

@ -247,6 +247,8 @@ can be sure that we are first, so everything works.
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">story</span><span class="plain-syntax"> </span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">story</span><span class="plain-syntax"> </span><span class="identifier-syntax">author</span><span class="plain-syntax">, </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">story</span><span class="plain-syntax"> </span><span class="identifier-syntax">headline</span><span class="plain-syntax">, </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">story</span><span class="plain-syntax"> </span><span class="identifier-syntax">genre</span>
<span class="identifier-syntax">and</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">story</span><span class="plain-syntax"> </span><span class="identifier-syntax">description</span><span class="plain-syntax"> </span><span class="identifier-syntax">are</span><span class="plain-syntax"> </span><span class="identifier-syntax">text</span><span class="plain-syntax"> </span><span class="identifier-syntax">variables</span><span class="plain-syntax">. </span><span class="comment-syntax">****</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">release</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax"> </span><span class="identifier-syntax">and</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">story</span><span class="plain-syntax"> </span><span class="identifier-syntax">creation</span><span class="plain-syntax"> </span><span class="identifier-syntax">year</span><span class="plain-syntax"> </span><span class="identifier-syntax">are</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax"> </span><span class="identifier-syntax">variables</span><span class="plain-syntax">. </span><span class="comment-syntax">*</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">story</span><span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">, </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">story</span><span class="plain-syntax"> </span><span class="identifier-syntax">copyright</span><span class="plain-syntax">, </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">story</span><span class="plain-syntax"> </span><span class="identifier-syntax">origin</span><span class="plain-syntax"> </span><span class="identifier-syntax">URL</span><span class="plain-syntax">, </span><span class="identifier-syntax">and</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span>
<span class="identifier-syntax">story</span><span class="plain-syntax"> </span><span class="identifier-syntax">rights</span><span class="plain-syntax"> </span><span class="identifier-syntax">history</span><span class="plain-syntax"> </span><span class="identifier-syntax">are</span><span class="plain-syntax"> </span><span class="identifier-syntax">text</span><span class="plain-syntax"> </span><span class="identifier-syntax">variables</span><span class="plain-syntax">. </span><span class="comment-syntax">***</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">release</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">usually</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">.</span>
<span class="identifier-syntax">The</span><span class="plain-syntax"> </span><span class="identifier-syntax">story</span><span class="plain-syntax"> </span><span class="identifier-syntax">headline</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">usually</span><span class="plain-syntax"> </span><span class="string-syntax">"An Interactive Fiction"</span><span class="plain-syntax">.</span>

View file

@ -170,6 +170,8 @@ not a file, false if we know the reverse, and otherwise not applicable.
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"manifest.plist"</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Metadata.iFiction"</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Licenses.txt"</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Licenses.html"</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"notes.rtf"</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Release.blurb"</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_insensitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Settings.plist"</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>

View file

@ -107,6 +107,8 @@ inbuild_copy *ProjectBundleManager::claim_folder_as_copy(pathname *P) {
} else {
if (Str::eq_insensitive(entry, I"manifest.plist")) continue;
if (Str::eq_insensitive(entry, I"Metadata.iFiction")) continue;
if (Str::eq_insensitive(entry, I"Licenses.txt")) continue;
if (Str::eq_insensitive(entry, I"Licenses.html")) continue;
if (Str::eq_insensitive(entry, I"notes.rtf")) continue;
if (Str::eq_insensitive(entry, I"Release.blurb")) continue;
if (Str::eq_insensitive(entry, I"Settings.plist")) continue;

View file

@ -1,15 +1,15 @@
Size of lexicon: 3184 excerpt meanings
Stored among 859 words out of total vocabulary of 10655
Size of lexicon: 3188 excerpt meanings
Stored among 859 words out of total vocabulary of 10659
723 words have a start list: longest belongs to report (with 296 meanings)
21 words have an end list: longest belongs to digits (with 7 meanings)
29 words have a middle list: longest belongs to to (with 4 meanings)
108 words have a subset list: longest belongs to street (with 4 meanings)
Number of attempts to retrieve: 110641
of which unsuccessful: 92469
Number of attempts to retrieve: 110658
of which unsuccessful: 92486
of which successful: 18172
Total attempts to match against excerpt meanings: 280154
of which, total with incorrect hash codes: 257376
Total attempts to match against excerpt meanings: 283858
of which, total with incorrect hash codes: 261080
of which, total with correct hash codes: 22778
of which, total which matched: 19943

File diff suppressed because it is too large Load diff

View file

@ -1,13 +1,13 @@
Total memory consumption was 143600K = 140 MB
Total memory consumption was 143646K = 140 MB
---- was used for 2171969 objects, in 383218 frames in 0 x 800K = 0K = 0 MB:
---- was used for 2172492 objects, in 383444 frames in 0 x 800K = 0K = 0 MB:
29.4% inter_tree_node_array 60 x 8192 = 491520 objects, 43255680 bytes
19.9% text_stream_array 5205 x 100 = 520500 objects, 29314560 bytes
18.1% linked_list 47717 objects, 26721520 bytes
19.9% text_stream_array 5208 x 100 = 520800 objects, 29331456 bytes
18.1% linked_list 47752 objects, 26741120 bytes
9.8% inter_symbol_array 136 x 1024 = 139264 objects, 14487808 bytes
9.5% inter_error_stash_array 107 x 1024 = 109568 objects, 14028128 bytes
7.2% parse_node 134009 objects, 10720720 bytes
7.2% parse_node 134069 objects, 10725520 bytes
7.2% scan_directory 2581 objects, 10654368 bytes
5.2% verb_conjugation 165 objects, 7657320 bytes
3.9% parse_node_annotation_array 358 x 500 = 179000 objects, 5739456 bytes
@ -16,56 +16,56 @@ Total memory consumption was 143600K = 140 MB
1.8% kind_array 68 x 1000 = 68000 objects, 2722176 bytes
1.4% inter_schema_token 14235 objects, 2163720 bytes
1.4% inter_name_generator_array 52 x 1000 = 52000 objects, 2081664 bytes
1.2% package_request 21496 objects, 1891648 bytes
1.2% package_request 21506 objects, 1892528 bytes
1.2% vocabulary_entry_array 164 x 100 = 16400 objects, 1842048 bytes
1.1% dict_entry_array 530 x 100 = 53000 objects, 1712960 bytes
1.0% inter_symbols_table 27112 objects, 1518272 bytes
1.0% inter_symbols_table 27122 objects, 1518832 bytes
1.0% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
0.9% i6_schema_array 24 x 100 = 2400 objects, 1440768 bytes
0.8% inter_package 27112 objects, 1301376 bytes
0.7% map_data 684 objects, 1149120 bytes
0.8% inter_package 27122 objects, 1301856 bytes
0.7% map_data 688 objects, 1155840 bytes
0.7% id_body 982 objects, 1123408 bytes
0.7% adjective_meaning 210 objects, 1039920 bytes
0.6% inter_schema_node 9103 objects, 1019536 bytes
0.6% excerpt_meaning 3184 objects, 993408 bytes
0.6% production 4012 objects, 930784 bytes
0.6% ptoken 8745 objects, 909480 bytes
0.5% grammatical_usage 3664 objects, 879360 bytes
0.5% individual_form 2599 objects, 873264 bytes
0.6% excerpt_meaning 3188 objects, 994656 bytes
0.6% production 4016 objects, 931712 bytes
0.6% ptoken 8755 objects, 910520 bytes
0.5% grammatical_usage 3668 objects, 880320 bytes
0.5% individual_form 2603 objects, 874608 bytes
0.4% unary_predicate_array 17 x 1000 = 17000 objects, 680544 bytes
0.3% local_variable_array 49 x 100 = 4900 objects, 471968 bytes
0.2% verb_usage 1148 objects, 394912 bytes
0.2% dictionary 7825 objects, 375600 bytes
0.2% dictionary 7830 objects, 375840 bytes
0.2% rule 479 objects, 375536 bytes
0.2% verb_form 388 objects, 350752 bytes
0.1% noun 2409 objects, 289080 bytes
0.1% noun 2413 objects, 289560 bytes
0.1% compilation_subtask 3398 objects, 271840 bytes
0.1% inference_subject 679 objects, 266168 bytes
0.1% inference_subject 683 objects, 267736 bytes
0.1% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes
0.1% vanilla_function 3850 objects, 246400 bytes
0.1% hierarchy_location 1226 objects, 176544 bytes
0.1% hierarchy_location 1230 objects, 177120 bytes
0.1% binary_predicate 334 objects, 176352 bytes
0.1% linguistic_stock_item 3354 objects, 160992 bytes
0.1% linguistic_stock_item 3358 objects, 161184 bytes
0.1% rule_family_data 404 objects, 148672 bytes
---- nonterminal 776 objects, 142784 bytes
---- nascent_array 2198 objects, 140672 bytes
---- nascent_array 2202 objects, 140928 bytes
---- markdown_item_array 1 x 1000 objects, 136032 bytes
---- inference 1708 objects, 122976 bytes
---- inference 1712 objects, 123264 bytes
---- pcalc_term_array 3 x 1000 = 3000 objects, 120096 bytes
---- documentation_ref 1282 objects, 112816 bytes
---- inter_schema 1552 objects, 111744 bytes
---- imperative_defn 1420 objects, 102240 bytes
---- noun_usage 2435 objects, 97400 bytes
---- inter_tree 7 objects, 96320 bytes
---- noun_usage 2439 objects, 97560 bytes
---- inter_tree 7 objects, 96544 bytes
---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes
---- label_namespace 1480 objects, 94720 bytes
---- preposition 274 objects, 87680 bytes
---- kind_constructor 81 objects, 82944 bytes
---- lexical_cluster 2551 objects, 81632 bytes
---- lexical_cluster 2555 objects, 81760 bytes
---- kind_variable_declaration 1659 objects, 79632 bytes
---- rulebook 410 objects, 78720 bytes
---- spatial_data 688 objects, 66048 bytes
---- filename 1645 objects, 65800 bytes
---- spatial_data 684 objects, 65664 bytes
---- linked_list_item_array 4 x 1000 = 4000 objects, 64128 bytes
---- pathname 1575 objects, 63000 bytes
---- actions_rcd_data 1964 objects, 62848 bytes
@ -78,7 +78,7 @@ Total memory consumption was 143600K = 140 MB
---- pcalc_func_array 1 x 1000 objects, 56032 bytes
---- cg_token 620 objects, 54560 bytes
---- cg_line 235 objects, 54520 bytes
---- property_inference_data 1320 objects, 52800 bytes
---- property_inference_data 1324 objects, 52960 bytes
---- ap_clause_array 2 x 400 = 800 objects, 51264 bytes
---- span_notation 6 objects, 49440 bytes
---- HTML_tag_array 1 x 1000 objects, 48032 bytes
@ -88,10 +88,10 @@ Total memory consumption was 143600K = 140 MB
---- 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 684 objects, 38304 bytes
---- parsing_data 688 objects, 38528 bytes
---- production_list 630 objects, 35280 bytes
---- regions_data 684 objects, 32832 bytes
---- counting_data 684 objects, 32832 bytes
---- regions_data 688 objects, 33024 bytes
---- counting_data 688 objects, 33024 bytes
---- property_permission 97 objects, 31816 bytes
---- stack_frame_box 307 objects, 29472 bytes
---- verb_sense 408 objects, 29376 bytes
@ -100,10 +100,10 @@ Total memory consumption was 143600K = 140 MB
---- open_source_licence 648 objects, 25920 bytes
---- shared_variable_set_array 6 x 100 = 600 objects, 24192 bytes
---- property 150 objects, 22800 bytes
---- backdrops_data 688 objects, 22016 bytes
---- JSON_value 249 objects, 21912 bytes
---- backdrops_data 684 objects, 21888 bytes
---- nonlocal_variable 99 objects, 21384 bytes
---- inter_node_list 656 objects, 20992 bytes
---- nonlocal_variable 95 objects, 20520 bytes
---- action_name 91 objects, 20384 bytes
---- pipeline_step 15 objects, 20280 bytes
---- method 416 objects, 19968 bytes
@ -113,8 +113,8 @@ Total memory consumption was 143600K = 140 MB
---- pcalc_prop_deferral 86 objects, 17888 bytes
---- to_phrase_request 63 objects, 17136 bytes
---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes
---- match_avinue_array 1 x 1000 objects, 16032 bytes
---- action_name_list_array 1 x 1000 objects, 16032 bytes
---- match_avinue_array 1 x 1000 objects, 16032 bytes
---- adjective 142 objects, 15904 bytes
---- md_doc_state 3 objects, 15720 bytes
---- booking_list 410 objects, 13120 bytes
@ -123,7 +123,7 @@ Total memory consumption was 143600K = 140 MB
---- uniqueness_count 495 objects, 11880 bytes
---- inter_construct 32 objects, 11008 bytes
---- heading_tree 33 objects, 10296 bytes
---- stopwatch_timer 125 objects, 10000 bytes
---- stopwatch_timer 126 objects, 10080 bytes
---- understanding_item_array 4 x 100 = 400 objects, 9728 bytes
---- inbuild_work 142 objects, 9088 bytes
---- inbuild_copy 65 objects, 8840 bytes
@ -133,7 +133,7 @@ Total memory consumption was 143600K = 140 MB
---- inbuild_edition 97 objects, 6984 bytes
---- verb 109 objects, 6976 bytes
---- hierarchy_attachment_point 79 objects, 6952 bytes
---- text_literal_holder 170 objects, 6800 bytes
---- text_literal_holder 172 objects, 6880 bytes
---- inform_extension 32 objects, 6144 bytes
---- section_md 63 objects, 6048 bytes
---- compatibility_specification 111 objects, 5328 bytes
@ -267,23 +267,23 @@ Total memory consumption was 143600K = 140 MB
100.0% was used for memory not allocated for objects:
63.1% text stream storage 92810232 bytes in 541061 claims
3.9% dictionary storage 5774400 bytes in 7825 claims
---- sorting 6408 bytes in 1489 claims
63.1% text stream storage 92831728 bytes in 541299 claims
3.9% dictionary storage 5776960 bytes in 7830 claims
---- sorting 6416 bytes in 1489 claims
4.8% source text 7200000 bytes in 3 claims
7.3% source text details 10800000 bytes in 2 claims
0.1% documentation fragments 262144 bytes in 1 claim
---- linguistic stock array 81920 bytes in 2 claims
---- small word set array 105600 bytes in 22 claims
3.2% inter symbols storage 4732656 bytes in 28484 claims
11.3% inter bytecode storage 16759144 bytes in 15 claims
3.2% inter symbols storage 4734432 bytes in 28495 claims
11.3% inter bytecode storage 16758344 bytes in 15 claims
4.2% inter links storage 6222976 bytes in 11 claims
0.1% inter tree location list storage 191232 bytes in 32 claims
1.2% instance-of-kind counting 1768900 bytes in 1 claim
---- compilation workspace for objects 22056 bytes in 25 claims
1.2% instance-of-kind counting 1790244 bytes in 1 claim
---- compilation workspace for objects 22216 bytes in 25 claims
---- lists for type-checking invocations 16000 bytes in 1 claim
---- code generation workspace for objects 3536 bytes in 19 claims
0.1% emitter array storage 290176 bytes in 2075 claims
---- code generation workspace for objects 3552 bytes in 19 claims
0.1% emitter array storage 290688 bytes in 2079 claims
-139.-5% was overhead - -205219504 bytes = -200409K = -195 MB
-139.-5% was overhead - -205281376 bytes = -200470K = -195 MB

View file

@ -1,4 +1,4 @@
<s-literal> hits 2131/24704 nti 19 constraint (none) extremes [1, infinity)
<s-literal> hits 2131/24720 nti 19 constraint (none) extremes [1, infinity)
English:
(@1)<cardinal-number>=1
(hits 171/171) (matched: '100') constraint CS = {r0} extremes [1, 1]
@ -16,7 +16,7 @@
(hits 1575/5762) (matched: 'Can be used for objects which are purely
conceptual, like ideas, or are needed for internal book-keeping.') constraint (none) extremes [1, 1]
<s-literal-real-number>=1
(hits 11/10332) (matched: 'plus infinity') constraint (none) extremes [1, infinity)
(hits 11/10340) (matched: 'plus infinity') constraint (none) extremes [1, infinity)
(@1)<s-literal-truth-state>=1
(hits 100/367) (matched: 'false') constraint CS = {13} extremes [1, 1]
<s-literal-list>=1
@ -26,4 +26,4 @@
<s-literal-time>=1
(hits 0/3962) constraint DW = {16, 17, 18} extremes [2, 5]
<s-literal-unit-notation>=1
(hits 0/10221) constraint (none) extremes [1, infinity)
(hits 0/10229) constraint (none) extremes [1, infinity)

View file

@ -781,34 +781,34 @@ ROOT_NT
PROPER_NOUN_NT'blank' {refined} {refers: infs'blank'} {eval: CONSTANT_NT'blank' {kind: room} {instance: I108'blank'} {enumeration: 0}}
RELATIONSHIP_NT'contains' {meaning: is-in} {refined}
AND_NT
PROPER_NOUN_NT {refers: infs415} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I109} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs419} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I109} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs416} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I110} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs420} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I110} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs417} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I111} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs421} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I111} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs418} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I112} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs422} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I112} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs419} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I113} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs423} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I113} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs420} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I114} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs424} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I114} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs421} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I115} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs425} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I115} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs422} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I116} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs426} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I116} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs423} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I117} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs427} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I117} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs424} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I118} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs428} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I118} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs425} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I119} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs429} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I119} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs426} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I120} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs430} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I120} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs427} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I121} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs431} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I121} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs428} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I122} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs429} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I123} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs432} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I122} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs433} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I123} {enumeration: 0}} {created here}
HEADING_NT'section 4 - other players' {heading 5} {under: H5'section 4 - other players'} {unit: 3}
SENTENCE_NT'vanessa is a woman in cold comfort' {unit: 3} {classified}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
@ -842,10 +842,10 @@ ROOT_NT
PROPER_NOUN_NT'lewis' {refined} {refers: infs'lewis'} {eval: CONSTANT_NT'lewis' {kind: man} {instance: I128'lewis'} {enumeration: 0}}
RELATIONSHIP_NT'carries' {meaning: is-carried-by} {refined}
AND_NT
PROPER_NOUN_NT {refers: infs435} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I129} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs439} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I129} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs436} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I130} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs437} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I131} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs440} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I130} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs441} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I131} {enumeration: 0}} {created here}
SENTENCE_NT'lewis carries a book called idiot's guide to dating' {unit: 3} {classified} {interpretation of subject: infs'lewis'}
VERB_NT'carries' {verb 'carry' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'lewis' {refined} {refers: infs'lewis'} {eval: CONSTANT_NT'lewis' {kind: man} {instance: I128'lewis'} {enumeration: 0}}
@ -874,7 +874,7 @@ ROOT_NT
VERB_NT'carries' {verb 'carry' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'gene' {refined} {refers: infs'gene'} {eval: CONSTANT_NT'gene' {kind: man} {instance: I136'gene'} {enumeration: 0}}
RELATIONSHIP_NT'carries' {meaning: is-carried-by} {refined}
PROPER_NOUN_NT {refers: infs443} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I137} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs447} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I137} {enumeration: 0}} {created here}
SENTENCE_NT'gene carries a dvd called casablanca' {unit: 3} {classified} {interpretation of subject: infs'gene'}
VERB_NT'carries' {verb 'carry' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'gene' {refined} {refers: infs'gene'} {eval: CONSTANT_NT'gene' {kind: man} {instance: I136'gene'} {enumeration: 0}}
@ -884,7 +884,7 @@ ROOT_NT
VERB_NT'carries' {verb 'carry' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'gene' {refined} {refers: infs'gene'} {eval: CONSTANT_NT'gene' {kind: man} {instance: I136'gene'} {enumeration: 0}}
RELATIONSHIP_NT'carries' {meaning: is-carried-by} {refined}
PROPER_NOUN_NT {refers: infs445} {eval: CONSTANT_NT {kind: coupon} {instance: I139} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs449} {eval: CONSTANT_NT {kind: coupon} {instance: I139} {enumeration: 0}} {created here}
SENTENCE_NT'rhoda is a woman in marciony street' {unit: 3} {classified} {interpretation of subject: infs'gene'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'rhoda' {refined} {refers: infs'rhoda'} {eval: CONSTANT_NT'rhoda' {kind: object} {instance: I140'rhoda'} {enumeration: 0}} {created here}
@ -917,7 +917,7 @@ ROOT_NT
VERB_NT'carries' {verb 'carry' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'martin' {refined} {refers: infs'martin'} {eval: CONSTANT_NT'martin' {kind: man} {instance: I144'martin'} {enumeration: 0}}
RELATIONSHIP_NT'carries' {meaning: is-carried-by} {refined}
PROPER_NOUN_NT {refers: infs452} {eval: CONSTANT_NT {kind: coupon} {instance: I146} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs456} {eval: CONSTANT_NT {kind: coupon} {instance: I146} {enumeration: 0}} {created here}
SENTENCE_NT'antony is a man in movie rental' {unit: 3} {classified} {interpretation of subject: infs'martin'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'antony' {refined} {refers: infs'antony'} {eval: CONSTANT_NT'antony' {kind: object} {instance: I147'antony'} {enumeration: 0}} {created here}
@ -926,7 +926,7 @@ ROOT_NT
VERB_NT'carries' {verb 'carry' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'antony' {refined} {refers: infs'antony'} {eval: CONSTANT_NT'antony' {kind: man} {instance: I147'antony'} {enumeration: 0}}
RELATIONSHIP_NT'carries' {meaning: is-carried-by} {refined}
PROPER_NOUN_NT {refers: infs454} {eval: CONSTANT_NT {kind: coupon} {instance: I148} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs458} {eval: CONSTANT_NT {kind: coupon} {instance: I148} {enumeration: 0}} {created here}
SENTENCE_NT'antony carries a stamped envelope called a postcard' {unit: 3} {classified} {interpretation of subject: infs'antony'}
VERB_NT'carries' {verb 'carry' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'antony' {refined} {refers: infs'antony'} {eval: CONSTANT_NT'antony' {kind: man} {instance: I147'antony'} {enumeration: 0}}
@ -946,24 +946,24 @@ ROOT_NT
PROPER_NOUN_NT'shelby' {refined} {refers: infs'shelby'} {eval: CONSTANT_NT'shelby' {kind: man} {instance: I150'shelby'} {enumeration: 0}}
RELATIONSHIP_NT'carries' {meaning: is-carried-by} {refined}
AND_NT
PROPER_NOUN_NT {refers: infs458} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I152} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs462} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I152} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs459} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I153} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs463} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I153} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs460} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I154} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs464} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I154} {enumeration: 0}} {created here}
AND_NT
PROPER_NOUN_NT {refers: infs461} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I155} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs462} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I156} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs465} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I155} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs466} {eval: CONSTANT_NT {kind: stamped envelope} {instance: I156} {enumeration: 0}} {created here}
SENTENCE_NT'shelby carries an ice cream cone' {unit: 3} {classified} {interpretation of subject: infs'shelby'}
VERB_NT'carries' {verb 'carry' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'shelby' {refined} {refers: infs'shelby'} {eval: CONSTANT_NT'shelby' {kind: man} {instance: I150'shelby'} {enumeration: 0}}
RELATIONSHIP_NT'carries' {meaning: is-carried-by} {refined}
PROPER_NOUN_NT {refers: infs463} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I157} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs467} {eval: CONSTANT_NT {kind: ice cream cone} {instance: I157} {enumeration: 0}} {created here}
SENTENCE_NT'shelby carries a coupon' {unit: 3} {classified} {interpretation of subject: infs'shelby'}
VERB_NT'carries' {verb 'carry' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'shelby' {refined} {refers: infs'shelby'} {eval: CONSTANT_NT'shelby' {kind: man} {instance: I150'shelby'} {enumeration: 0}}
RELATIONSHIP_NT'carries' {meaning: is-carried-by} {refined}
PROPER_NOUN_NT {refers: infs464} {eval: CONSTANT_NT {kind: coupon} {instance: I158} {enumeration: 0}} {created here}
PROPER_NOUN_NT {refers: infs468} {eval: CONSTANT_NT {kind: coupon} {instance: I158} {enumeration: 0}} {created here}
SENTENCE_NT'christopher is a man in the library' {unit: 3} {classified} {interpretation of subject: infs'shelby'}
VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}
PROPER_NOUN_NT'christopher' {refined} {refers: infs'christopher'} {eval: CONSTANT_NT'christopher' {kind: object} {instance: I159'christopher'} {enumeration: 0}} {created here}

View file

@ -1,28 +1,28 @@
100.0% in inform7 run
67.2% in compilation to Inter
45.8% in //Sequence::undertake_queued_tasks//
67.4% in compilation to Inter
45.5% in //Sequence::undertake_queued_tasks//
4.8% in //MajorNodes::pre_pass//
3.3% in //MajorNodes::pass_1//
1.8% in //ImperativeDefinitions::assess_all//
1.5% in //RTKindConstructors::compile//
1.5% in //RTPhrasebook::compile_entries//
1.4% in //RTKindConstructors::compile//
1.4% in //RTPhrasebook::compile_entries//
1.1% in //Sequence::lint_inter//
0.7% in //ImperativeDefinitions::compile_first_block//
0.3% in //CompletionModule::compile//
0.3% in //ImperativeDefinitions::compile_first_block//
0.3% in //MajorNodes::pass_2//
0.3% in //Sequence::undertake_queued_tasks//
0.3% in //Sequence::undertake_queued_tasks//
0.3% in //World::stage_V//
4.8% not specifically accounted for
5.2% not specifically accounted for
26.6% in running Inter pipeline
8.6% in step 14/15: generate inform6 -> auto.inf
7.1% in step 5/15: load-binary-kits
5.6% in step 6/15: make-synoptic-module
8.8% in step 14/15: generate inform6 -> auto.inf
7.0% in step 5/15: load-binary-kits
5.5% in step 6/15: make-synoptic-module
1.8% 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
1.8% not specifically accounted for
5.2% in supervisor
5.1% in supervisor
0.8% not specifically accounted for

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "Architecture16Kit",
"version": "10.2.0-beta+6X52"
"version": "10.2.0-beta+6X53"
},
"compatibility": "16-bit",
"kit-details": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "Architecture32Kit",
"version": "10.2.0-beta+6X52"
"version": "10.2.0-beta+6X53"
},
"compatibility": "32-bit",
"kit-details": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "BasicInformKit",
"version": "10.2.0-beta+6X52"
"version": "10.2.0-beta+6X53"
},
"needs": [ {
"need": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "CommandParserKit",
"version": "10.2.0-beta+6X52"
"version": "10.2.0-beta+6X53"
},
"needs": [ {
"need": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "EnglishLanguageKit",
"version": "10.2.0-beta+6X52"
"version": "10.2.0-beta+6X53"
},
"needs": [ {
"need": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "WorldModelKit",
"version": "10.2.0-beta+6X52"
"version": "10.2.0-beta+6X53"
},
"needs": [ {
"need": {

View file

@ -1,41 +0,0 @@
Stanford
LIST FORMATION TEST.
Figures: {Figure of cover, Figure of Woodlands}
Sounds: {Sound of rustling leaves}
External files: {File of Glaciers}
Times: {12:00 am, 12:01 am, 12:02 am, 12:03 am, 12:04 am, 12:05 am, 12:06 am, 12:07 am, 12:08 am, 12:09 am, 12:10 am, 12:11 am, 12:12 am, 12:13 am, 12:14 am, 12:15 am, 12:16 am, 12:17 am, 12:18 am, 12:19 am, 12:20 am, 12:21 am, 12:22 am, 12:23 am, 12:24 am, 12:25 am, 12:26 am, 12:27 am, 12:28 am, 12:29 am, 12:30 am, 12:31 am, 12:32 am, 12:33 am, 12:34 am, 12:35 am, 12:36 am, 12:37 am, 12:38 am, 12:39 am, 12:40 am, 12:41 am, 12:42 am, 12:43 am, 12:44 am, 12:45 am, 12:46 am, 12:47 am, 12:48 am, 12:49 am, 12:50 am, 12:51 am, 12:52 am, 12:53 am, 12:54 am, 12:55 am, 12:56 am, 12:57 am, 12:58 am, 12:59 am, 1:00 am, 1:01 am, 1:02 am, 1:03 am, 1:04 am, 1:05 am, 1:06 am, 1:07 am, 1:08 am, 1:09 am, 1:10 am, 1:11 am, 1:12 am, 1:13 am, 1:14 am, 1:15 am, 1:16 am, 1:17 am, 1:18 am, 1:19 am, 1:20 am, 1:21 am, 1:22 am, 1:23 am, 1:24 am, 1:25 am, 1:26 am, 1:27 am, 1:28 am, 1:29 am, 1:30 am, 1:31 am, 1:32 am, 1:33 am, 1:34 am, 1:35 am, 1:36 am, 1:37 am, 1:38 am, 1:39 am, 1:40 am, 1:41 am, 1:42 am, 1:43
am, 1:44 am, 1:45 am, 1:46 am, 1:47 am, 1:48 am, 1:49 am, 1:50 am, 1:51 am, 1:52 am, 1:53 am, 1:54 am, 1:55 am, 1:56 am, 1:57 am, 1:58 am, 1:59 am, 2:00 am, 2:01 am, 2:02 am, 2:03 am, 2:04 am, 2:05 am, 2:06 am, 2:07 am, 2:08 am, 2:09 am, 2:10 am, 2:11 am, 2:12 am, 2:13 am, 2:14 am, 2:15 am, 2:16 am, 2:17 am, 2:18 am, 2:19 am, 2:20 am, 2:21 am, 2:22 am, 2:23 am, 2:24 am, 2:25 am, 2:26 am, 2:27 am, 2:28 am, 2:29 am, 2:30 am, 2:31 am, 2:32 am, 2:33 am, 2:34 am, 2:35 am, 2:36 am, 2:37 am, 2:38 am, 2:39 am, 2:40 am, 2:41 am, 2:42 am, 2:43 am, 2:44 am, 2:45 am, 2:46 am, 2:47 am, 2:48 am, 2:49 am, 2:50 am, 2:51 am, 2:52 am, 2:53 am, 2:54 am, 2:55 am, 2:56 am, 2:57 am, 2:58 am, 2:59 am, 3:00 am, 3:01 am, 3:02 am, 3:03 am, 3:04 am, 3:05 am, 3:06 am, 3:07 am, 3:08 am, 3:09 am, 3:10 am, 3:11 am, 3:12 am, 3:13 am, 3:14 am, 3:15 am, 3:16 am, 3:17 am, 3:18 am, 3:19 am, 3:20 am, 3:21 am, 3:22 am, 3:23 am, 3:24 am, 3:25 am, 3:26 am, 3:27 am, 3:28 am, 3:29 am, 3:30 am, 3:31 am, 3:32 am, 3:33 am, 3:34
am, 3:35 am, 3:36 am, 3:37 am, 3:38 am, 3:39 am, 3:40 am, 3:41 am, 3:42 am, 3:43 am, 3:44 am, 3:45 am, 3:46 am, 3:47 am, 3:48 am, 3:49 am, 3:50 am, 3:51 am, 3:52 am, 3:53 am, 3:54 am, 3:55 am, 3:56 am, 3:57 am, 3:58 am, 3:59 am, 4:00 am, 4:01 am, 4:02 am, 4:03 am, 4:04 am, 4:05 am, 4:06 am, 4:07 am, 4:08 am, 4:09 am, 4:10 am, 4:11 am, 4:12 am, 4:13 am, 4:14 am, 4:15 am, 4:16 am, 4:17 am, 4:18 am, 4:19 am, 4:20 am, 4:21 am, 4:22 am, 4:23 am, 4:24 am, 4:25 am, 4:26 am, 4:27 am, 4:28 am, 4:29 am, 4:30 am, 4:31 am, 4:32 am, 4:33 am, 4:34 am, 4:35 am, 4:36 am, 4:37 am, 4:38 am, 4:39 am, 4:40 am, 4:41 am, 4:42 am, 4:43 am, 4:44 am, 4:45 am, 4:46 am, 4:47 am, 4:48 am, 4:49 am, 4:50 am, 4:51 am, 4:52 am, 4:53 am, 4:54 am, 4:55 am, 4:56 am, 4:57 am, 4:58 am, 4:59 am, 5:00 am, 5:01 am, 5:02 am, 5:03 am, 5:04 am, 5:05 am, 5:06 am, 5:07 am, 5:08 am, 5:09 am, 5:10 am, 5:11 am, 5:12 am, 5:13 am, 5:14 am, 5:15 am, 5:16 am, 5:17 am, 5:18 am, 5:19 am, 5:20 am, 5:21 am, 5:22 am, 5:23 am, 5:24 am, 5:25
am, 5:26 am, 5:27 am, 5:28 am, 5:29 am, 5:30 am, 5:31 am, 5:32 am, 5:33 am, 5:34 am, 5:35 am, 5:36 am, 5:37 am, 5:38 am, 5:39 am, 5:40 am, 5:41 am, 5:42 am, 5:43 am, 5:44 am, 5:45 am, 5:46 am, 5:47 am, 5:48 am, 5:49 am, 5:50 am, 5:51 am, 5:52 am, 5:53 am, 5:54 am, 5:55 am, 5:56 am, 5:57 am, 5:58 am, 5:59 am, 6:00 am, 6:01 am, 6:02 am, 6:03 am, 6:04 am, 6:05 am, 6:06 am, 6:07 am, 6:08 am, 6:09 am, 6:10 am, 6:11 am, 6:12 am, 6:13 am, 6:14 am, 6:15 am, 6:16 am, 6:17 am, 6:18 am, 6:19 am, 6:20 am, 6:21 am, 6:22 am, 6:23 am, 6:24 am, 6:25 am, 6:26 am, 6:27 am, 6:28 am, 6:29 am, 6:30 am, 6:31 am, 6:32 am, 6:33 am, 6:34 am, 6:35 am, 6:36 am, 6:37 am, 6:38 am, 6:39 am, 6:40 am, 6:41 am, 6:42 am, 6:43 am, 6:44 am, 6:45 am, 6:46 am, 6:47 am, 6:48 am, 6:49 am, 6:50 am, 6:51 am, 6:52 am, 6:53 am, 6:54 am, 6:55 am, 6:56 am, 6:57 am, 6:58 am, 6:59 am, 7:00 am, 7:01 am, 7:02 am, 7:03 am, 7:04 am, 7:05 am, 7:06 am, 7:07 am, 7:08 am, 7:09 am, 7:10 am, 7:11 am, 7:12 am, 7:13 am, 7:14 am, 7:15 am, 7:16
am, 7:17 am, 7:18 am, 7:19 am, 7:20 am, 7:21 am, 7:22 am, 7:23 am, 7:24 am, 7:25 am, 7:26 am, 7:27 am, 7:28 am, 7:29 am, 7:30 am, 7:31 am, 7:32 am, 7:33 am, 7:34 am, 7:35 am, 7:36 am, 7:37 am, 7:38 am, 7:39 am, 7:40 am, 7:41 am, 7:42 am, 7:43 am, 7:44 am, 7:45 am, 7:46 am, 7:47 am, 7:48 am, 7:49 am, 7:50 am, 7:51 am, 7:52 am, 7:53 am, 7:54 am, 7:55 am, 7:56 am, 7:57 am, 7:58 am, 7:59 am, 8:00 am, 8:01 am, 8:02 am, 8:03 am, 8:04 am, 8:05 am, 8:06 am, 8:07 am, 8:08 am, 8:09 am, 8:10 am, 8:11 am, 8:12 am, 8:13 am, 8:14 am, 8:15 am, 8:16 am, 8:17 am, 8:18 am, 8:19 am, 8:20 am, 8:21 am, 8:22 am, 8:23 am, 8:24 am, 8:25 am, 8:26 am, 8:27 am, 8:28 am, 8:29 am, 8:30 am, 8:31 am, 8:32 am, 8:33 am, 8:34 am, 8:35 am, 8:36 am, 8:37 am, 8:38 am, 8:39 am, 8:40 am, 8:41 am, 8:42 am, 8:43 am, 8:44 am, 8:45 am, 8:46 am, 8:47 am, 8:48 am, 8:49 am, 8:50 am, 8:51 am, 8:52 am, 8:53 am, 8:54 am, 8:55 am, 8:56 am, 8:57 am, 8:58 am, 8:59 am, 9:00 am, 9:01 am, 9:02 am, 9:03 am, 9:04 am, 9:05 am, 9:06 am, 9:07
am, 9:08 am, 9:09 am, 9:10 am, 9:11 am, 9:12 am, 9:13 am, 9:14 am, 9:15 am, 9:16 am, 9:17 am, 9:18 am, 9:19 am, 9:20 am, 9:21 am, 9:22 am, 9:23 am, 9:24 am, 9:25 am, 9:26 am, 9:27 am, 9:28 am, 9:29 am, 9:30 am, 9:31 am, 9:32 am, 9:33 am, 9:34 am, 9:35 am, 9:36 am, 9:37 am, 9:38 am, 9:39 am, 9:40 am, 9:41 am, 9:42 am, 9:43 am, 9:44 am, 9:45 am, 9:46 am, 9:47 am, 9:48 am, 9:49 am, 9:50 am, 9:51 am, 9:52 am, 9:53 am, 9:54 am, 9:55 am, 9:56 am, 9:57 am, 9:58 am, 9:59 am, 10:00 am, 10:01 am, 10:02 am, 10:03 am, 10:04 am, 10:05 am, 10:06 am, 10:07 am, 10:08 am, 10:09 am, 10:10 am, 10:11 am, 10:12 am, 10:13 am, 10:14 am, 10:15 am, 10:16 am, 10:17 am, 10:18 am, 10:19 am, 10:20 am, 10:21 am, 10:22 am, 10:23 am, 10:24 am, 10:25 am, 10:26 am, 10:27 am, 10:28 am, 10:29 am, 10:30 am, 10:31 am, 10:32 am, 10:33 am, 10:34 am, 10:35 am, 10:36 am, 10:37 am, 10:38 am, 10:39 am, 10:40 am, 10:41 am, 10:42 am, 10:43 am, 10:44 am, 10:45 am, 10:46 am, 10:47 am, 10:48 am, 10:49 am, 10:50 am, 10:51 am, 10:52
am, 10:53 am, 10:54 am, 10:55 am, 10:56 am, 10:57 am, 10:58 am, 10:59 am, 11:00 am, 11:01 am, 11:02 am, 11:03 am, 11:04 am, 11:05 am, 11:06 am, 11:07 am, 11:08 am, 11:09 am, 11:10 am, 11:11 am, 11:12 am, 11:13 am, 11:14 am, 11:15 am, 11:16 am, 11:17 am, 11:18 am, 11:19 am, 11:20 am, 11:21 am, 11:22 am, 11:23 am, 11:24 am, 11:25 am, 11:26 am, 11:27 am, 11:28 am, 11:29 am, 11:30 am, 11:31 am, 11:32 am, 11:33 am, 11:34 am, 11:35 am, 11:36 am, 11:37 am, 11:38 am, 11:39 am, 11:40 am, 11:41 am, 11:42 am, 11:43 am, 11:44 am, 11:45 am, 11:46 am, 11:47 am, 11:48 am, 11:49 am, 11:50 am, 11:51 am, 11:52 am, 11:53 am, 11:54 am, 11:55 am, 11:56 am, 11:57 am, 11:58 am, 11:59 am, 12:00 pm, 12:01 pm, 12:02 pm, 12:03 pm, 12:04 pm, 12:05 pm, 12:06 pm, 12:07 pm, 12:08 pm, 12:09 pm, 12:10 pm, 12:11 pm, 12:12 pm, 12:13 pm, 12:14 pm, 12:15 pm, 12:16 pm, 12:17 pm, 12:18 pm, 12:19 pm, 12:20 pm, 12:21 pm, 12:22 pm, 12:23 pm, 12:24 pm, 12:25 pm, 12:26 pm, 12:27 pm, 12:28 pm, 12:29 pm, 12:30 pm, 12:31 pm, 12:32
pm, 12:33 pm, 12:34 pm, 12:35 pm, 12:36 pm, 12:37 pm, 12:38 pm, 12:39 pm, 12:40 pm, 12:41 pm, 12:42 pm, 12:43 pm, 12:44 pm, 12:45 pm, 12:46 pm, 12:47 pm, 12:48 pm, 12:49 pm, 12:50 pm, 12:51 pm, 12:52 pm, 12:53 pm, 12:54 pm, 12:55 pm, 12:56 pm, 12:57 pm, 12:58 pm, 12:59 pm, 1:00 pm, 1:01 pm, 1:02 pm, 1:03 pm, 1:04 pm, 1:05 pm, 1:06 pm, 1:07 pm, 1:08 pm, 1:09 pm, 1:10 pm, 1:11 pm, 1:12 pm, 1:13 pm, 1:14 pm, 1:15 pm, 1:16 pm, 1:17 pm, 1:18 pm, 1:19 pm, 1:20 pm, 1:21 pm, 1:22 pm, 1:23 pm, 1:24 pm, 1:25 pm, 1:26 pm, 1:27 pm, 1:28 pm, 1:29 pm, 1:30 pm, 1:31 pm, 1:32 pm, 1:33 pm, 1:34 pm, 1:35 pm, 1:36 pm, 1:37 pm, 1:38 pm, 1:39 pm, 1:40 pm, 1:41 pm, 1:42 pm, 1:43 pm, 1:44 pm, 1:45 pm, 1:46 pm, 1:47 pm, 1:48 pm, 1:49 pm, 1:50 pm, 1:51 pm, 1:52 pm, 1:53 pm, 1:54 pm, 1:55 pm, 1:56 pm, 1:57 pm, 1:58 pm, 1:59 pm, 2:00 pm, 2:01 pm, 2:02 pm, 2:03 pm, 2:04 pm, 2:05 pm, 2:06 pm, 2:07 pm, 2:08 pm, 2:09 pm, 2:10 pm, 2:11 pm, 2:12 pm, 2:13 pm, 2:14 pm, 2:15 pm, 2:16 pm, 2:17 pm, 2:18 pm, 2:19 pm, 2:20
pm, 2:21 pm, 2:22 pm, 2:23 pm, 2:24 pm, 2:25 pm, 2:26 pm, 2:27 pm, 2:28 pm, 2:29 pm, 2:30 pm, 2:31 pm, 2:32 pm, 2:33 pm, 2:34 pm, 2:35 pm, 2:36 pm, 2:37 pm, 2:38 pm, 2:39 pm, 2:40 pm, 2:41 pm, 2:42 pm, 2:43 pm, 2:44 pm, 2:45 pm, 2:46 pm, 2:47 pm, 2:48 pm, 2:49 pm, 2:50 pm, 2:51 pm, 2:52 pm, 2:53 pm, 2:54 pm, 2:55 pm, 2:56 pm, 2:57 pm, 2:58 pm, 2:59 pm, 3:00 pm, 3:01 pm, 3:02 pm, 3:03 pm, 3:04 pm, 3:05 pm, 3:06 pm, 3:07 pm, 3:08 pm, 3:09 pm, 3:10 pm, 3:11 pm, 3:12 pm, 3:13 pm, 3:14 pm, 3:15 pm, 3:16 pm, 3:17 pm, 3:18 pm, 3:19 pm, 3:20 pm, 3:21 pm, 3:22 pm, 3:23 pm, 3:24 pm, 3:25 pm, 3:26 pm, 3:27 pm, 3:28 pm, 3:29 pm, 3:30 pm, 3:31 pm, 3:32 pm, 3:33 pm, 3:34 pm, 3:35 pm, 3:36 pm, 3:37 pm, 3:38 pm, 3:39 pm, 3:40 pm, 3:41 pm, 3:42 pm, 3:43 pm, 3:44 pm, 3:45 pm, 3:46 pm, 3:47 pm, 3:48 pm, 3:49 pm, 3:50 pm, 3:51 pm, 3:52 pm, 3:53 pm, 3:54 pm, 3:55 pm, 3:56 pm, 3:57 pm, 3:58 pm, 3:59 pm, 4:00 pm, 4:01 pm, 4:02 pm, 4:03 pm, 4:04 pm, 4:05 pm, 4:06 pm, 4:07 pm, 4:08 pm, 4:09 pm, 4:10 pm, 4:11
pm, 4:12 pm, 4:13 pm, 4:14 pm, 4:15 pm, 4:16 pm, 4:17 pm, 4:18 pm, 4:19 pm, 4:20 pm, 4:21 pm, 4:22 pm, 4:23 pm, 4:24 pm, 4:25 pm, 4:26 pm, 4:27 pm, 4:28 pm, 4:29 pm, 4:30 pm, 4:31 pm, 4:32 pm, 4:33 pm, 4:34 pm, 4:35 pm, 4:36 pm, 4:37 pm, 4:38 pm, 4:39 pm, 4:40 pm, 4:41 pm, 4:42 pm, 4:43 pm, 4:44 pm, 4:45 pm, 4:46 pm, 4:47 pm, 4:48 pm, 4:49 pm, 4:50 pm, 4:51 pm, 4:52 pm, 4:53 pm, 4:54 pm, 4:55 pm, 4:56 pm, 4:57 pm, 4:58 pm, 4:59 pm, 5:00 pm, 5:01 pm, 5:02 pm, 5:03 pm, 5:04 pm, 5:05 pm, 5:06 pm, 5:07 pm, 5:08 pm, 5:09 pm, 5:10 pm, 5:11 pm, 5:12 pm, 5:13 pm, 5:14 pm, 5:15 pm, 5:16 pm, 5:17 pm, 5:18 pm, 5:19 pm, 5:20 pm, 5:21 pm, 5:22 pm, 5:23 pm, 5:24 pm, 5:25 pm, 5:26 pm, 5:27 pm, 5:28 pm, 5:29 pm, 5:30 pm, 5:31 pm, 5:32 pm, 5:33 pm, 5:34 pm, 5:35 pm, 5:36 pm, 5:37 pm, 5:38 pm, 5:39 pm, 5:40 pm, 5:41 pm, 5:42 pm, 5:43 pm, 5:44 pm, 5:45 pm, 5:46 pm, 5:47 pm, 5:48 pm, 5:49 pm, 5:50 pm, 5:51 pm, 5:52 pm, 5:53 pm, 5:54 pm, 5:55 pm, 5:56 pm, 5:57 pm, 5:58 pm, 5:59 pm, 6:00 pm, 6:01 pm, 6:02
pm, 6:03 pm, 6:04 pm, 6:05 pm, 6:06 pm, 6:07 pm, 6:08 pm, 6:09 pm, 6:10 pm, 6:11 pm, 6:12 pm, 6:13 pm, 6:14 pm, 6:15 pm, 6:16 pm, 6:17 pm, 6:18 pm, 6:19 pm, 6:20 pm, 6:21 pm, 6:22 pm, 6:23 pm, 6:24 pm, 6:25 pm, 6:26 pm, 6:27 pm, 6:28 pm, 6:29 pm, 6:30 pm, 6:31 pm, 6:32 pm, 6:33 pm, 6:34 pm, 6:35 pm, 6:36 pm, 6:37 pm, 6:38 pm, 6:39 pm, 6:40 pm, 6:41 pm, 6:42 pm, 6:43 pm, 6:44 pm, 6:45 pm, 6:46 pm, 6:47 pm, 6:48 pm, 6:49 pm, 6:50 pm, 6:51 pm, 6:52 pm, 6:53 pm, 6:54 pm, 6:55 pm, 6:56 pm, 6:57 pm, 6:58 pm, 6:59 pm, 7:00 pm, 7:01 pm, 7:02 pm, 7:03 pm, 7:04 pm, 7:05 pm, 7:06 pm, 7:07 pm, 7:08 pm, 7:09 pm, 7:10 pm, 7:11 pm, 7:12 pm, 7:13 pm, 7:14 pm, 7:15 pm, 7:16 pm, 7:17 pm, 7:18 pm, 7:19 pm, 7:20 pm, 7:21 pm, 7:22 pm, 7:23 pm, 7:24 pm, 7:25 pm, 7:26 pm, 7:27 pm, 7:28 pm, 7:29 pm, 7:30 pm, 7:31 pm, 7:32 pm, 7:33 pm, 7:34 pm, 7:35 pm, 7:36 pm, 7:37 pm, 7:38 pm, 7:39 pm, 7:40 pm, 7:41 pm, 7:42 pm, 7:43 pm, 7:44 pm, 7:45 pm, 7:46 pm, 7:47 pm, 7:48 pm, 7:49 pm, 7:50 pm, 7:51 pm, 7:52 pm, 7:53
pm, 7:54 pm, 7:55 pm, 7:56 pm, 7:57 pm, 7:58 pm, 7:59 pm, 8:00 pm, 8:01 pm, 8:02 pm, 8:03 pm, 8:04 pm, 8:05 pm, 8:06 pm, 8:07 pm, 8:08 pm, 8:09 pm, 8:10 pm, 8:11 pm, 8:12 pm, 8:13 pm, 8:14 pm, 8:15 pm, 8:16 pm, 8:17 pm, 8:18 pm, 8:19 pm, 8:20 pm, 8:21 pm, 8:22 pm, 8:23 pm, 8:24 pm, 8:25 pm, 8:26 pm, 8:27 pm, 8:28 pm, 8:29 pm, 8:30 pm, 8:31 pm, 8:32 pm, 8:33 pm, 8:34 pm, 8:35 pm, 8:36 pm, 8:37 pm, 8:38 pm, 8:39 pm, 8:40 pm, 8:41 pm, 8:42 pm, 8:43 pm, 8:44 pm, 8:45 pm, 8:46 pm, 8:47 pm, 8:48 pm, 8:49 pm, 8:50 pm, 8:51 pm, 8:52 pm, 8:53 pm, 8:54 pm, 8:55 pm, 8:56 pm, 8:57 pm, 8:58 pm, 8:59 pm, 9:00 pm, 9:01 pm, 9:02 pm, 9:03 pm, 9:04 pm, 9:05 pm, 9:06 pm, 9:07 pm, 9:08 pm, 9:09 pm, 9:10 pm, 9:11 pm, 9:12 pm, 9:13 pm, 9:14 pm, 9:15 pm, 9:16 pm, 9:17 pm, 9:18 pm, 9:19 pm, 9:20 pm, 9:21 pm, 9:22 pm, 9:23 pm, 9:24 pm, 9:25 pm, 9:26 pm, 9:27 pm, 9:28 pm, 9:29 pm, 9:30 pm, 9:31 pm, 9:32 pm, 9:33 pm, 9:34 pm, 9:35 pm, 9:36 pm, 9:37 pm, 9:38 pm, 9:39 pm, 9:40 pm, 9:41 pm, 9:42 pm, 9:43 pm, 9:44
pm, 9:45 pm, 9:46 pm, 9:47 pm, 9:48 pm, 9:49 pm, 9:50 pm, 9:51 pm, 9:52 pm, 9:53 pm, 9:54 pm, 9:55 pm, 9:56 pm, 9:57 pm, 9:58 pm, 9:59 pm, 10:00 pm, 10:01 pm, 10:02 pm, 10:03 pm, 10:04 pm, 10:05 pm, 10:06 pm, 10:07 pm, 10:08 pm, 10:09 pm, 10:10 pm, 10:11 pm, 10:12 pm, 10:13 pm, 10:14 pm, 10:15 pm, 10:16 pm, 10:17 pm, 10:18 pm, 10:19 pm, 10:20 pm, 10:21 pm, 10:22 pm, 10:23 pm, 10:24 pm, 10:25 pm, 10:26 pm, 10:27 pm, 10:28 pm, 10:29 pm, 10:30 pm, 10:31 pm, 10:32 pm, 10:33 pm, 10:34 pm, 10:35 pm, 10:36 pm, 10:37 pm, 10:38 pm, 10:39 pm, 10:40 pm, 10:41 pm, 10:42 pm, 10:43 pm, 10:44 pm, 10:45 pm, 10:46 pm, 10:47 pm, 10:48 pm, 10:49 pm, 10:50 pm, 10:51 pm, 10:52 pm, 10:53 pm, 10:54 pm, 10:55 pm, 10:56 pm, 10:57 pm, 10:58 pm, 10:59 pm, 11:00 pm, 11:01 pm, 11:02 pm, 11:03 pm, 11:04 pm, 11:05 pm, 11:06 pm, 11:07 pm, 11:08 pm, 11:09 pm, 11:10 pm, 11:11 pm, 11:12 pm, 11:13 pm, 11:14 pm, 11:15 pm, 11:16 pm, 11:17 pm, 11:18 pm, 11:19 pm, 11:20 pm, 11:21 pm, 11:22 pm, 11:23 pm, 11:24 pm, 11:25 pm,
11:26 pm, 11:27 pm, 11:28 pm, 11:29 pm, 11:30 pm, 11:31 pm, 11:32 pm, 11:33 pm, 11:34 pm, 11:35 pm, 11:36 pm, 11:37 pm, 11:38 pm, 11:39 pm, 11:40 pm, 11:41 pm, 11:42 pm, 11:43 pm, 11:44 pm, 11:45 pm, 11:46 pm, 11:47 pm, 11:48 pm, 11:49 pm, 11:50 pm, 11:51 pm, 11:52 pm, 11:53 pm, 11:54 pm, 11:55 pm, 11:56 pm, 11:57 pm, 11:58 pm, 11:59 pm}
Tables: {(the empty table), Table of Final Question Options, Table of Locale Priorities}
Truth states: {false, true}
Colours: {red, blue, green}
{Entire Game, LSD Experience, Bach Cantata Concert} are the scenes.
{Entire Game, Bach Cantata Concert} are the good scenes.
{LSD Experience} are the bad scenes.
Welcome
An Interactive Fiction
Release 1 / Serial number 150512 / Inform 7 build 6M22 (I6/v6.33 lib 6/12N) SD
Stanford
> > Stanford
> Are you sure you want to quit?

File diff suppressed because one or more lines are too long

View file

@ -1,5 +1,5 @@
Test: ValueDomainList
For: Z-Machine
Test: ValueDomainList-G
For: Glulx
Stanford is a room.

View file

@ -72,6 +72,38 @@
<span class="librarycardother"><span class="typewritten"><b>None</b></span></span>
</td>
</tr>
<tr>
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="librarycardother"><span class="typewritten">Licence</span></span>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
<span class="librarycardother"><span class="typewritten"><b>Unspecified</b></span></span>
</td>
</tr>
<tr>
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="librarycardother"><span class="typewritten">Copyright</span></span>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
<span class="librarycardother"><span class="typewritten"><b>2016</b></span></span>
</td>
</tr>
<tr>
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="librarycardother"><span class="typewritten">Origin URL</span></span>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
<span class="librarycardother"><span class="typewritten"><b></b></span></span>
</td>
</tr>
<tr>
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="librarycardother"><span class="typewritten">Rights history</span></span>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
<span class="librarycardother"><span class="typewritten"><b></b></span></span>
</td>
</tr>
</table>
</p>

View file

@ -80,6 +80,38 @@
<span class="librarycardother"><span class="typewritten"><b>In Miss Austen's new interactive novella, Miss Henrietta Pollifax is adopted by the tempestuous landowner Sir Tankerley Mordant, and must make a new life for herself on the rugged moors.</b></span></span>
</td>
</tr>
<tr>
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="librarycardother"><span class="typewritten">Licence</span></span>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
<span class="librarycardother"><span class="typewritten"><b>Unspecified</b></span></span>
</td>
</tr>
<tr>
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="librarycardother"><span class="typewritten">Copyright</span></span>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
<span class="librarycardother"><span class="typewritten"><b>2016</b></span></span>
</td>
</tr>
<tr>
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="librarycardother"><span class="typewritten">Origin URL</span></span>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
<span class="librarycardother"><span class="typewritten"><b></b></span></span>
</td>
</tr>
<tr>
<td style="white-space:nowrap;" align="left" valign="top" height="20">
<span class="librarycardother"><span class="typewritten">Rights history</span></span>&nbsp;&nbsp;&nbsp;&nbsp;
</td>
<td align="left" valign="top">
<span class="librarycardother"><span class="typewritten"><b></b></span></span>
</td>
</tr>
</table>
</p>

View file

@ -0,0 +1,10 @@
Inform 7 v10.2.0 has started.
I've now read your source text, which is 10 words long.
I've also read version 2 of Basic Inform by Graham Nelson, which is 8488 words long.
I've also read version 2 of English Language by Graham Nelson, which is 2330 words long.
I've also read version 7 of Standard Rules by Graham Nelson, which is 35135 words long.
Problem__ PM_BadOriginURL
>--> You wrote 'The origin URL for this story is "Emily's Home Page"' (source
text, line 1): but tries to give an invalid origin URL, which must begin
'http://' or 'https://'.
Inform 7 has finished.

View file

@ -0,0 +1,3 @@
Problem: PM_BadOriginURL
The origin URL for this story is "Emily's Home Page".

View file

@ -0,0 +1,10 @@
Inform 7 v10.2.0 has started.
I've now read your source text, which is 9 words long.
I've also read version 2 of Basic Inform by Graham Nelson, which is 8488 words long.
I've also read version 2 of English Language by Graham Nelson, which is 2330 words long.
I've also read version 7 of Standard Rules by Graham Nelson, which is 35135 words long.
Problem__ PM_BadRevisionDate
>--> You wrote 'The copyright for this story is "Emily Short 1997-1980"' (source
text, line 1): but has a revision date which is too early, since it should
be later than the first copyright date.
Inform 7 has finished.

View file

@ -0,0 +1,3 @@
Problem: PM_BadRevisionDate
The copyright for this story is "Emily Short 1997-1980".

View file

@ -0,0 +1,12 @@
Inform 7 v10.2.0 has started.
I've now read your source text, which is 10 words long.
I've also read version 2 of Basic Inform by Graham Nelson, which is 8488 words long.
I've also read version 2 of English Language by Graham Nelson, which is 2330 words long.
I've also read version 7 of Standard Rules by Graham Nelson, which is 35135 words long.
Problem__ PM_CopyrightSaysCopyright
>--> You wrote 'The copyright for this story is "(c) Emily Short 1983"' (source
text, line 1): but contains the word 'copyright' or a symbol or
abbreviation to that effect, which it shouldn't, because Inform adds that
automatically. So '"Emily Short 2024"' is allowed, but not '"(c) Emily
Short 2024"'.
Inform 7 has finished.

View file

@ -0,0 +1,3 @@
Problem: PM_CopyrightSaysCopyright
The copyright for this story is "(c) Emily Short 1983".

View file

@ -0,0 +1,10 @@
Inform 7 v10.2.0 has started.
I've now read your source text, which is 7 words long.
I've also read version 2 of Basic Inform by Graham Nelson, which is 8488 words long.
I've also read version 2 of English Language by Graham Nelson, which is 2330 words long.
I've also read version 7 of Standard Rules by Graham Nelson, which is 35135 words long.
Problem__ PM_DeprecatedLicence
>--> You wrote 'The licence for this story is "GPL-1.0"' (source text, line 1):
but tries to use a licence which is now deprecated, according to the SPDX
standard catalogue of licence IDs. (See spdx.org.)
Inform 7 has finished.

View file

@ -0,0 +1,3 @@
Problem: PM_DeprecatedLicence
The licence for this story is "GPL-1.0".

View file

@ -1,8 +1,8 @@
Inform 7 v10.2.0 has started.
I've now read your source text, which is 82 words long.
I've also read Basic Inform by Graham Nelson, which is 7719 words long.
I've also read English Language by Graham Nelson, which is 2330 words long.
I've also read Standard Rules by Graham Nelson, which is 33683 words long.
I've also read version 2 of Basic Inform by Graham Nelson, which is 8488 words long.
I've also read version 2 of English Language by Graham Nelson, which is 2330 words long.
I've also read version 7 of Standard Rules by Graham Nelson, which is 35135 words long.
Problem__ PM_DuplicateVerbs1
>--> You wrote 'The verb to frob (he frobs, they frob, he frobbed, it is
frobbed, he is frobbing) implies the mopping relation' (source text, line 13),
@ -13,6 +13,6 @@ Problem__ PM_DuplicateVerbs1
Problem__ PM_DuplicateVerbs1
>--> You wrote 'The verb to be means the enclosure relation' (source text, line 16),
but in another sentence 'The verb to be means the equality relation' (Basic
Inform, line 24): again, this gives us two definitions of what appears to
Inform, line 25): again, this gives us two definitions of what appears to
be the same verb.
Inform 7 has finished.

View file

@ -0,0 +1,10 @@
Inform 7 v10.2.0 has started.
I've now read your source text, which is 9 words long.
I've also read version 2 of Basic Inform by Graham Nelson, which is 8488 words long.
I've also read version 2 of English Language by Graham Nelson, which is 2330 words long.
I've also read version 7 of Standard Rules by Graham Nelson, which is 35135 words long.
Problem__ PM_EarlyCopyrightDate
>--> You wrote 'The copyright for this story is "Emily Short 1967"' (source
text, line 1): but has too early a copyright date, which should be at least
1971.
Inform 7 has finished.

View file

@ -0,0 +1,3 @@
Problem: PM_EarlyCopyrightDate
The copyright for this story is "Emily Short 1967".

View file

@ -0,0 +1,11 @@
Inform 7 v10.2.0 has started.
I've now read your source text, which is 9 words long.
I've also read version 2 of Basic Inform by Graham Nelson, which is 8488 words long.
I've also read version 2 of English Language by Graham Nelson, which is 2330 words long.
I've also read version 7 of Standard Rules by Graham Nelson, which is 35135 words long.
Problem__ PM_ExtensionLicenceOutsideExtensions
>--> You wrote 'The copyright for this extension is "Emily Short 2024"' (source
text, line 1): but tries to set the licence for an extension but the main
source text, which is not allowed - an extension's licence must be set in
the extension itself.
Inform 7 has finished.

View file

@ -0,0 +1,3 @@
Problem: PM_ExtensionLicenceOutsideExtensions
The copyright for this extension is "Emily Short 2024".

View file

@ -1,10 +1,10 @@
Inform 7 v10.2.0 has started.
I've now read your source text, which is 22 words long.
I've also read version 2 of Basic Inform by Graham Nelson, which is 8479 words long.
I've also read version 2 of Basic Inform by Graham Nelson, which is 8488 words long.
I've also read version 2 of English Language by Graham Nelson, which is 2330 words long.
I've also read version 7 of Standard Rules by Graham Nelson, which is 35059 words long.
I've also read version 7 of Standard Rules by Graham Nelson, which is 35135 words long.
Problem__ PM_GrammarIllFounded
>--> You wrote 'Understand "right [spladge]" as "[splodge]"' (source text, line 4):
>--> You wrote 'Understand "left [splodge]" as "[spladge]"' (source text, line 3):
but grammar tokens are not allowed to be defined in terms of themselves,
either directly or indirectly.
Inform 7 has finished.

View file

@ -0,0 +1,10 @@
Inform 7 v10.2.0 has started.
I've now read your source text, which is 9 words long.
I've also read version 2 of Basic Inform by Graham Nelson, which is 8488 words long.
I've also read version 2 of English Language by Graham Nelson, which is 2330 words long.
I've also read version 7 of Standard Rules by Graham Nelson, which is 35135 words long.
Problem__ PM_LicenceDetailUnknown
>--> You wrote 'The jurisdiction for this story is "Turks and Caicos"' (source
text, line 1): but sets an unknown licencing detail, and should declare
'licence', 'copyright', 'origin URL' or 'rights history'.
Inform 7 has finished.

View file

@ -0,0 +1,3 @@
Problem: PM_LicenceDetailUnknown
The jurisdiction for this story is "Turks and Caicos".

View file

@ -0,0 +1,14 @@
Inform 7 v10.2.0 has started.
I've now read your source text, which is 7 words long.
I've also read version 2 of Basic Inform by Graham Nelson, which is 8488 words long.
I've also read version 2 of English Language by Graham Nelson, which is 2330 words long.
I've also read version 7 of Standard Rules by Graham Nelson, which is 35135 words long.
Problem__ PM_LicenceUnquoted
>--> You wrote 'The licence for this story is Knuth-CTAN' (source text, line 1):
but should give its value in double-quotes, as in the sentence 'The licence
for this extension is "CC-BY-4.0".'
Problem__ PM_NoSuchLicence
>--> You wrote 'The licence for this story is Knuth-CTAN' (source text, line 1):
but gives a licence unknown to Inform, and must be one of those in the SPDX
standard catalogue of licence IDs, like '"CC-BY-4.0"'. (See spdx.org.)
Inform 7 has finished.

View file

@ -0,0 +1,3 @@
Problem: PM_LicenceUnquoted
The licence for this story is Knuth-CTAN.

View file

@ -1,8 +1,8 @@
Inform 7 v10.2.0 has started.
I've now read your source text, which is 84 words long.
I've also read Basic Inform by Graham Nelson, which is 7719 words long.
I've also read English Language by Graham Nelson, which is 2330 words long.
I've also read Standard Rules by Graham Nelson, which is 33683 words long.
I've also read version 2 of Basic Inform by Graham Nelson, which is 8488 words long.
I've also read version 2 of English Language by Graham Nelson, which is 2330 words long.
I've also read version 7 of Standard Rules by Graham Nelson, which is 35135 words long.
Problem__ PM_MasksRelation
>--> I don't want you to define a phrase with the wording you've used in in
'To decide whether (X - testval) is beyond (Y - testval)' (source text, line 7)
@ -17,5 +17,5 @@ Problem__ PM_MasksRelation
means for something to be 'less than' something else, so this phrase
definition would look too much like testing whether 'X is less than Y'.
('The verb to be less than means the numerically-less-than relation' (Basic
Inform, line 59).)
Inform, line 60).)
Inform 7 has finished.

View file

@ -0,0 +1,10 @@
Inform 7 v10.2.0 has started.
I've now read your source text, which is 7 words long.
I've also read version 2 of Basic Inform by Graham Nelson, which is 8488 words long.
I've also read version 2 of English Language by Graham Nelson, which is 2330 words long.
I've also read version 7 of Standard Rules by Graham Nelson, which is 35135 words long.
Problem__ PM_NoSuchLicence
>--> You wrote 'The licence for this story is "XYZZY-11"' (source text, line 1):
but gives a licence unknown to Inform, and must be one of those in the SPDX
standard catalogue of licence IDs, like '"CC-BY-4.0"'. (See spdx.org.)
Inform 7 has finished.

View file

@ -0,0 +1,3 @@
Problem: PM_NoSuchLicence
The licence for this story is "XYZZY-11".

View file

@ -153,7 +153,7 @@ void LicenceDeclaration::set(int extension, int detail, text_stream *val, int wn
@<Issue PM_AntiquatedCopyright@> =
StandardProblems::sentence_problem(Task::syntax_tree(),
_p_(PM_NoSuchLicence),
_p_(PM_EarlyCopyrightDate),
"has too early a copyright date",
"which should be at least 1971.");
return;
@ -249,28 +249,62 @@ void LicenceDeclaration::check_licences(void) {
@
=
void LicenceDeclaration::describe(OUTPUT_STREAM) {
int LicenceDeclaration::anything_to_declare(void) {
inform_project *proj = Task::project();
inbuild_licence *L = proj->as_copy->licence;
if ((L->read_from_JSON) || (L->discussed_in_source)) return TRUE;
inform_extension *E;
LOOP_OVER_LINKED_LIST(E, inform_extension, proj->extensions_included) {
L = E->as_copy->licence;
if ((L->read_from_JSON) || (L->discussed_in_source)) return TRUE;
}
return FALSE;
}
@
@e I6_TEXT_LICENSESFORMAT from 1
@e PLAIN_LICENSESFORMAT
@e HTML_LICENSESFORMAT
=
void LicenceDeclaration::describe(OUTPUT_STREAM, int format) {
inform_project *proj = Task::project();
inbuild_licence *L = proj->as_copy->licence;
text_stream *mention = NULL;
int licences_cited = FALSE;
if (format == HTML_LICENSESFORMAT) {
WRITE("<html><body>\n");
WRITE("<h1>Copyright notice</h1>\n");
}
if ((L->read_from_JSON) || (L->discussed_in_source)) {
@<Open paragraph@>;
WRITE("Story ");
@<Describe L@>;
@<Close paragraph@>;
}
inform_extension *E;
LOOP_OVER_LINKED_LIST(E, inform_extension, proj->extensions_included) {
L = E->as_copy->licence;
if ((L->read_from_JSON) || (L->discussed_in_source)) {
@<Open paragraph@>;
WRITE("%X v%v is ",
L->on_copy->edition->work, &(L->on_copy->edition->version));
mention = I", included";
@<Describe L@>;
@<Close paragraph@>;
}
}
if (licences_cited)
WRITE("^For information about and links to full text of licences, "
"see: https://spdx.org/licenses/\n");
if (licences_cited) {
@<Open paragraph@>;
WRITE("For information about and links to full text of licences, see: ");
LicenceDeclaration::link(OUT, I"https://spdx.org/licenses/", format);
@<Close paragraph@>;
}
if (format == HTML_LICENSESFORMAT) WRITE("</body></html>\n");
}
@<Describe L@> =
@ -282,5 +316,23 @@ void LicenceDeclaration::describe(OUTPUT_STREAM) {
}
WRITE(".");
if (Str::len(L->rights_history) > 0) WRITE(" %S", L->rights_history);
if (Str::len(L->origin_URL) > 0) WRITE(" See: %S", L->origin_URL);
WRITE("^\n");
if (Str::len(L->origin_URL) > 0) {
WRITE(" See: ");
LicenceDeclaration::link(OUT, L->origin_URL, format);
}
@<Open paragraph@> =
if (format == HTML_LICENSESFORMAT) WRITE("<p>");
@<Close paragraph@> =
if (format == HTML_LICENSESFORMAT) WRITE("</p>");
if (format == I6_TEXT_LICENSESFORMAT) WRITE("^");
WRITE("\n");
@
=
void LicenceDeclaration::link(OUTPUT_STREAM, text_stream *URL, int format) {
if (format == HTML_LICENSESFORMAT) WRITE("<a href=\"%S\">%S</a>", URL, URL);
else WRITE("%S", URL);
}

View file

@ -149,6 +149,7 @@ so on. Those absolute basics are made here.
BENCH(MajorNodes::pass_2)
BENCH(DialogueBeats::decide_cue_topics)
BENCH(LicenceDeclaration::check_licences)
BENCH(BibliographicData::fill_licence_variables)
@<Make the model world@> =
Task::advance_stage_to(MODEL_CSEQ, I"Making the model world",

View file

@ -316,6 +316,11 @@ filename *Task::ifiction_record_file(void) {
if (inform7_task == NULL) internal_error("there is no current task");
return Filenames::in(inform7_task->path, I"Metadata.iFiction");
}
filename *Task::licenses_file(int as_HTML) {
if (inform7_task == NULL) internal_error("there is no current task");
if (as_HTML) return Filenames::in(inform7_task->path, I"Licenses.html");
return Filenames::in(inform7_task->path, I"Licenses.txt");
}
filename *Task::manifest_file(void) {
if (inform7_task == NULL) internal_error("there is no current task");
return Filenames::in(inform7_task->path, I"manifest.plist");

View file

@ -45,18 +45,18 @@ void CalculusProblems::issue_problem(int err_no, parse_node *spec, wording W,
case ComparisonFailed_CALCERROR:
Problems::quote_kind(4, K1);
Problems::quote_kind(5, K2);
char *msg;
if (((Kinds::eq(K1, K_time)) && (Kinds::eq(K2, K_time_period))) ||
((Kinds::eq(K2, K_time)) && (Kinds::eq(K1, K_time_period))))
StandardProblems::tcp_problem(_p_(PM_ComparisonFailed), tck,
"that would mean comparing two kinds of value which cannot mix - "
msg = "that would mean comparing two kinds of value which cannot mix - "
"%4 and %5 - so this must be incorrect. Note that 'time period', "
"introduced in Inform in 2024, holds values like '10 minutes', "
"and is not the same kind as 'time', which is for times of day "
"like '6:12 PM'. (Before 2024, the same kind was used for both.)");
"like '6:12 PM'. (Before 2024, the same kind was used for both.)";
else
StandardProblems::tcp_problem(_p_(PM_ComparisonFailed), tck,
"that would mean comparing two kinds of value which cannot mix - "
"%4 and %5 - so this must be incorrect.");
msg = "that would mean comparing two kinds of value which cannot mix - "
"%4 and %5 - so this must be incorrect.";
StandardProblems::tcp_problem(_p_(PM_ComparisonFailed), tck, msg);
break;
case BadUniversal1_CALCERROR:
Problems::quote_kind(4, K1);

View file

@ -172,6 +172,8 @@ Section 7 - Unindexed Standard Rules variables - Unindexed
The story title, the story author, the story headline, the story genre
and the story description are text variables. [*****]
The release number and the story creation year are number variables. [**]
The story licence, the story copyright, the story origin URL, and the
story rights history are text variables. [****]
The release number is usually 1.
The story headline is usually "An Interactive Fiction".

View file

@ -112,7 +112,7 @@ which must match:
==> { -1, - };
@h Bibliographic variables.
Most of the bibliographic data on a story is kept global variables, however,
Most of the bibliographic data on a story is kept in global variables, however,
which are used to build the iFiction record and the releasing blurb at the end
of a successful compilation. They are:
@ -124,6 +124,10 @@ nonlocal_variable *story_genre_VAR = NULL;
nonlocal_variable *story_description_VAR = NULL;
nonlocal_variable *story_creation_year_VAR = NULL;
nonlocal_variable *story_release_number_VAR = NULL;
nonlocal_variable *story_licence_VAR = NULL;
nonlocal_variable *story_copyright_VAR = NULL;
nonlocal_variable *story_origin_URL_VAR = NULL;
nonlocal_variable *story_rights_history_VAR = NULL;
@ As usual, Inform uses these English wordings to detect the creation of the
variables in the Standard Rules, which are in English: so there's no point
@ -136,6 +140,10 @@ in translating this nonterminal to other languages.
@d STORY_DESCRIPTION_BIBV 4
@d STORY_CREATION_YEAR_BIBV 5
@d RELEASE_NUMBER_BIBV 6
@d STORY_LICENCE_BIBV 7
@d STORY_COPYRIGHT_BIBV 8
@d STORY_ORIGIN_URL_BIBV 9
@d STORY_RIGHTS_HISTORY_BIBV 10
=
<notable-bibliographic-variables> ::=
@ -145,7 +153,11 @@ in translating this nonterminal to other languages.
story genre |
story description |
story creation year |
release number
release number |
story licence |
story copyright |
story origin url |
story rights history
@ And we read them here:
@ -173,6 +185,10 @@ int BibliographicData::bibliographic_new_variable_notify(nonlocal_variable *q) {
current_sentence = save;
}
break;
case STORY_LICENCE_BIBV: story_licence_VAR = q; break;
case STORY_COPYRIGHT_BIBV: story_copyright_VAR = q; break;
case STORY_ORIGIN_URL_BIBV: story_origin_URL_VAR = q; break;
case STORY_RIGHTS_HISTORY_BIBV: story_rights_history_VAR = q; break;
}
NonlocalVariables::make_constant(q, TRUE);
}
@ -242,6 +258,53 @@ int BibliographicData::story_author_is(text_stream *p) {
return FALSE;
}
@h Licence information.
=
void BibliographicData::fill_licence_variables(void) {
inform_project *proj = Task::project();
inbuild_licence *L = proj->as_copy->licence;
text_stream *val;
nonlocal_variable *var;
var = story_licence_VAR;
if (L->standard_licence) val = L->standard_licence->SPDX_id;
else val = I"Unspecified";
@<Set var to val@>;
var = story_copyright_VAR;
val = Str::new();
WRITE_TO(val, "%S %d", L->rights_owner, L->copyright_year);
if (L->revision_year > L->copyright_year) WRITE_TO(val, "-%d", L->revision_year);
@<Set var to val@>;
var = story_origin_URL_VAR;
val = L->origin_URL;
@<Set var to val@>;
var = story_rights_history_VAR;
val = L->rights_history;
@<Set var to val@>;
}
@<Set var to val@> =
if (var) {
TEMPORARY_TEXT(val_t)
PUT_TO(val_t, '"');
LOOP_THROUGH_TEXT(pos, val)
if (Str::get(pos) == '"')
PUT_TO(val_t, '\'');
else
PUT_TO(val_t, Str::get(pos));
PUT_TO(val_t, '"');
wording TW = Feeds::feed_text(val_t);
parse_node *constant_text = Rvalues::from_unescaped_wording(TW);
Assertions::PropertyKnowledge::initialise_global_variable(
var, constant_text);
DISCARD_TEXT(val_t)
}
@h The IFID.
The Interactive Fiction ID number for an Inform 7-compiled work is the same
as the UUID unique ID generated by the Inform 7 application.

View file

@ -354,6 +354,7 @@ void ReleaseInstructions::write_ifiction_and_blurb(void) {
}
if (problem_count == 0) {
@<Write iFiction record@>;
@<Write licenses file@>;
@<Write release blurb@>;
@<Write manifest file@>;
}
@ -368,6 +369,18 @@ void ReleaseInstructions::write_ifiction_and_blurb(void) {
iFiction::write_ifiction_record(xf, rel);
STREAM_CLOSE(xf);
@<Write licenses file@> =
if (LicenceDeclaration::anything_to_declare()) {
text_stream xf_struct; text_stream *xf = &xf_struct;
filename *F = Task::licenses_file(my_instructions->release_website);
if (STREAM_OPEN_TO_FILE(xf, F, UTF8_ENC) == FALSE)
Problems::fatal_on_file("Can't open metadata file", F);
int format = PLAIN_LICENSESFORMAT;
if (my_instructions->release_website) format = HTML_LICENSESFORMAT;
LicenceDeclaration::describe(xf, format);
STREAM_CLOSE(xf);
}
@<Write release blurb@> =
filename *F = Task::blurb_file();
text_stream xf_struct; text_stream *xf = &xf_struct;

View file

@ -198,6 +198,11 @@ own credits.
WRITE("placeholder [OTHERCREDITS] = \"The postcard was written by Andrew Plotkin "
"and designed by Lea Albaugh.\"\n");
}
if (LicenceDeclaration::anything_to_declare()) {
WRITE("auxiliary \"%f\" \"%S\" \"--\"\n",
Task::licenses_file(rel->release_website),
I"Copyright");
}
@ Facilities for a Javascript interpreter to play a base64-encoded story
file online.

View file

@ -233,19 +233,19 @@ be caught later on Inform's run.
"that tries to set the value of an unknown property to %4.");
else {
Problems::quote_property(6, prn);
char *msg;
if (((Kinds::eq(K1, K_time)) && (Kinds::eq(K2, K_time_period))) ||
((Kinds::eq(K2, K_time)) && (Kinds::eq(K1, K_time_period))))
StandardProblems::tcp_problem(_p_(PM_PropertyType), tck,
"that tries to set the value of the '%6' property to %4 - which "
msg = "that tries to set the value of the '%6' property to %4 - which "
"must be wrong because this property has to be %5. Note that "
"'time period', introduced in Inform in 2024, holds values like "
"'10 minutes', and is not the same kind as 'time', which is for "
"times of day like '6:12 PM'. (Before 2024, the same kind was "
"used for both.)");
"used for both.)";
else
StandardProblems::tcp_problem(_p_(PM_PropertyType), tck,
"that tries to set the value of the '%6' property to %4 - which "
"must be wrong because this property has to be %5.");
msg = "that tries to set the value of the '%6' property to %4 - which "
"must be wrong because this property has to be %5.";
StandardProblems::tcp_problem(_p_(PM_PropertyType), tck, msg);
}
return NEVER_MATCH;
}

View file

@ -547,6 +547,10 @@ void Hierarchy::establish(void) {
@e SERIAL_MD_HL
@e LANGUAGE_MD_HL
@e DESCRIPTION_MD_HL
@e LICENCE_MD_HL
@e COPYRIGHT_MD_HL
@e ORIGIN_URL_MD_HL
@e RIGHTS_HISTORY_MD_HL
@e EPISODE_NUMBER_MD_HL
@e SERIES_NAME_MD_HL
@e YEAR_MD_HL
@ -571,6 +575,10 @@ void Hierarchy::establish(void) {
H_C_T(SERIAL_MD_HL, I"^serial")
H_C_T(LANGUAGE_MD_HL, I"^language")
H_C_T(DESCRIPTION_MD_HL, I"^description")
H_C_T(LICENCE_MD_HL, I"^licence")
H_C_T(COPYRIGHT_MD_HL, I"^copyright")
H_C_T(ORIGIN_URL_MD_HL, I"^origin")
H_C_T(RIGHTS_HISTORY_MD_HL, I"^rights")
H_C_T(EPISODE_NUMBER_MD_HL, I"^episode")
H_C_T(SERIES_NAME_MD_HL, I"^series")
H_C_T(YEAR_MD_HL, I"^year")

View file

@ -124,7 +124,7 @@ void CompletionModule::compile(void) {
@<Copyright licences@> =
inter_name *iname = Hierarchy::find(COPYRIGHT_LICENCES_HL);
TEMPORARY_TEXT(licences)
LicenceDeclaration::describe(licences);
LicenceDeclaration::describe(licences, I6_TEXT_LICENSESFORMAT);
if (Str::len(licences) > 0) Emit::text_constant(iname, licences);
else Emit::numeric_constant(iname, 0);
Hierarchy::make_available(iname);

View file

@ -146,6 +146,10 @@ not compile to any data in the object code:
} else {
Emit::text_constant(Hierarchy::find(YEAR_MD_HL), I"(This year)");
}
Emit::initial_value_as_raw_text(Hierarchy::find(LICENCE_MD_HL), story_licence_VAR);
Emit::initial_value_as_raw_text(Hierarchy::find(COPYRIGHT_MD_HL), story_copyright_VAR);
Emit::initial_value_as_raw_text(Hierarchy::find(ORIGIN_URL_MD_HL), story_origin_URL_VAR);
Emit::initial_value_as_raw_text(Hierarchy::find(RIGHTS_HISTORY_MD_HL), story_rights_history_VAR);
@ The IFID is written into the compiled story file, too, both in order
that it can be printed by the VERSION command and to brand the file so

View file

@ -46,6 +46,14 @@ void CardElement::render(OUTPUT_STREAM, index_session *session) {
CardElement::Library_Card_entry(OUT, "Language of play", pack, I"^language", I"English");
CardElement::Library_Card_entry(OUT, "IFID number", pack, I"^IFID", NULL);
CardElement::Library_Card_entry(OUT, "Story description", pack, I"^description", I"None");
if (Metadata::optional_textual(pack, I"^licence"))
CardElement::Library_Card_entry(OUT, "Licence", pack, I"^licence", I"Unspecified");
if (Metadata::optional_textual(pack, I"^copyright"))
CardElement::Library_Card_entry(OUT, "Copyright", pack, I"^copyright", I"Unspecified");
if (Metadata::optional_textual(pack, I"^origin"))
CardElement::Library_Card_entry(OUT, "Origin URL", pack, I"^origin", I"Unspecified");
if (Metadata::optional_textual(pack, I"^rights"))
CardElement::Library_Card_entry(OUT, "Rights history", pack, I"^rights", I"Unspecified");
HTML::end_html_table(OUT);
HTML_CLOSE("p");
}

View file

@ -16651,6 +16651,13 @@ If the bibliographic named values are not set by the source text, Inform will st
Story genre: Fiction
Release number: 1
It is also possible to provide copyright and licencing details for a project. This follows the same syntax and conventions as for extensions, except that the word `story` is used instead of `extension`. See [Licence] for more.
The licence for this story is "CC-BY-4.0".
The copyright for this story is "Bartholomew Hendricks 2006-2024".
The origin for this story is "https://www.loosecannonif.com/bh".
The rights history for this story is "Adapted by permission from Jennifer Pond's novel 'The Transfinite Kitten' (2003)."
## Genres
^^{genre+biblio+}
@ -17958,13 +17965,13 @@ First, though, a word about sharing. Anyone is free to write an extension on any
But most extensions are written to be shared with strangers — that is, they are made available to anybody who wants to download and use them. There are several online repositories of extensions written in this way, of which one is the Inform Public Library, accessed from the Inform app.
Whenever one author copies or adapts programs or text by another author, copyright law comes into play. If we want to publish or sell a story which uses an extension by somebody else, we need their permission. The form that permission usually takes is a general _licence_ (or "license", in US English) where the extension author says, in effect: Anybody can use this provided ... and then gives some conditions.
### Credits for extensions
During play of any story compiled by Inform 7, typing ``VERSION`` lists various serial numbers of the pieces of software used to make it. The list concludes with names, authors and version numbers of any extensions used. So every author whose work contributes to a story automatically gets a modest credit within it. The same list can be printed, at the discretion of the designer, using the textual substitution:
During play of any story compiled by Inform 7, typing ``VERSION`` (or ``COPYRIGHT``) lists various serial numbers of the pieces of software used to make it. The list concludes with names, authors and version numbers of any extensions used. So every author whose work contributes to a story automatically gets a modest credit within it. The licencing terms for those extensions are also given. The same list can be printed, at the discretion of the designer, using the textual substitution:
> phrase: {phs_extcredits} say "[the/-- list of extension credits]"
>
> This text substitution expands to one or more lines of text crediting each of the extensions used by the current source text, along with their version numbers and authors. Extensions whose authors have chosen the `use authorial modesty` option are missed out.
> This text substitution expands to one or more lines of text crediting each of the extensions used by the current source text, along with their version numbers and authors. Extensions whose authors have chosen the `use authorial modesty` option are missed out (unless they declare a licence, in which case that licence is still mentioned, since it may be a legal necessity).
If we want our extension to go uncredited perhaps if it is a low-level enabling sort of thing, for instance we can place the following sentence inside the definition of the extension:
@ -17978,13 +17985,67 @@ A complete list, undiluted by modesty, can always be obtained using:
>
> This text substitution expands to one or more lines of text crediting each of the extensions used by the current source text, along with their version numbers and authors. Every extension is included, even those whose authors have opted for `use authorial modesty`.
Sometimes authorship is complicated. What if Mary Brown finds some Inform 6 code written by John Smith in the mid-90s, and puts an I7 gloss on it to make an I7 extension, but then Pierre Dupont translates it into French: who's the author of the result? The rule is that the person making the current, latest version is the author listed in the titling line, so we end up with
Whenever one author copies or adapts programs or text by another author, copyright law comes into play. If we want to publish or sell a story which uses an extension by somebody else, we need their permission. The form that permission usually takes is a general _licence_ (or "license", in US English) where the extension author says, in effect: Anybody can use this provided ... and then gives some conditions.
... by Pierre Dupont begins here.
### Open-source licences for extensions
But Mary and John deserve their credits too...
The source text for an extension can contain special sentences which specify its licence, that is, the terms on which other Inform authors can use it. For example:
_More to follow when IE-0036 is implemented._
The licence for this extension is "CC-BY-4.0".
The copyright for this extension is "Emily Short 2006-2024".
The origin for this extension is "https://www.emshort.com/inform".
The rights history for this extension is "Adapted by permission from sample code by Adam Cadre in 2006."
Those are the only four things which can be set — `licence` (or the spelling `license` is also allowed), `copyright`, `origin` and `rights history`. All four are optional.
- The `licence` must be _either_ `"Unspecified"` _or_ one of the standard SPDX machine-readable licence codes listed at: [https://spdx.org/licenses/](https://spdx.org/licenses/) — see below for notes on what to choose. Inform will throw a problem message if the licence is now deprecated by SPDX, usually because it has been found to be legally problematic in practice, and better versions are now available. Note that the SPDX list contains only open-source licences: if we don't want to open the source of an extension we should leave the `licence` at the default setting `"Unspecified"`.
- The `copyright` declaration must take the form `"Owner's Name YYYY"`, where `YYYY` is a year after 1970, or else `"Owner's Name YYYY-ZZZZ"`, to indicate that it was created in year `YYYY` and most recently refreshed or rewritten in year `ZZZZ`. Note that it must not contain a `©` symbol, or text like `(c)` or `(C)` or `Copyright`: that's added later automatically. It should just give the owner's name and a date. Both a name and a year are required: Inform rejects `"2020"` or `"Emily Short"` with problem messages because of this.
- The `origin` is the URL for the home web page of the extension, if there is one. Note that some popular licences, such as `CC-BY-4.0`, require users of the software under licence to reproduce the URL of its home page. If this URL is given, then Inform takes care of that requirement automatically.
- The `rights history` should be one or more complete sentences explaining any other _legal_ notes necessary. Less is more here, but if, for example, we are making a new version of some old code by somebody else (and if their licence allows that, of course), then we should credit that. The `rights history` should not be used for miscellaneous acknowledgements, just for what's legally required.
If one of the other four settings is made, but no `licence`, it defaults to `"Unspecified"`. If one of the other four settings is made, but no `copyright`, it defaults to the name of the author (given in the extension title, or the title sentence for a story) and the current year of compilation. `origin` and `rights history` are both blank by default.
### Licences accepted by the Inform Public Library
The best way to share an Inform extension with the world may be to submit it to the Inform Public Library. This is a curated collection, rather than being a service anyone can publish on, and the curators are looking for generally useful extensions whose subject matter will be suitable for users of all ages, and will not run into legal difficulties. Inform is widely used in education, so the Public Library may be being browsed in classrooms by young children.
The Public Library also aims to host extensions which users can grab and make use of without legal worries, so it can only accept licenced extensions, and for policy reasons it will only accept a short list of simple, easily understood, popular and highly permissive licences — currently, 5 are allowed.
This is many fewer than the full SPDX list, which currently includes some 617 non-deprecated open-source licences. But many of those are obscure enough that there's no case law on them, or else they are trying to achieve particular policy goals: the `BSD-3-Clause-No-Nuclear-Warranty`, for example. Not all are certified as "free" or "open" by the two bodies usually considered authoritative, the Free Software Foundation and the Open Source Initiative. And even those which are rated both "free" and "open", which are reasonably popular, and which have no obvious axe to grind, may not be sufficiently free for all of our users' needs.
First, we suggest the following as alternative ways to, essentially, put an extension into what is vaguely called "the public domain" — meaning, loosely speaking, "do what you like with this". It's not as easy to make that offer in a legally foolproof way in worldwide jurisdictions as non-lawyers expect, but here are three reliable ways:
Licence code | Full name
------------- | ---------
`"CC0-1.0"` | Creative Commons Zero v1.0 Universal
`"Unlicense"` | The Unlicense
`"MIT-0"` | MIT No Attribution
Second, these two licences are allowed as ways to make usage _almost_ completely free, but where there's still a requirement to acknowledge the original author, and not to remove the original author's name:
Licence code | Full name
---------------- | ---------
`"CC-BY-4.0"` | Creative Commons Attribution 4.0 International
`"Artistic-2.0"` | Artistic License 2.0
Extensions licenced on these terms can safely be used since Inform automatically complies with the need to acknowledge in its handling of the ``COPYRIGHT`` and ``LICENCE`` commands, and also when releasing a project. For example, if it releases a story to a website, that website will include a page of copyright acknowledgements.
The source code to Inform itself is under `Artistic-2.0`, in fact, so the built-in Inform extensions — the Standard Rules, Basic Inform and English Language — are covered by that automatically. But there's no need for anyone else to make this choice. `CC-BY-4.0` is better known and more widely used, but some people feel it's better suited to pictures and text than to software, where the three "zero" licences above may be better choices.
The down side of choosing `CC0-1.0`, `Unlicense` or `MIT-0` is that these do not even require the user to acknowledge our contribution: they can even remove our names and claim to have written the extension themselves. But of course it's not ethical to do that. Inform automatically acknowledges all extension contributors, even if the licence does not require it, and the Public Library will not host an extension if the curators think the author has been dishonest. So this concern is not much of a concern. The up side of choosing a "zero" licence is that it makes the legal position clear in a much more likely scenario — a situation where, twenty years from now, somebody wants to take over as the maintainer of the extension, and to rewrite it, but can't contact us to ask permission. A "zero" licence makes clear that this is completely legal.
Note that the Public Library will _not_ accept `CC-BY-NC-4.0`, `CC-BY-NC-ND-4.0` and so on, and will not accept `GPL-2.0`, `GPL-3.0` or similar. We have made this policy choice because:
- We want Public Library users to feel completely free to publish commercial games. This is why we do not allow `-NC`, "no commercial use", licences.
- Similarly, clauses intended to force users of an extension to share the results impose a restriction on the author of a story which we want to avoid. Authors should be free to publish stories without having to publish the source text if they want to. So, no `-SA`, "share-alike", restrictions, and no form of the GPL.
- Any story using an extension could, at a stretch, be considered a derivative work, and we don't want the legal safety of an extension to come down to delicate questions of law. So, no `-ND`, "no derivative works", clauses.
Extension authors are completely free to licence their extensions however they would like to, of course. This shortlist of five licences is simply a hosting-policy choice made by the Inform Public Library. Users are free to choose other licences and circulate extensions elsewhere.
## Compatibility with story file formats

View file

@ -8,8 +8,8 @@
'M = mass': mass
'X = area': area
'P = pressure': pressure
'N + T': nothing
'T + T': nothing
'N + T': text
'T + T': text
'L + L': length
'L - L': length
'L * L': (length)2

View file

@ -8,8 +8,8 @@
'M = mass': mass
'X = area': area
'P = pressure': pressure
'N + T': nothing
'T + T': nothing
'N + T': text
'T + T': text
'L + L': length
'L - L': length
'L * L': (length)2

View file

@ -1,15 +1,15 @@
Size of lexicon: 3184 excerpt meanings
Stored among 859 words out of total vocabulary of 10655
Size of lexicon: 3188 excerpt meanings
Stored among 859 words out of total vocabulary of 10659
723 words have a start list: longest belongs to report (with 296 meanings)
21 words have an end list: longest belongs to digits (with 7 meanings)
29 words have a middle list: longest belongs to to (with 4 meanings)
108 words have a subset list: longest belongs to street (with 4 meanings)
Number of attempts to retrieve: 110641
of which unsuccessful: 92469
Number of attempts to retrieve: 110658
of which unsuccessful: 92486
of which successful: 18172
Total attempts to match against excerpt meanings: 280154
of which, total with incorrect hash codes: 257376
Total attempts to match against excerpt meanings: 283858
of which, total with incorrect hash codes: 261080
of which, total with correct hash codes: 22778
of which, total which matched: 19943

View file

@ -1,12 +1,12 @@
adjective: 142 items
article: 2 items
noun: 2409 items
noun: 2413 items
pronoun: 8 items
preposition: 274 items
determiner: 22 items
verb: 109 items
verb_form: 388 items
total in all categories: 3354
total in all categories: 3358
adjective: 'even'
adjective: 'odd'
@ -904,6 +904,10 @@ noun: proper: 'story genre'
noun: proper: 'story description'
noun: proper: 'release number'
noun: proper: 'story creation year'
noun: proper: 'story licence'
noun: proper: 'story copyright'
noun: proper: 'story origin url'
noun: proper: 'story rights history'
noun: proper: 'figure of cover'
noun: proper: 'i6-nothing-constant'
noun: proper: 'i6-varying-global'