mirror of
https://github.com/ganelson/inform.git
synced 2024-07-08 01:54:21 +03:00
1651 lines
211 KiB
HTML
1651 lines
211 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>2/bd</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<meta http-equiv="Content-Language" content="en-gb">
|
|
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
</head>
|
|
<body>
|
|
|
|
<!--Weave of '2/ri' generated by 7-->
|
|
<ul class="crumbs"><li><a href="../webs.html">★</a></li><li><a href="index.html">if</a></li><li><a href="index.html#2">Chapter 2: Bibliographic Data</a></li><li><b>Release Instructions</b></li></ul><p class="purpose">To write the iFiction record for the work of IF compiled, its release instructions and its picture manifest, if any.</p>
|
|
|
|
<ul class="toc"><li><a href="#SP1">§1. Definitions</a></li></ul><hr class="tocbar">
|
|
|
|
<p class="inwebparagraph"><a id="SP1"></a><b>§1. Definitions. </b></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b>Much of this section is best understood by reference to the Treaty of
|
|
Babel, a cross-IF-system standard for bibliographic data and packaging
|
|
agreed between the major IF design systems in 2006. Inform aims to comply
|
|
fully with the Treaty and the code below should be maintained as such.
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>The following somewhat miscellaneous variables hold the instructions given
|
|
in the source text for how to release the story file — the content of
|
|
any "Release along with..." sentences, in fact.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">release_website</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Release along with a website?</span>
|
|
<span class="identifier">wchar_t</span><span class="plain"> *</span><span class="identifier">website_template_leafname</span><span class="plain"> = </span><span class="identifier">L</span><span class="string">"Standard"</span><span class="plain">; </span> <span class="comment">If so, the template name for it</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">release_interpreter</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Release along with an interpreter?</span>
|
|
<span class="identifier">wchar_t</span><span class="plain"> *</span><span class="identifier">interpreter_template_leafname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">; </span> <span class="comment">If so, the template name for it</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">release_booklet</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Release along with introductory booklet?</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">release_postcard</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Release along with Zarf's IF card?</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">release_cover</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Release along with cover art?</span>
|
|
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">cover_filename_sentence</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">; </span> <span class="comment">Where this was requested</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">cover_alt_text</span><span class="plain"> = -1; </span> <span class="comment">ALT text in case cover is displayed in HTML</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">release_solution</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Release along with a solution?</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">release_source</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Release along with the source text?</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">release_card</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Release along with the iFiction card?</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">solution_public</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">If released, will this be linked on a website?</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">source_public</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">; </span> <span class="comment">If released, will this be linked on a website?</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">card_public</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">If released, will this be linked on a website?</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">create_Materials</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span> <span class="comment">Create a Materials folder if one doesn't exist already</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>Auxiliary files are not really files to us at all: simply names passed along.
|
|
They are the auxiliary files included in the iFiction record generated
|
|
for a released project, if the source asks to do so: they might for instance
|
|
be maps or booklets which the author intends to accompany the final story
|
|
file. (Because they are treated only as names and are never opened, the
|
|
following structure contains no file handles.)
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">auxiliary_file</span><span class="plain"> {</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">name_of_original_file</span><span class="plain">; </span> <span class="comment">e.g., "Collegio.pdf"</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">folder_to_release_to</span><span class="plain">; </span> <span class="comment">e.g., "Sounds"</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">brief_description</span><span class="plain">; </span> <span class="comment">e.g., "Collegio Magazine"</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">from_payload</span><span class="plain">;</span>
|
|
<span class="identifier">MEMORY_MANAGEMENT</span>
|
|
<span class="plain">} </span><span class="reserved">auxiliary_file</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The structure auxiliary_file is private to this section.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP5"></a><b>§5. </b>A sentence like this allows for a shopping list of release ingredients:
|
|
</p>
|
|
|
|
<blockquote>
|
|
<p>Release along with a public source text and a website.</p>
|
|
|
|
</blockquote>
|
|
|
|
<p class="inwebparagraph">The object noun phrase is an articled list, and each entry must match this.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain"><</span><span class="identifier">release</span><span class="plain">-</span><span class="identifier">sentence</span><span class="plain">-</span><span class="identifier">object</span><span class="plain">> ::=</span>
|
|
<span class="plain"><</span><span class="identifier">privacy</span><span class="plain">-</span><span class="identifier">indicator</span><span class="plain">> <</span><span class="identifier">exposed</span><span class="plain">-</span><span class="identifier">innards</span><span class="plain">> | ==> </span><span class="identifier">R</span><span class="plain">[2]; <<</span><span class="identifier">privacy</span><span class="plain">>> = </span><span class="identifier">R</span><span class="plain">[1]</span>
|
|
<span class="plain"><</span><span class="identifier">privacy</span><span class="plain">-</span><span class="identifier">indicator</span><span class="plain">> ... | ==> </span><<span class="cwebmacro">Issue PM_NoSuchPublicRelease problem</span> <span class="cwebmacronumber">5.1</span>>
|
|
<span class="plain"><</span><span class="identifier">exposed</span><span class="plain">-</span><span class="identifier">innards</span><span class="plain">> | ==> </span><span class="identifier">R</span><span class="plain">[1]; <<</span><span class="identifier">privacy</span><span class="plain">>> = </span><span class="identifier">NOT_APPLICABLE</span>
|
|
<span class="identifier">cover</span><span class="plain"> </span><span class="identifier">art</span><span class="plain"> ( <</span><span class="identifier">quoted</span><span class="plain">-</span><span class="identifier">text</span><span class="plain">> ) | ==> </span><span class="constant">COVER_ART_PAYLOAD</span><span class="plain">; <<</span><span class="identifier">alttext</span><span class="plain">>> = </span><span class="identifier">R</span><span class="plain">[1];</span>
|
|
<span class="identifier">cover</span><span class="plain"> </span><span class="identifier">art</span><span class="plain"> | ==> </span><span class="constant">COVER_ART_PAYLOAD</span><span class="plain">; <<</span><span class="identifier">alttext</span><span class="plain">>> = -1;</span>
|
|
<span class="identifier">existing</span><span class="plain"> </span><span class="identifier">story</span><span class="plain"> </span><span class="identifier">file</span><span class="plain"> | ==> </span><span class="constant">EXISTING_STORY_FILE_PAYLOAD</span>
|
|
<span class="identifier">existing</span><span class="plain"> </span><span class="identifier">story</span><span class="plain"> </span><span class="identifier">file</span><span class="plain"> </span><span class="identifier">called</span><span class="plain"> {<</span><span class="identifier">quoted</span><span class="plain">-</span><span class="identifier">text</span><span class="plain">-</span><span class="identifier">without</span><span class="plain">-</span><span class="identifier">subs</span><span class="plain">>} | ==> </span><span class="constant">NAMED_EXISTING_STORY_FILE_PAYLOAD</span>
|
|
<span class="identifier">file</span><span class="plain"> </span><span class="identifier">of</span><span class="plain"> {<</span><span class="identifier">quoted</span><span class="plain">-</span><span class="identifier">text</span><span class="plain">-</span><span class="identifier">without</span><span class="plain">-</span><span class="identifier">subs</span><span class="plain">>} </span><span class="identifier">called</span><span class="plain"> {<</span><span class="identifier">quoted</span><span class="plain">-</span><span class="identifier">text</span><span class="plain">-</span><span class="identifier">without</span><span class="plain">-</span><span class="identifier">subs</span><span class="plain">>} | ==> </span><span class="constant">AUXILIARY_FILE_PAYLOAD</span>
|
|
<span class="identifier">file</span><span class="plain"> {<</span><span class="identifier">quoted</span><span class="plain">-</span><span class="identifier">text</span><span class="plain">-</span><span class="identifier">without</span><span class="plain">-</span><span class="identifier">subs</span><span class="plain">>} </span><span class="identifier">in</span><span class="plain"> {<</span><span class="identifier">quoted</span><span class="plain">-</span><span class="identifier">text</span><span class="plain">-</span><span class="identifier">without</span><span class="plain">-</span><span class="identifier">subs</span><span class="plain">>} | ==> </span><span class="constant">HIDDEN_FILE_IN_PAYLOAD</span>
|
|
<span class="identifier">file</span><span class="plain"> {<</span><span class="identifier">quoted</span><span class="plain">-</span><span class="identifier">text</span><span class="plain">-</span><span class="identifier">without</span><span class="plain">-</span><span class="identifier">subs</span><span class="plain">>} | ==> </span><span class="constant">HIDDEN_FILE_PAYLOAD</span>
|
|
<span class="identifier">style</span><span class="plain"> </span><span class="identifier">sheet</span><span class="plain"> {<</span><span class="identifier">quoted</span><span class="plain">-</span><span class="identifier">text</span><span class="plain">-</span><span class="identifier">without</span><span class="plain">-</span><span class="identifier">subs</span><span class="plain">>} | ==> </span><span class="constant">CSS_PAYLOAD</span>
|
|
<span class="identifier">javascript</span><span class="plain"> {<</span><span class="identifier">quoted</span><span class="plain">-</span><span class="identifier">text</span><span class="plain">-</span><span class="identifier">without</span><span class="plain">-</span><span class="identifier">subs</span><span class="plain">>} | ==> </span><span class="constant">JAVASCRIPT_PAYLOAD</span>
|
|
<span class="identifier">introductory</span><span class="plain"> </span><span class="identifier">booklet</span><span class="plain"> | ==> </span><span class="constant">BOOKLET_PAYLOAD</span>
|
|
<span class="identifier">introductory</span><span class="plain"> </span><span class="identifier">postcard</span><span class="plain"> | ==> </span><span class="constant">POSTCARD_PAYLOAD</span>
|
|
<span class="identifier">website</span><span class="plain"> | ==> </span><span class="constant">WEBSITE_PAYLOAD</span>
|
|
<span class="identifier">separate</span><span class="plain"> </span><span class="identifier">figures</span><span class="plain"> | ==> </span><span class="constant">SEPARATE_FIGURES_PAYLOAD</span>
|
|
<span class="identifier">separate</span><span class="plain"> </span><span class="identifier">sounds</span><span class="plain"> | ==> </span><span class="constant">SEPARATE_SOUNDS_PAYLOAD</span>
|
|
<span class="plain">{<</span><span class="identifier">quoted</span><span class="plain">-</span><span class="identifier">text</span><span class="plain">-</span><span class="identifier">without</span><span class="plain">-</span><span class="identifier">subs</span><span class="plain">>} </span><span class="identifier">website</span><span class="plain"> | ==> </span><span class="constant">THEMED_WEBSITE_PAYLOAD</span>
|
|
<span class="identifier">interpreter</span><span class="plain"> | ==> </span><span class="constant">INTERPRETER_PAYLOAD</span>
|
|
<span class="plain">{<</span><span class="identifier">quoted</span><span class="plain">-</span><span class="identifier">text</span><span class="plain">-</span><span class="identifier">without</span><span class="plain">-</span><span class="identifier">subs</span><span class="plain">>} </span><span class="identifier">interpreter</span><span class="plain"> ==> </span><span class="constant">THEMED_INTERPRETER_PAYLOAD</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP5_1"></a><b>§5.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Issue PM_NoSuchPublicRelease problem</span> <span class="cwebmacronumber">5.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="plain">*</span><span class="identifier">X</span><span class="plain"> = </span><span class="constant">BOOKLET_PAYLOAD</span><span class="plain">; </span> <span class="comment">to recover harmlessly</span>
|
|
<span class="identifier">Problems::quote_wording_as_source</span><span class="plain">(1, </span><span class="identifier">W</span><span class="plain">);</span>
|
|
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_NoSuchPublicRelease</span><span class="plain">));</span>
|
|
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
|
<span class="string">"I don't know how to release along with %1: the only features of "</span>
|
|
<span class="string">"a release which can be marked as public or private are the 'source "</span>
|
|
<span class="string">"text', 'solution' and 'library card'."</span><span class="plain">);</span>
|
|
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP5">§5</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6"></a><b>§6. </b>Three of the secret ingredients of a project which can be released, and can
|
|
optionally be marked "public" (they appear on any website about it) or
|
|
"private" (they don't).
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="plain"><</span><span class="identifier">privacy</span><span class="plain">-</span><span class="identifier">indicator</span><span class="plain">> ::=</span>
|
|
<span class="identifier">private</span><span class="plain"> |</span>
|
|
<span class="identifier">public</span>
|
|
|
|
<span class="plain"><</span><span class="identifier">exposed</span><span class="plain">-</span><span class="identifier">innards</span><span class="plain">> ::=</span>
|
|
<span class="identifier">solution</span><span class="plain"> |</span>
|
|
<span class="identifier">source</span><span class="plain"> </span><span class="identifier">text</span><span class="plain"> |</span>
|
|
<span class="identifier">library</span><span class="plain"> </span><span class="identifier">card</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b>And here is the handling code which uses the grammar above:
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">PL::Bibliographic::Release::release_along_with_SMF</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">task</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> *</span><span class="identifier">NPs</span><span class="plain">) {</span>
|
|
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">OW</span><span class="plain"> = (</span><span class="identifier">NPs</span><span class="plain">)?(</span><span class="identifier">NPs</span><span class="plain">[1]):</span><span class="identifier">EMPTY_WORDING</span><span class="plain">;</span>
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">task</span><span class="plain">) { </span> <span class="comment">"Use American dialect."</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">ACCEPT_SMFT</span><span class="plain">:</span>
|
|
<span class="identifier">ParseTree::annotate_int</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">verb_id_ANNOT</span><span class="plain">, </span><span class="identifier">SPECIAL_MEANING_VB</span><span class="plain">);</span>
|
|
<span class="plain"><</span><span class="identifier">nounphrase</span><span class="plain">-</span><span class="identifier">articled</span><span class="plain">-</span><span class="identifier">list</span><span class="plain">>(</span><span class="identifier">OW</span><span class="plain">);</span>
|
|
<span class="identifier">V</span><span class="plain">-</span><span class="element">>next</span><span class="plain"> = <<</span><span class="identifier">rp</span><span class="plain">>>;</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="identifier">TRAVERSE1_SMFT</span><span class="plain">:</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::handle_release_declaration_inner</span><span class="plain">(</span><span class="identifier">V</span><span class="plain">-</span><span class="element">>next</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function PL::Bibliographic::Release::release_along_with_SMF is used in <a href="#SP8">§8</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP8"></a><b>§8. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">PL::Bibliographic::Release::visit_to_quote</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) == </span><span class="identifier">SENTENCE_NT</span><span class="plain">) && (</span><span class="identifier">p</span><span class="plain">-></span><span class="identifier">down</span><span class="plain">)) {</span>
|
|
<span class="identifier">verb_meaning</span><span class="plain"> *</span><span class="identifier">vm</span><span class="plain"> = </span><span class="identifier">ParseTree::get_verb_meaning</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">-></span><span class="identifier">down</span><span class="plain">);</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">rev</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
|
<span class="identifier">special_meaning_fn</span><span class="plain"> </span><span class="identifier">soa</span><span class="plain"> = </span><span class="identifier">VerbMeanings::get_special_meaning</span><span class="plain">(</span><span class="identifier">vm</span><span class="plain">, &</span><span class="identifier">rev</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">soa</span><span class="plain"> == </span><span class="functiontext">PL::Bibliographic::Release::release_along_with_SMF</span><span class="plain">) {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<span class="identifier">Index::link_to</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">)), </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"status instruction ||"</span><span class="plain">);</span>
|
|
<span class="identifier">STREAM_COPY</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"||\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">PL::Bibliographic::Release::handle_release_declaration</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::handle_release_declaration_inner</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">-></span><span class="identifier">down</span><span class="plain">-</span><span class="element">>next</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">PL::Bibliographic::Release::handle_release_declaration_inner</span><span class="plain">(</span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::get_type</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">) == </span><span class="identifier">AND_NT</span><span class="plain">) {</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::handle_release_declaration_inner</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">-></span><span class="identifier">down</span><span class="plain">);</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::handle_release_declaration_inner</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">-></span><span class="identifier">down</span><span class="plain">-</span><span class="element">>next</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">p</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (<</span><span class="identifier">release</span><span class="plain">-</span><span class="identifier">sentence</span><span class="plain">-</span><span class="identifier">object</span><span class="plain">>(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">p</span><span class="plain">)))</span>
|
|
<<span class="cwebmacro">Respond to an individual release instruction</span> <span class="cwebmacronumber">8.1</span>>
|
|
<span class="reserved">else</span>
|
|
<<span class="cwebmacro">Issue a bad release instruction problem message</span> <span class="cwebmacronumber">8.2</span>><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function PL::Bibliographic::Release::visit_to_quote is used in <a href="#SP14_2_10">§14.2.10</a>.</p>
|
|
|
|
<p class="endnote">The function PL::Bibliographic::Release::handle_release_declaration appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function PL::Bibliographic::Release::handle_release_declaration_inner is used in <a href="#SP7">§7</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP8_1"></a><b>§8.1. </b>The items to release are called "payloads".
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">define</span> <span class="constant">SOLUTION_PAYLOAD</span><span class="plain"> 0</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">SOURCE_TEXT_PAYLOAD</span><span class="plain"> 1</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">LIBRARY_CARD_PAYLOAD</span><span class="plain"> 2</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">COVER_ART_PAYLOAD</span><span class="plain"> 3</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">EXISTING_STORY_FILE_PAYLOAD</span><span class="plain"> 4</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">AUXILIARY_FILE_PAYLOAD</span><span class="plain"> 5</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">BOOKLET_PAYLOAD</span><span class="plain"> 6</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">POSTCARD_PAYLOAD</span><span class="plain"> 7</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">WEBSITE_PAYLOAD</span><span class="plain"> 8</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">THEMED_WEBSITE_PAYLOAD</span><span class="plain"> 9</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">INTERPRETER_PAYLOAD</span><span class="plain"> 10</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">THEMED_INTERPRETER_PAYLOAD</span><span class="plain"> 11</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">HIDDEN_FILE_PAYLOAD</span><span class="plain"> 12</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">HIDDEN_FILE_IN_PAYLOAD</span><span class="plain"> 13</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">SEPARATE_FIGURES_PAYLOAD</span><span class="plain"> 14</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">SEPARATE_SOUNDS_PAYLOAD</span><span class="plain"> 15</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">CSS_PAYLOAD</span><span class="plain"> 16</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">JAVASCRIPT_PAYLOAD</span><span class="plain"> 17</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">NAMED_EXISTING_STORY_FILE_PAYLOAD</span><span class="plain"> 18</span>
|
|
</pre>
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Respond to an individual release instruction</span> <span class="cwebmacronumber">8.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">payload</span><span class="plain"> = <<</span><span class="identifier">r</span><span class="plain">>>;</span>
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">payload</span><span class="plain">) {</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">SOLUTION_PAYLOAD</span><span class="plain">:</span>
|
|
<span class="identifier">release_solution</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (<<</span><span class="identifier">privacy</span><span class="plain">>> != </span><span class="identifier">NOT_APPLICABLE</span><span class="plain">) </span><span class="identifier">solution_public</span><span class="plain"> = <<</span><span class="identifier">privacy</span><span class="plain">>>;</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">SOURCE_TEXT_PAYLOAD</span><span class="plain">:</span>
|
|
<span class="identifier">release_source</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (<<</span><span class="identifier">privacy</span><span class="plain">>> != </span><span class="identifier">NOT_APPLICABLE</span><span class="plain">) </span><span class="identifier">source_public</span><span class="plain"> = <<</span><span class="identifier">privacy</span><span class="plain">>>;</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">LIBRARY_CARD_PAYLOAD</span><span class="plain">:</span>
|
|
<span class="identifier">release_card</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (<<</span><span class="identifier">privacy</span><span class="plain">>> != </span><span class="identifier">NOT_APPLICABLE</span><span class="plain">) </span><span class="identifier">card_public</span><span class="plain"> = <<</span><span class="identifier">privacy</span><span class="plain">>>;</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">COVER_ART_PAYLOAD</span><span class="plain">:</span>
|
|
<span class="identifier">release_cover</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
|
<span class="identifier">cover_alt_text</span><span class="plain"> = <<</span><span class="identifier">alttext</span><span class="plain">>>;</span>
|
|
<span class="identifier">cover_filename_sentence</span><span class="plain"> = </span><span class="identifier">current_sentence</span><span class="plain">;</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">EXISTING_STORY_FILE_PAYLOAD</span><span class="plain">:</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">NAMED_EXISTING_STORY_FILE_PAYLOAD</span><span class="plain">:</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">VirtualMachines::is_16_bit</span><span class="plain">() == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">), </span> <span class="comment">not usefully testable</span>
|
|
<span class="string">"existing story files can only be used with the Z-machine"</span><span class="plain">,</span>
|
|
<span class="string">"not with the Glulx setting."</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">payload</span><span class="plain"> == </span><span class="constant">NAMED_EXISTING_STORY_FILE_PAYLOAD</span><span class="plain">) {</span>
|
|
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">SW</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="identifier">release</span><span class="plain">-</span><span class="identifier">sentence</span><span class="plain">-</span><span class="identifier">object</span><span class="plain">>, 1);</span>
|
|
<span class="identifier">Word::dequote</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">SW</span><span class="plain">));</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">, </span><span class="string">"%N"</span><span class="plain">, </span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">SW</span><span class="plain">));</span>
|
|
<span class="identifier">filename_of_existing_story_file</span><span class="plain"> =</span>
|
|
<span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">pathname_of_area</span><span class="plain">[</span><span class="identifier">MATERIALS_FS_AREA</span><span class="plain">], </span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">existing_story_file</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">AUXILIARY_FILE_PAYLOAD</span><span class="plain">: {</span>
|
|
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">DW</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="identifier">release</span><span class="plain">-</span><span class="identifier">sentence</span><span class="plain">-</span><span class="identifier">object</span><span class="plain">>, 1);</span>
|
|
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">LW</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="identifier">release</span><span class="plain">-</span><span class="identifier">sentence</span><span class="plain">-</span><span class="identifier">object</span><span class="plain">>, 2);</span>
|
|
<span class="identifier">Word::dequote</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">LW</span><span class="plain">));</span>
|
|
<span class="identifier">Word::dequote</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">DW</span><span class="plain">));</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">, </span><span class="string">"%N"</span><span class="plain">, </span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">LW</span><span class="plain">));</span>
|
|
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">A</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">pathname_of_area</span><span class="plain">[</span><span class="identifier">MATERIALS_FS_AREA</span><span class="plain">], </span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::create_aux_file</span><span class="plain">(</span><span class="identifier">A</span><span class="plain">,</span>
|
|
<span class="identifier">pathname_of_materials_release</span><span class="plain">,</span>
|
|
<span class="identifier">Lexer::word_text</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">DW</span><span class="plain">)),</span>
|
|
<span class="identifier">payload</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CSS_PAYLOAD</span><span class="plain">: </span><span class="reserved">case</span><span class="plain"> </span><span class="constant">JAVASCRIPT_PAYLOAD</span><span class="plain">: </span><span class="reserved">case</span><span class="plain"> </span><span class="constant">HIDDEN_FILE_PAYLOAD</span><span class="plain">: {</span>
|
|
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">LW</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="identifier">release</span><span class="plain">-</span><span class="identifier">sentence</span><span class="plain">-</span><span class="identifier">object</span><span class="plain">>, 1);</span>
|
|
<span class="identifier">Word::dequote</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">LW</span><span class="plain">));</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">, </span><span class="string">"%N"</span><span class="plain">, </span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">LW</span><span class="plain">));</span>
|
|
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">A</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">pathname_of_area</span><span class="plain">[</span><span class="identifier">MATERIALS_FS_AREA</span><span class="plain">], </span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::create_aux_file</span><span class="plain">(</span><span class="identifier">A</span><span class="plain">,</span>
|
|
<span class="identifier">pathname_of_materials_release</span><span class="plain">,</span>
|
|
<span class="identifier">L</span><span class="string">"--"</span><span class="plain">,</span>
|
|
<span class="identifier">payload</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">HIDDEN_FILE_IN_PAYLOAD</span><span class="plain">: {</span>
|
|
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">LW</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="identifier">release</span><span class="plain">-</span><span class="identifier">sentence</span><span class="plain">-</span><span class="identifier">object</span><span class="plain">>, 1);</span>
|
|
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">FW</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="identifier">release</span><span class="plain">-</span><span class="identifier">sentence</span><span class="plain">-</span><span class="identifier">object</span><span class="plain">>, 2);</span>
|
|
<span class="identifier">Word::dequote</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">LW</span><span class="plain">));</span>
|
|
<span class="identifier">Word::dequote</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">FW</span><span class="plain">));</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">, </span><span class="string">"%N"</span><span class="plain">, </span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">LW</span><span class="plain">));</span>
|
|
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">A</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">pathname_of_area</span><span class="plain">[</span><span class="identifier">MATERIALS_FS_AREA</span><span class="plain">], </span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">folder</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">folder</span><span class="plain">, </span><span class="string">"%N"</span><span class="plain">, </span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">FW</span><span class="plain">));</span>
|
|
<span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">Pathnames::subfolder</span><span class="plain">(</span><span class="identifier">pathname_of_materials_release</span><span class="plain">, </span><span class="identifier">folder</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">folder</span><span class="plain">);</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::create_aux_file</span><span class="plain">(</span><span class="identifier">A</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"--"</span><span class="plain">, </span><span class="identifier">payload</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">BOOKLET_PAYLOAD</span><span class="plain">: </span><span class="identifier">release_booklet</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">POSTCARD_PAYLOAD</span><span class="plain">: </span><span class="identifier">release_postcard</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">WEBSITE_PAYLOAD</span><span class="plain">: </span><span class="identifier">release_website</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">THEMED_WEBSITE_PAYLOAD</span><span class="plain">: {</span>
|
|
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">TW</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="identifier">release</span><span class="plain">-</span><span class="identifier">sentence</span><span class="plain">-</span><span class="identifier">object</span><span class="plain">>, 1);</span>
|
|
<span class="identifier">Word::dequote</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">TW</span><span class="plain">));</span>
|
|
<span class="identifier">website_template_leafname</span><span class="plain"> = </span><span class="identifier">Lexer::word_text</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">TW</span><span class="plain">));</span>
|
|
<span class="identifier">release_website</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">INTERPRETER_PAYLOAD</span><span class="plain">:</span>
|
|
<span class="identifier">release_interpreter</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">; </span><span class="identifier">release_website</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">THEMED_INTERPRETER_PAYLOAD</span><span class="plain">: {</span>
|
|
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">TW</span><span class="plain"> = </span><span class="identifier">GET_RW</span><span class="plain">(<</span><span class="identifier">release</span><span class="plain">-</span><span class="identifier">sentence</span><span class="plain">-</span><span class="identifier">object</span><span class="plain">>, 1);</span>
|
|
<span class="identifier">Word::dequote</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">TW</span><span class="plain">));</span>
|
|
<span class="identifier">interpreter_template_leafname</span><span class="plain"> = </span><span class="identifier">Lexer::word_text</span><span class="plain">(</span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">TW</span><span class="plain">));</span>
|
|
<span class="identifier">release_interpreter</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">; </span><span class="identifier">release_website</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">SEPARATE_FIGURES_PAYLOAD</span><span class="plain">:</span>
|
|
<span class="identifier">PL::Figures::write_copy_commands</span><span class="plain">();</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="constant">SEPARATE_SOUNDS_PAYLOAD</span><span class="plain">:</span>
|
|
<span class="identifier">PL::Sounds::write_copy_commands</span><span class="plain">();</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP8">§8</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP8_2"></a><b>§8.2. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Issue a bad release instruction problem message</span> <span class="cwebmacronumber">8.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">p</span><span class="plain">);</span>
|
|
<span class="identifier">Problems::Issue::handmade_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_ReleaseAlong</span><span class="plain">));</span>
|
|
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
|
|
<span class="string">"I don't know how to release along with %1: the only forms I can "</span>
|
|
<span class="string">"accept are - 'Release along with cover art', '...a website', "</span>
|
|
<span class="string">"'the solution', 'the library card', 'the introductory booklet', "</span>
|
|
<span class="string">"'the source text', 'an existing story file' or '...a file of "</span>
|
|
<span class="string">"\</span><span class="plain">"</span><span class="string">Something Useful\</span><span class="plain">"</span><span class="string"> called \</span><span class="plain">"</span><span class="string">Something.pdf\</span><span class="plain">"</span><span class="string">'."</span><span class="plain">);</span>
|
|
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP8">§8</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP9"></a><b>§9. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">auxiliary_file</span><span class="plain"> *</span><span class="functiontext">PL::Bibliographic::Release::create_aux_file</span><span class="plain">(</span><span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">,</span>
|
|
<span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">fold</span><span class="plain">, </span><span class="identifier">wchar_t</span><span class="plain"> *</span><span class="identifier">desc</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">payload</span><span class="plain">) {</span>
|
|
<span class="reserved">auxiliary_file</span><span class="plain"> *</span><span class="identifier">af</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">auxiliary_file</span><span class="plain">);</span>
|
|
<span class="identifier">af</span><span class="plain">-</span><span class="element">>name_of_original_file</span><span class="plain"> = </span><span class="identifier">name</span><span class="plain">;</span>
|
|
<span class="identifier">af</span><span class="plain">-</span><span class="element">>folder_to_release_to</span><span class="plain"> = </span><span class="identifier">fold</span><span class="plain">;</span>
|
|
<span class="identifier">af</span><span class="plain">-</span><span class="element">>brief_description</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">af</span><span class="plain">-</span><span class="element">>brief_description</span><span class="plain">, </span><span class="string">"%w"</span><span class="plain">, </span><span class="identifier">desc</span><span class="plain">);</span>
|
|
<span class="identifier">af</span><span class="plain">-</span><span class="element">>from_payload</span><span class="plain"> = </span><span class="identifier">payload</span><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">af</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function PL::Bibliographic::Release::create_aux_file is used in <a href="#SP8_1">§8.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10"></a><b>§10. </b>So much for taking down instructions; now we must act on them. In this
|
|
routine we combine writing the iFiction record and the release instructions —
|
|
done together since they have so much in common, being essentially two ways
|
|
of writing the same thing.
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">define</span> <span class="constant">LENGTH_OF_STORY_FILE_HEADER</span><span class="plain"> 0</span><span class="identifier">x40</span>
|
|
<span class="definitionkeyword">define</span> <span class="constant">zbyte</span><span class="plain"> </span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">char</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">PL::Bibliographic::Release::write_ifiction_and_blurb</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
|
<<span class="cwebmacro">Decide whether we need to create a Materials folder</span> <span class="cwebmacronumber">10.1</span>><span class="plain">;</span>
|
|
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">cover_picture_number</span><span class="plain"> = (</span><span class="identifier">release_cover</span><span class="plain">)?1:0;</span>
|
|
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">cover_art_format</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">width</span><span class="plain"> = 0, </span><span class="identifier">height</span><span class="plain"> = 0;</span>
|
|
<<span class="cwebmacro">Check cover art image if any</span> <span class="cwebmacronumber">10.2</span>><span class="plain">;</span>
|
|
|
|
<span class="constant">zbyte</span><span class="plain"> </span><span class="identifier">header</span><span class="plain">[</span><span class="constant">LENGTH_OF_STORY_FILE_HEADER</span><span class="plain">]; </span> <span class="comment">a sequence of bytes, not a C string</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">existing_story_file</span><span class="plain">) </span><<span class="cwebmacro">Read header of existing story file if present</span> <span class="cwebmacronumber">10.3</span>>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><<span class="cwebmacro">Finally, write out our three metadata files</span> <span class="cwebmacronumber">10.4</span>><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function PL::Bibliographic::Release::write_ifiction_and_blurb appears nowhere else.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_1"></a><b>§10.1. </b>Until March 2010, Materials folders weren't needed for very simple releases;
|
|
but they were needed for absolutely everything else. In the end we simplified
|
|
matters by always releasing to a Materials folder, though the advent of
|
|
application sandboxing in Mac OS X in 2012 may force us to revisit this.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Decide whether we need to create a Materials folder</span> <span class="cwebmacronumber">10.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">create_Materials</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">; </span> <span class="comment">thus making the next condition irrelevant</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">release_website</span><span class="plain">) || (</span><span class="identifier">release_interpreter</span><span class="plain">) || (</span><span class="identifier">release_booklet</span><span class="plain">) || (</span><span class="identifier">release_postcard</span><span class="plain">) ||</span>
|
|
<span class="plain">(</span><span class="identifier">release_cover</span><span class="plain">) || (</span><span class="identifier">release_source</span><span class="plain">) || (</span><span class="identifier">release_card</span><span class="plain">) || (</span><span class="identifier">release_solution</span><span class="plain">) ||</span>
|
|
<span class="plain">(</span><span class="identifier">existing_story_file</span><span class="plain">) || (</span><span class="identifier">NUMBER_CREATED</span><span class="plain">(</span><span class="identifier">blorb_figure</span><span class="plain">) > 1)) {</span>
|
|
<span class="identifier">create_Materials</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">create_Materials</span><span class="plain">) {</span>
|
|
<<span class="cwebmacro">Create the Materials folder if not already present</span> <span class="cwebmacronumber">10.1.1</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Create the Release subfolder if not already present</span> <span class="cwebmacronumber">10.1.2</span>><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_interpreter</span><span class="plain">) </span><<span class="cwebmacro">Create the Interpreter subfolder if not already present</span> <span class="cwebmacronumber">10.1.3</span>><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10">§10</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_1_1"></a><b>§10.1.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Create the Materials folder if not already present</span> <span class="cwebmacronumber">10.1.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Pathnames::create_in_file_system</span><span class="plain">(</span><span class="identifier">pathname_of_area</span><span class="plain">[</span><span class="identifier">MATERIALS_FS_AREA</span><span class="plain">]) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::Issue::release_problem_path</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
|
<span class="string">"In order to release the story file along with other "</span>
|
|
<span class="string">"resources, I tried to create a folder alongside this "</span>
|
|
<span class="string">"Inform project, but was unable to do so. The folder "</span>
|
|
<span class="string">"was to have been called"</span><span class="plain">,</span>
|
|
<span class="identifier">pathname_of_area</span><span class="plain">[</span><span class="identifier">MATERIALS_FS_AREA</span><span class="plain">]);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10_1">§10.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_1_2"></a><b>§10.1.2. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Create the Release subfolder if not already present</span> <span class="cwebmacronumber">10.1.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Pathnames::create_in_file_system</span><span class="plain">(</span><span class="identifier">pathname_of_materials_release</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::Issue::release_problem_path</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
|
<span class="string">"In order to release the story file along with other "</span>
|
|
<span class="string">"resources, I tried to create a folder alongside this "</span>
|
|
<span class="string">"Inform project, but was unable to do so. The folder "</span>
|
|
<span class="string">"was to have been called"</span><span class="plain">,</span>
|
|
<span class="identifier">pathname_of_materials_release</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">auxiliary_file</span><span class="plain"> *</span><span class="identifier">af</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">af</span><span class="plain">, </span><span class="reserved">auxiliary_file</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Pathnames::create_in_file_system</span><span class="plain">(</span><span class="identifier">af</span><span class="plain">-</span><span class="element">>folder_to_release_to</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::Issue::release_problem_path</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
|
<span class="string">"In order to release the story file along with other "</span>
|
|
<span class="string">"resources, I tried to create a folder alongside this "</span>
|
|
<span class="string">"Inform project, but was unable to do so. The folder "</span>
|
|
<span class="string">"was to have been called"</span><span class="plain">,</span>
|
|
<span class="identifier">af</span><span class="plain">-</span><span class="element">>folder_to_release_to</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10_1">§10.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_1_3"></a><b>§10.1.3. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Create the Interpreter subfolder if not already present</span> <span class="cwebmacronumber">10.1.3</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Pathnames::create_in_file_system</span><span class="plain">(</span><span class="identifier">pathname_of_released_interpreter</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::Issue::release_problem_path</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
|
<span class="string">"In order to release the story file along with an "</span>
|
|
<span class="string">"interpreter, I tried to create a folder alongside this "</span>
|
|
<span class="string">"Inform project, but was unable to do so. The folder "</span>
|
|
<span class="string">"was to have been called"</span><span class="plain">,</span>
|
|
<span class="identifier">pathname_of_released_interpreter</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10_1">§10.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_2"></a><b>§10.2. </b>Using the utility routines above, we find out the format of the cover
|
|
art and see that its dimensions conform to Treaty of Babel requirements.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Check cover art image if any</span> <span class="cwebmacronumber">10.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_cover</span><span class="plain">) {</span>
|
|
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">cover_filename_sentence</span><span class="plain">;</span>
|
|
<span class="identifier">cover_art_format</span><span class="plain"> = </span><span class="string">""</span><span class="plain">;</span>
|
|
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">cover_filename</span><span class="plain"> = </span><span class="identifier">filename_of_large_cover_art_jpeg</span><span class="plain">;</span>
|
|
<span class="reserved">FILE</span><span class="plain"> *</span><span class="identifier">COVER_FILE</span><span class="plain"> = </span><span class="identifier">Filenames::fopen</span><span class="plain">(</span><span class="identifier">cover_filename</span><span class="plain">, </span><span class="string">"rb"</span><span class="plain"> );</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">COVER_FILE</span><span class="plain">) </span><<span class="cwebmacro">The cover seems to be a JPEG</span> <span class="cwebmacronumber">10.2.1</span>>
|
|
<span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">cover_filename</span><span class="plain"> = </span><span class="identifier">filename_of_large_cover_art_png</span><span class="plain">;</span>
|
|
<span class="identifier">COVER_FILE</span><span class="plain"> = </span><span class="identifier">Filenames::fopen</span><span class="plain">(</span><span class="identifier">cover_filename</span><span class="plain">, </span><span class="string">"rb"</span><span class="plain"> );</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">COVER_FILE</span><span class="plain">) </span><<span class="cwebmacro">The cover seems to be a PNG</span> <span class="cwebmacronumber">10.2.2</span>>
|
|
<span class="reserved">else</span><span class="plain"> </span><<span class="cwebmacro">There seems to be no cover at all</span> <span class="cwebmacronumber">10.2.3</span>><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<<span class="cwebmacro">Check that the pixel height and width are sensible</span> <span class="cwebmacronumber">10.2.4</span>><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10">§10</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_2_1"></a><b>§10.2.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">The cover seems to be a JPEG</span> <span class="cwebmacronumber">10.2.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">cover_art_format</span><span class="plain"> = </span><span class="string">"jpg"</span><span class="plain">;</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">rv</span><span class="plain"> = </span><span class="identifier">ImageFiles::get_JPEG_dimensions</span><span class="plain">(</span><span class="identifier">COVER_FILE</span><span class="plain">, &</span><span class="identifier">width</span><span class="plain">, &</span><span class="identifier">height</span><span class="plain">);</span>
|
|
<span class="identifier">fclose</span><span class="plain">(</span><span class="identifier">COVER_FILE</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rv</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::Issue::release_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
|
<span class="string">"The cover image seems not to be a JPEG despite the name"</span><span class="plain">,</span>
|
|
<span class="identifier">cover_filename</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10_2">§10.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_2_2"></a><b>§10.2.2. </b><code class="display">
|
|
<<span class="cwebmacrodefn">The cover seems to be a PNG</span> <span class="cwebmacronumber">10.2.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">cover_art_format</span><span class="plain"> = </span><span class="string">"png"</span><span class="plain">;</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">rv</span><span class="plain"> = </span><span class="identifier">ImageFiles::get_PNG_dimensions</span><span class="plain">(</span><span class="identifier">COVER_FILE</span><span class="plain">, &</span><span class="identifier">width</span><span class="plain">, &</span><span class="identifier">height</span><span class="plain">);</span>
|
|
<span class="identifier">fclose</span><span class="plain">(</span><span class="identifier">COVER_FILE</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rv</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::Issue::release_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
|
<span class="string">"The cover image seems not to be a PNG despite the name"</span><span class="plain">,</span>
|
|
<span class="identifier">cover_filename</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10_2">§10.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_2_3"></a><b>§10.2.3. </b><code class="display">
|
|
<<span class="cwebmacrodefn">There seems to be no cover at all</span> <span class="cwebmacronumber">10.2.3</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">Problems::Issue::release_problem_at_sentence</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
|
<span class="string">"The release instructions said that there is a cover image "</span>
|
|
<span class="string">"to attach to the story file, but I was unable to find it, "</span>
|
|
<span class="string">"having looked for both 'Cover.png' and 'Cover.jpg' in the "</span>
|
|
<span class="string">"'.materials' folder for this project"</span><span class="plain">, </span><span class="identifier">cover_filename</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10_2">§10.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_2_4"></a><b>§10.2.4. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Check that the pixel height and width are sensible</span> <span class="cwebmacronumber">10.2.4</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">width</span><span class="plain"> < 120) || (</span><span class="identifier">width</span><span class="plain"> > 1200) || (</span><span class="identifier">height</span><span class="plain"> < 120) || (</span><span class="identifier">height</span><span class="plain"> > 1200)) {</span>
|
|
<span class="identifier">Problems::Issue::release_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
|
<span class="string">"The height and width of the cover image, in pixels, must be "</span>
|
|
<span class="string">"between 120 and 1024 inclusive"</span><span class="plain">,</span>
|
|
<span class="identifier">cover_filename</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">width</span><span class="plain"> > 2*</span><span class="identifier">height</span><span class="plain">) || (</span><span class="identifier">height</span><span class="plain"> > 2*</span><span class="identifier">width</span><span class="plain">)) {</span>
|
|
<span class="identifier">Problems::Issue::release_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">Untestable</span><span class="plain">),</span>
|
|
<span class="string">"We recommend a square cover image, but at any rate it is "</span>
|
|
<span class="string">"required to be no more rectangular than twice as wide as it "</span>
|
|
<span class="string">"is high (or vice versa)"</span><span class="plain">,</span>
|
|
<span class="identifier">cover_filename</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10_2">§10.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_3"></a><b>§10.3. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Read header of existing story file if present</span> <span class="cwebmacronumber">10.3</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">this_is_a_release_compile</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
|
<<span class="cwebmacro">Issue a problem if this isn't a Release run</span> <span class="cwebmacronumber">10.3.1</span>><span class="character">;</span>
|
|
<span class="reserved">FILE</span><span class="plain"> *</span><span class="identifier">STORYF</span><span class="plain"> = </span><span class="identifier">Filenames::fopen</span><span class="plain">(</span><span class="identifier">filename_of_existing_story_file</span><span class="plain">, </span><span class="string">"rb"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">STORYF</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::Issue::unlocated_problem_on_file</span><span class="plain">(</span>
|
|
<span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">BelievedImpossible</span><span class="plain">), </span> <span class="comment">i.e., not testable by intest</span>
|
|
<span class="string">"The instruction 'Release along with an existing story file' "</span>
|
|
<span class="string">"means that I need to bind up a story file called '%1', in "</span>
|
|
<span class="string">"the .materials folder for this project. But it doesn't seem "</span>
|
|
<span class="string">"to be there."</span><span class="plain">, </span><span class="identifier">filename_of_existing_story_file</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">;</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="constant">LENGTH_OF_STORY_FILE_HEADER</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">c</span><span class="plain"> = </span><span class="identifier">fgetc</span><span class="plain">(</span><span class="identifier">STORYF</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain"> == </span><span class="identifier">EOF</span><span class="plain">) </span><span class="identifier">header</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = 0;</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">header</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = (</span><span class="constant">zbyte</span><span class="plain">) </span><span class="identifier">c</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">fclose</span><span class="plain">(</span><span class="identifier">STORYF</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10">§10</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_3_1"></a><b>§10.3.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Issue a problem if this isn't a Release run</span> <span class="cwebmacronumber">10.3.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">Problems::Issue::unlocated_problem</span><span class="plain">(</span><span class="identifier">_p_</span><span class="plain">(</span><span class="identifier">PM_UnreleasedRelease</span><span class="plain">),</span>
|
|
<span class="string">"This is supposed to be a source text which only contains "</span>
|
|
<span class="string">"release instructions to bind up an existing story file "</span>
|
|
<span class="string">"(for instance, one produced using Inform 6). That's because "</span>
|
|
<span class="string">"the instruction 'Release along with an existing story file' "</span>
|
|
<span class="string">"is present. So the only way to build the project is to use "</span>
|
|
<span class="string">"the Release option - not, for instance, Go or Replay, because "</span>
|
|
<span class="string">"it would make no sense to translate the source text into "</span>
|
|
<span class="string">"something to play. (Of course, you can play the released "</span>
|
|
<span class="string">"story file using an interpreter such as Zoom or Windows "</span>
|
|
<span class="string">"Frotz, etc.: just not here, within Inform.)"</span><span class="plain">);</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10_3">§10.3</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_4"></a><b>§10.4. </b>That's it for the preliminaries: time to do some actual work.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Finally, write out our three metadata files</span> <span class="cwebmacronumber">10.4</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<<span class="cwebmacro">Write iFiction record</span> <span class="cwebmacronumber">10.4.1</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Write release blurb</span> <span class="cwebmacronumber">10.4.2</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Write manifest file</span> <span class="cwebmacronumber">10.4.3</span>><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10">§10</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_4_1"></a><b>§10.4.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write iFiction record</span> <span class="cwebmacronumber">10.4.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">text_stream</span><span class="plain"> </span><span class="identifier">xf_struct</span><span class="plain">; </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">xf</span><span class="plain"> = &</span><span class="identifier">xf_struct</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">STREAM_OPEN_TO_FILE</span><span class="plain">(</span><span class="identifier">xf</span><span class="plain">, </span><span class="identifier">filename_of_ifiction_record</span><span class="plain">, </span><span class="identifier">UTF8_ENC</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
|
<span class="identifier">Problems::Fatal::filename_related</span><span class="plain">(</span><span class="string">"Can't open metadata file"</span><span class="plain">, </span><span class="identifier">filename_of_ifiction_record</span><span class="plain">);</span>
|
|
<span class="identifier">BEGIN_COMPILATION_MODE</span><span class="plain">;</span>
|
|
<span class="identifier">COMPILATION_MODE_ENTER</span><span class="plain">(</span><span class="identifier">COMPILE_TEXT_TO_XML_CMODE</span><span class="plain">);</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::write_ifiction_record</span><span class="plain">(</span><span class="identifier">xf</span><span class="plain">, </span><span class="identifier">header</span><span class="plain">, </span><span class="identifier">cover_picture_number</span><span class="plain">, </span><span class="identifier">cover_art_format</span><span class="plain">, </span><span class="identifier">height</span><span class="plain">, </span><span class="identifier">width</span><span class="plain">);</span>
|
|
<span class="identifier">END_COMPILATION_MODE</span><span class="plain">;</span>
|
|
<span class="identifier">STREAM_CLOSE</span><span class="plain">(</span><span class="identifier">xf</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10_4">§10.4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_4_2"></a><b>§10.4.2. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write release blurb</span> <span class="cwebmacronumber">10.4.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">text_stream</span><span class="plain"> </span><span class="identifier">xf_struct</span><span class="plain">; </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">xf</span><span class="plain"> = &</span><span class="identifier">xf_struct</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">STREAM_OPEN_TO_FILE</span><span class="plain">(</span><span class="identifier">xf</span><span class="plain">, </span><span class="identifier">filename_of_blurb</span><span class="plain">, </span><span class="identifier">UTF8_ENC</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
|
<span class="identifier">Problems::Fatal::filename_related</span><span class="plain">(</span><span class="string">"Can't open blurb file"</span><span class="plain">, </span><span class="identifier">filename_of_blurb</span><span class="plain">);</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::write_release_blurb</span><span class="plain">(</span><span class="identifier">xf</span><span class="plain">, </span><span class="identifier">cover_picture_number</span><span class="plain">, </span><span class="identifier">cover_art_format</span><span class="plain">);</span>
|
|
<span class="identifier">STREAM_CLOSE</span><span class="plain">(</span><span class="identifier">xf</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10_4">§10.4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10_4_3"></a><b>§10.4.3. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write manifest file</span> <span class="cwebmacronumber">10.4.3</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">text_stream</span><span class="plain"> </span><span class="identifier">xf_struct</span><span class="plain">; </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">xf</span><span class="plain"> = &</span><span class="identifier">xf_struct</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">STREAM_OPEN_TO_FILE</span><span class="plain">(</span><span class="identifier">xf</span><span class="plain">, </span><span class="identifier">filename_of_manifest</span><span class="plain">, </span><span class="identifier">UTF8_ENC</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
|
<span class="identifier">Problems::Fatal::filename_related</span><span class="plain">(</span><span class="string">"Can't open manifest file"</span><span class="plain">, </span><span class="identifier">filename_of_manifest</span><span class="plain">);</span>
|
|
<span class="identifier">PL::Figures::write_picture_manifest</span><span class="plain">(</span><span class="identifier">xf</span><span class="plain">, </span><span class="identifier">release_cover</span><span class="plain">, </span><span class="identifier">cover_art_format</span><span class="plain">);</span>
|
|
<span class="identifier">STREAM_CLOSE</span><span class="plain">(</span><span class="identifier">xf</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP10_4">§10.4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11"></a><b>§11. </b>For the format of this file, see the Treaty of Babel.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">PL::Bibliographic::Release::write_ifiction_record</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="constant">zbyte</span><span class="plain"> *</span><span class="identifier">header</span><span class="plain">,</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">cover_picture_number</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">cover_art_format</span><span class="plain">,</span>
|
|
<span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">height</span><span class="plain">, </span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">width</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<?xml version=\</span><span class="plain">"</span><span class="string">1.0\</span><span class="plain">"</span><span class="string"> encoding=\</span><span class="plain">"</span><span class="string">UTF-8\</span><span class="plain">"</span><span class="string">?>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<ifindex version=\</span><span class="plain">"</span><span class="string">1.0\</span><span class="plain">"</span><span class="string"> "</span>
|
|
<span class="string">"xmlns=\</span><span class="plain">"</span><span class="string">http://babel.ifarchive.org/protocol/iFiction/\</span><span class="plain">"</span><span class="string">>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="identifier">INDENT</span><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<story>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="identifier">INDENT</span><span class="plain">;</span>
|
|
<<span class="cwebmacro">Write the body of the iFiction record</span> <span class="cwebmacronumber">11.1</span>><span class="plain">;</span>
|
|
<span class="identifier">OUTDENT</span><span class="plain">; </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</story>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">OUTDENT</span><span class="plain">; </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</ifindex>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function PL::Bibliographic::Release::write_ifiction_record is used in <a href="#SP10_4_1">§10.4.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11_1"></a><b>§11.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write the body of the iFiction record</span> <span class="cwebmacronumber">11.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">story_format</span><span class="plain"> = </span><span class="string">"zcode"</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">story_filename_extension</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"ulx"</span><span class="plain">)) </span><span class="identifier">story_format</span><span class="plain"> = </span><span class="string">"glulx"</span><span class="plain">;</span>
|
|
|
|
<<span class="cwebmacro">Write the identification tag of the iFiction record</span> <span class="cwebmacronumber">11.1.1</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Write the bibliographic tag of the iFiction record</span> <span class="cwebmacronumber">11.1.2</span>><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">NUMBER_CREATED</span><span class="plain">(</span><span class="reserved">auxiliary_file</span><span class="plain">) > 0)</span>
|
|
<<span class="cwebmacro">Write the resources tag of the iFiction record</span> <span class="cwebmacronumber">11.1.3</span>><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_cover</span><span class="plain">)</span>
|
|
<<span class="cwebmacro">Write the cover tag of the iFiction record</span> <span class="cwebmacronumber">11.1.4</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Write the releases tag of the iFiction record</span> <span class="cwebmacronumber">11.1.5</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Write the colophon tag of the iFiction record</span> <span class="cwebmacronumber">11.1.6</span>><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<%s>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">story_format</span><span class="plain">); </span><span class="identifier">INDENT</span><span class="plain">;</span>
|
|
<<span class="cwebmacro">Write the format-specific tag of the iFiction record</span> <span class="cwebmacronumber">11.1.7</span>><span class="plain">;</span>
|
|
<span class="identifier">OUTDENT</span><span class="plain">; </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</%s>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">story_format</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP11">§11</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11_1_1"></a><b>§11.1.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write the identification tag of the iFiction record</span> <span class="cwebmacronumber">11.1.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<identification>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="identifier">INDENT</span><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<ifid>%S</ifid>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="functiontext">PL::Bibliographic::IFID::read_uuid</span><span class="plain">());</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">existing_story_file</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<ifid>ZCODE-%d-%c%c%c%c%c%c"</span><span class="plain">,</span>
|
|
<span class="identifier">header</span><span class="plain">[2]*256+</span><span class="identifier">header</span><span class="plain">[3],</span>
|
|
<span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x12</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x13</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x14</span><span class="plain">],</span>
|
|
<span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x15</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x16</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x17</span><span class="plain">]);</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x12</span><span class="plain">] != </span><span class="character">'8'</span><span class="plain">) || (</span><span class="identifier">Characters::isdigit</span><span class="plain">(</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x12</span><span class="plain">])))</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"-%04x"</span><span class="plain">, </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x1c</span><span class="plain">]*256 + </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x1d</span><span class="plain">]);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</ifid>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<format>%s</format>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">story_format</span><span class="plain">);</span>
|
|
<span class="identifier">OUTDENT</span><span class="plain">; </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</identification>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP11_1">§11.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11_1_2"></a><b>§11.1.2. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write the bibliographic tag of the iFiction record</span> <span class="cwebmacronumber">11.1.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<bibliographic>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="identifier">INDENT</span><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<title>"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">PL::Bibliographic::Release::write_var_to_XML</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">story_title_VAR</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"Untitled"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</title>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<author>"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">PL::Bibliographic::Release::write_var_to_XML</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">story_author_VAR</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"Anonymous"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</author>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<headline>"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">PL::Bibliographic::Release::write_var_to_XML</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">story_headline_VAR</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"An Interactive Fiction"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</headline>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<genre>"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">PL::Bibliographic::Release::write_var_to_XML</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">story_genre_VAR</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"Fiction"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</genre>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<firstpublished>"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">PL::Bibliographic::Release::write_var_to_XML</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">story_creation_year_VAR</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%d"</span><span class="plain">, (</span><span class="identifier">the_present</span><span class="plain">-></span><span class="identifier">tm_year</span><span class="plain">)+1900);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</firstpublished>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">NonlocalVariables::has_initial_value_set</span><span class="plain">(</span><span class="identifier">story_description_VAR</span><span class="plain">)) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<description>"</span><span class="plain">);</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::write_var_to_XML</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">story_description_VAR</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</description>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<language>"</span><span class="plain">);</span>
|
|
<span class="identifier">NaturalLanguages::write_language_code</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">language_of_play</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</language>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<group>Inform</group>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">episode_number</span><span class="plain"> >= 0) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<seriesnumber>%d</seriesnumber>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">episode_number</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<series>%w</series>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">series_name</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">OUTDENT</span><span class="plain">; </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</bibliographic>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP11_1">§11.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11_1_3"></a><b>§11.1.3. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write the resources tag of the iFiction record</span> <span class="cwebmacronumber">11.1.3</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">auxiliary_file</span><span class="plain"> *</span><span class="identifier">af</span><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<resources>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="identifier">INDENT</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">af</span><span class="plain">, </span><span class="reserved">auxiliary_file</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<auxiliary>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="identifier">INDENT</span><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<leafname>"</span><span class="plain">);</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">);</span>
|
|
<span class="identifier">Filenames::to_text_relative</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">, </span><span class="identifier">af</span><span class="plain">-</span><span class="element">>name_of_original_file</span><span class="plain">, </span><span class="identifier">pathname_of_area</span><span class="plain">[</span><span class="identifier">MATERIALS_FS_AREA</span><span class="plain">]);</span>
|
|
<span class="identifier">HTMLFiles::write_xml_safe_text</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">rel</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</leafname>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">af</span><span class="plain">-</span><span class="element">>brief_description</span><span class="plain">) > 0) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<description>"</span><span class="plain">);</span>
|
|
<span class="identifier">HTMLFiles::write_xml_safe_text</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">af</span><span class="plain">-</span><span class="element">>brief_description</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</description>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">OUTDENT</span><span class="plain">; </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</auxiliary>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">OUTDENT</span><span class="plain">; </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</resources>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP11_1">§11.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11_1_4"></a><b>§11.1.4. </b>The <code class="display"><span class="extract"><description></span></code> key here was added in version 8 of the Treaty of Babel,
|
|
in February 2014.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Write the cover tag of the iFiction record</span> <span class="cwebmacronumber">11.1.4</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<cover>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="identifier">INDENT</span><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<format>%s</format>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">cover_art_format</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<height>%d</height>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">height</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<width>%d</width>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">width</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cover_alt_text</span><span class="plain"> >= 0) {</span>
|
|
<span class="identifier">Word::dequote</span><span class="plain">(</span><span class="identifier">cover_alt_text</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<description>%N</description>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">cover_alt_text</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<description>%w</description>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">PL::Figures::description_of_cover_art</span><span class="plain">());</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">OUTDENT</span><span class="plain">; </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</cover>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP11_1">§11.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11_1_5"></a><b>§11.1.5. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write the releases tag of the iFiction record</span> <span class="cwebmacronumber">11.1.5</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<releases>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="identifier">INDENT</span><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<attached>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="identifier">INDENT</span><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<release>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="identifier">INDENT</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">existing_story_file</span><span class="plain">) </span><<span class="cwebmacro">Write release data for an existing story file</span> <span class="cwebmacronumber">11.1.5.1</span>>
|
|
<span class="reserved">else</span><span class="plain"> </span><<span class="cwebmacro">Write release data for an Inform 7 project</span> <span class="cwebmacronumber">11.1.5.2</span>><span class="plain">;</span>
|
|
<span class="identifier">OUTDENT</span><span class="plain">; </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</release>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">OUTDENT</span><span class="plain">; </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</attached>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">OUTDENT</span><span class="plain">; </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</releases>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP11_1">§11.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11_1_5_1"></a><b>§11.1.5.1. </b>ZILCH was Infocom's in-house compiler of Z-machine story files, and prior
|
|
to Inform the only one to exist. Inform differs from it in using the last four
|
|
bytes of the header to store its own version number.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">(The following code will be incorrect on 1 January 2080.)
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Write release data for an existing story file</span> <span class="cwebmacronumber">11.1.5.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<releasedate>%s%c%c-%c%c-%c%c</releasedate>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="plain">((</span><span class="identifier">Characters::isdigit</span><span class="plain">(</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x12</span><span class="plain">])) &&</span>
|
|
<span class="plain">(</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x12</span><span class="plain">] != </span><span class="character">'8'</span><span class="plain">) && (</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x12</span><span class="plain">] != </span><span class="character">'9'</span><span class="plain">))?</span><span class="string">"20"</span><span class="plain">:</span><span class="string">"19"</span><span class="plain">,</span>
|
|
<span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x12</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x13</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x14</span><span class="plain">],</span>
|
|
<span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x15</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x16</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x17</span><span class="plain">]);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<version>%d</version>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">header</span><span class="plain">[2]*256+</span><span class="identifier">header</span><span class="plain">[3]);</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Characters::isdigit</span><span class="plain">(</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3c</span><span class="plain">])) &&</span>
|
|
<span class="plain">((</span><span class="identifier">Characters::isdigit</span><span class="plain">(</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3d</span><span class="plain">])) || (</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3d</span><span class="plain">] == </span><span class="character">'.'</span><span class="plain">)) &&</span>
|
|
<span class="plain">(</span><span class="identifier">Characters::isdigit</span><span class="plain">(</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3e</span><span class="plain">])) && (</span><span class="identifier">Characters::isdigit</span><span class="plain">(</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3f</span><span class="plain">]))) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3d</span><span class="plain">] == </span><span class="character">'.'</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<compiler>Inform 6</compiler>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<compilerversion>%c%c%c%c</compilerversion>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3c</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3d</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3e</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3f</span><span class="plain">]);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<compiler>Inform 1-5</compiler>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<compilerversion>%c%c%c%c</compilerversion>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3c</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3d</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3e</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3f</span><span class="plain">]);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<compiler>ZILCH</compiler>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<compilerversion>%d</compilerversion>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x00</span><span class="plain">]);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP11_1_5">§11.1.5</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11_1_5_2"></a><b>§11.1.5.2. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write release data for an Inform 7 project</span> <span class="cwebmacronumber">11.1.5.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<releasedate>%04d-%02d-%02d</releasedate>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="plain">(</span><span class="identifier">the_present</span><span class="plain">-></span><span class="identifier">tm_year</span><span class="plain">)+1900, (</span><span class="identifier">the_present</span><span class="plain">-></span><span class="identifier">tm_mon</span><span class="plain">)+1, </span><span class="identifier">the_present</span><span class="plain">-></span><span class="identifier">tm_mday</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">story_release_number_VAR</span><span class="plain"> != </span><span class="identifier">NULL</span><span class="plain">) &&</span>
|
|
<span class="plain">(</span><span class="identifier">NonlocalVariables::has_initial_value_set</span><span class="plain">(</span><span class="identifier">story_release_number_VAR</span><span class="plain">))) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<version>"</span><span class="plain">);</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::write_var_to_XML</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">story_release_number_VAR</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</version>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<version>1</version>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<compiler>Inform 7</compiler>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<compilerversion>%B (build %B)</compilerversion>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP11_1_5">§11.1.5</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11_1_6"></a><b>§11.1.6. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write the colophon tag of the iFiction record</span> <span class="cwebmacronumber">11.1.6</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<colophon>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="identifier">INDENT</span><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<generator>Inform 7</generator>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<generatorversion>%B (build %B)</generatorversion>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<originated>20%02d-%02d-%02d</originated>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="plain">(</span><span class="identifier">the_present</span><span class="plain">-></span><span class="identifier">tm_year</span><span class="plain">)-100, (</span><span class="identifier">the_present</span><span class="plain">-></span><span class="identifier">tm_mon</span><span class="plain">)+1, </span><span class="identifier">the_present</span><span class="plain">-></span><span class="identifier">tm_mday</span><span class="plain">);</span>
|
|
<span class="identifier">OUTDENT</span><span class="plain">; </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</colophon>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP11_1">§11.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11_1_7"></a><b>§11.1.7. </b>ZIL was Infocom's in-house language, a variant of MDL which in turn resembled
|
|
LISP.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Write the format-specific tag of the iFiction record</span> <span class="cwebmacronumber">11.1.7</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">existing_story_file</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<serial>%c%c%c%c%c%c</serial>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x12</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x13</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x14</span><span class="plain">],</span>
|
|
<span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x15</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x16</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x17</span><span class="plain">]);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<release>%d</release>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">header</span><span class="plain">[2]*256+</span><span class="identifier">header</span><span class="plain">[3]);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<checksum>%04x</checksum>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x1c</span><span class="plain">]*256 + </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x1d</span><span class="plain">]);</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">Characters::isdigit</span><span class="plain">(</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3c</span><span class="plain">])) &&</span>
|
|
<span class="plain">((</span><span class="identifier">Characters::isdigit</span><span class="plain">(</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3d</span><span class="plain">])) || (</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3d</span><span class="plain">] == </span><span class="character">'.'</span><span class="plain">)) &&</span>
|
|
<span class="plain">(</span><span class="identifier">Characters::isdigit</span><span class="plain">(</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3e</span><span class="plain">])) && (</span><span class="identifier">Characters::isdigit</span><span class="plain">(</span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3f</span><span class="plain">]))) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<compiler>Inform v%c%c%c%c</compiler>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3c</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3d</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3e</span><span class="plain">], </span><span class="identifier">header</span><span class="plain">[0</span><span class="identifier">x3f</span><span class="plain">]);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<compiler>Infocom ZIL</compiler>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<serial>%02d%02d%02d</serial>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="plain">(</span><span class="identifier">the_present</span><span class="plain">-></span><span class="identifier">tm_year</span><span class="plain">)-100, (</span><span class="identifier">the_present</span><span class="plain">-></span><span class="identifier">tm_mon</span><span class="plain">)+1, </span><span class="identifier">the_present</span><span class="plain">-></span><span class="identifier">tm_mday</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">story_release_number_VAR</span><span class="plain"> != </span><span class="identifier">NULL</span><span class="plain">) &&</span>
|
|
<span class="plain">(</span><span class="identifier">NonlocalVariables::has_initial_value_set</span><span class="plain">(</span><span class="identifier">story_release_number_VAR</span><span class="plain">))) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<release>"</span><span class="plain">);</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::write_var_to_XML</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">story_release_number_VAR</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</release>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<release>1</release>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<compiler>Inform %B (build %B)</compiler>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_cover</span><span class="plain">)</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<coverpicture>%d</coverpicture>\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">cover_picture_number</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP11_1">§11.1</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP12"></a><b>§12. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">PL::Bibliographic::Release::write_var_to_XML</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">nonlocal_variable</span><span class="plain"> *</span><span class="identifier">nlv</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">desc_mode</span><span class="plain">) {</span>
|
|
<span class="identifier">NonlocalVariables::treat_as_plain_text_word</span><span class="plain">(</span><span class="identifier">nlv</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">nlv</span><span class="plain">) && (</span><span class="identifier">NonlocalVariables::has_initial_value_set</span><span class="plain">(</span><span class="identifier">nlv</span><span class="plain">))) {</span>
|
|
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">val</span><span class="plain"> =</span>
|
|
<span class="identifier">NonlocalVariables::substitute_constants</span><span class="plain">(</span>
|
|
<span class="identifier">NonlocalVariables::get_initial_value</span><span class="plain">(</span>
|
|
<span class="identifier">nlv</span><span class="plain">));</span>
|
|
<span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain"> = </span><span class="identifier">NonlocalVariables::kind</span><span class="plain">(</span><span class="identifier">nlv</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::is</span><span class="plain">(</span><span class="identifier">val</span><span class="plain">, </span><span class="identifier">UNKNOWN_NT</span><span class="plain">)) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::eq</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">K_number</span><span class="plain">)) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"0"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::eq</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">K_number</span><span class="plain">)) {</span>
|
|
<span class="identifier">value_holster</span><span class="plain"> </span><span class="identifier">VH</span><span class="plain"> = </span><span class="identifier">Holsters::new</span><span class="plain">(</span><span class="identifier">INTER_DATA_VHMODE</span><span class="plain">);</span>
|
|
<span class="identifier">Specifications::Compiler::compile_constant_to_kind_vh</span><span class="plain">(&</span><span class="identifier">VH</span><span class="plain">, </span><span class="identifier">val</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">);</span>
|
|
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">v1</span><span class="plain"> = 0, </span><span class="identifier">v2</span><span class="plain"> = 0;</span>
|
|
<span class="identifier">Holsters::unholster_pair</span><span class="plain">(&</span><span class="identifier">VH</span><span class="plain">, &</span><span class="identifier">v1</span><span class="plain">, &</span><span class="identifier">v2</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%d"</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="identifier">v2</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain"> = </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">val</span><span class="plain">);</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">w1</span><span class="plain"> = </span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">);</span>
|
|
<span class="identifier">HTMLFiles::compile_bibliographic_text</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">Lexer::word_text</span><span class="plain">(</span><span class="identifier">w1</span><span class="plain">));</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function PL::Bibliographic::Release::write_var_to_XML is used in <a href="#SP11_1_2">§11.1.2</a>, <a href="#SP11_1_5_2">§11.1.5.2</a>, <a href="#SP11_1_7">§11.1.7</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP13"></a><b>§13. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">PL::Bibliographic::Release::write_var_to_text</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">nonlocal_variable</span><span class="plain"> *</span><span class="identifier">nlv</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">nlv</span><span class="plain">) && (</span><span class="identifier">NonlocalVariables::has_initial_value_set</span><span class="plain">(</span><span class="identifier">nlv</span><span class="plain">))) {</span>
|
|
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">val</span><span class="plain"> =</span>
|
|
<span class="identifier">NonlocalVariables::substitute_constants</span><span class="plain">(</span>
|
|
<span class="identifier">NonlocalVariables::get_initial_value</span><span class="plain">(</span>
|
|
<span class="identifier">nlv</span><span class="plain">));</span>
|
|
<span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain"> = </span><span class="identifier">NonlocalVariables::kind</span><span class="plain">(</span><span class="identifier">nlv</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::is</span><span class="plain">(</span><span class="identifier">val</span><span class="plain">, </span><span class="identifier">UNKNOWN_NT</span><span class="plain">)) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::eq</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">K_number</span><span class="plain">)) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"0"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::eq</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">K_number</span><span class="plain">)) {</span>
|
|
<span class="identifier">value_holster</span><span class="plain"> </span><span class="identifier">VH</span><span class="plain"> = </span><span class="identifier">Holsters::new</span><span class="plain">(</span><span class="identifier">INTER_DATA_VHMODE</span><span class="plain">);</span>
|
|
<span class="identifier">Specifications::Compiler::compile_constant_to_kind_vh</span><span class="plain">(&</span><span class="identifier">VH</span><span class="plain">, </span><span class="identifier">val</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">);</span>
|
|
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">v1</span><span class="plain"> = 0, </span><span class="identifier">v2</span><span class="plain"> = 0;</span>
|
|
<span class="identifier">Holsters::unholster_pair</span><span class="plain">(&</span><span class="identifier">VH</span><span class="plain">, &</span><span class="identifier">v1</span><span class="plain">, &</span><span class="identifier">v2</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%d"</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="identifier">v2</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain"> = </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">val</span><span class="plain">);</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">w1</span><span class="plain"> = </span><span class="identifier">Wordings::first_wn</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">);</span>
|
|
<span class="identifier">HTMLFiles::compile_bibliographic_text</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">Lexer::word_text</span><span class="plain">(</span><span class="identifier">w1</span><span class="plain">));</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function PL::Bibliographic::Release::write_var_to_text is used in <a href="#SP14_1">§14.1</a>, <a href="#SP14_2_5">§14.2.5</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14"></a><b>§14. </b>Releasing requires four programs to work together: this one, Inform 6
|
|
to turn our output into a story file, a releasing agent called "Inblorb"
|
|
which binds up the result into a blorbed file, and lastly the user interface,
|
|
which calls the other three in the right sequence.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Although the user interface looks as if it's in charge, in fact we are
|
|
pulling the strings, because we write a "blurb file" of instructions
|
|
telling Inblorb exactly what to do. The format for this is an extension of
|
|
the "blurb" format documented in the "Inform Designer's Manual",
|
|
fourth edition (the "DM4"); see the published source code for Inblorb.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Note that the code below does not generate an <code class="display"><span class="extract">author</span></code> blurb instruction,
|
|
which would lead to an AUTH chunk in the final blorb. This is partly
|
|
because the AUTH chunk is now obsolete in the wake of the Treaty of
|
|
Babel, but also because it avoids problems with Unicode: an AUTH can
|
|
only contain plainest ASCII, whereas the author's name known to Inform
|
|
may very well use characters not representable in ASCII. There is no
|
|
good way round this: so, farewell AUTH.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Similarly, we do not supply a release number. The release number of a blorb
|
|
has a different meaning from that of the story file embedded in it: the
|
|
number refers to the release of the picture and sound resources found
|
|
in the blorb, and we know nothing about that. (It's a feature provided
|
|
for archival re-releases of 1980s IF.)
|
|
</p>
|
|
|
|
|
|
<pre class="definitions">
|
|
<span class="definitionkeyword">define</span> <span class="constant">BIBLIOGRAPHIC_TEXT_TRUNCATION</span><span class="plain"> 31</span>
|
|
</pre>
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">PL::Bibliographic::Release::write_release_blurb</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">,</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">cover_picture_number</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">cover_art_format</span><span class="plain">) {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Compose the blorbed story filename into the TEMP stream</span> <span class="cwebmacronumber">14.1</span>><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"! Blurb file created by Inform %B (build %B)\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Write the body of the Blurb file</span> <span class="cwebmacronumber">14.2</span>><span class="plain">;</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function PL::Bibliographic::Release::write_release_blurb is used in <a href="#SP10_4_2">§10.4.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14_1"></a><b>§14.1. </b>Note that we truncate the title if it becomes vastly long, to make sure
|
|
the Blorb-file's filename won't be too long for the file system.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Compose the blorbed story filename into the TEMP stream</span> <span class="cwebmacronumber">14.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">story_title_VAR</span><span class="plain"> != </span><span class="identifier">NULL</span><span class="plain">) &&</span>
|
|
<span class="plain">(</span><span class="identifier">NonlocalVariables::has_initial_value_set</span><span class="plain">(</span><span class="identifier">story_title_VAR</span><span class="plain">))) {</span>
|
|
<span class="identifier">BEGIN_COMPILATION_MODE</span><span class="plain">;</span>
|
|
<span class="identifier">COMPILATION_MODE_ENTER</span><span class="plain">(</span><span class="identifier">TRUNCATE_TEXT_CMODE</span><span class="plain">);</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::write_var_to_text</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="identifier">story_title_VAR</span><span class="plain">);</span>
|
|
<span class="identifier">END_COMPILATION_MODE</span><span class="plain">;</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="string">"story"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">TEMP</span><span class="plain">, </span><span class="string">".%s"</span><span class="plain">, </span><span class="identifier">VirtualMachines::get_blorbed_extension</span><span class="plain">());</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP14">§14</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14_2"></a><b>§14.2. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write the body of the Blurb file</span> <span class="cwebmacronumber">14.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<<span class="cwebmacro">Tell Inblorb where to write its report to</span> <span class="cwebmacronumber">14.2.1</span>><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">! Identification\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Tell Inblorb where the project and release folders are</span> <span class="cwebmacronumber">14.2.2</span>><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">! Blorb instructions\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Tell Inblorb where the story file and iFiction files are</span> <span class="cwebmacronumber">14.2.3</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Give instructions about the cover image</span> <span class="cwebmacronumber">14.2.4</span>><span class="plain">;</span>
|
|
<span class="identifier">PL::Figures::write_blurb_commands</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="identifier">PL::Sounds::write_blurb_commands</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">! Placeholder variables\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Write numerous placeholder variables</span> <span class="cwebmacronumber">14.2.5</span>><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">! Other material to release\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Give instructions about source text, solution and library card</span> <span class="cwebmacronumber">14.2.6</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Give instructions about auxiliary files</span> <span class="cwebmacronumber">14.2.7</span>><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_interpreter</span><span class="plain">) </span><<span class="cwebmacro">Give instructions to release with an interpreter for Web play</span> <span class="cwebmacronumber">14.2.8</span>><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_website</span><span class="plain">) </span><<span class="cwebmacro">Give instructions to construct a website around the release</span> <span class="cwebmacronumber">14.2.9</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Give hints to Inblorb for its HTML status page</span> <span class="cwebmacronumber">14.2.10</span>><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP14">§14</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14_2_1"></a><b>§14.2.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Tell Inblorb where to write its report to</span> <span class="cwebmacronumber">14.2.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"status \</span><span class="plain">"</span><span class="string">%f\</span><span class="plain">"</span><span class="string"> \</span><span class="plain">"</span><span class="string">%f\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="identifier">filename_of_cblorb_report_model</span><span class="plain">,</span>
|
|
<span class="identifier">filename_of_cblorb_report</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP14_2">§14.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14_2_2"></a><b>§14.2.2. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Tell Inblorb where the project and release folders are</span> <span class="cwebmacronumber">14.2.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"project folder \</span><span class="plain">"</span><span class="string">%p\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">pathname_of_project</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">create_Materials</span><span class="plain">)</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"release to \</span><span class="plain">"</span><span class="string">%p\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">pathname_of_materials_release</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP14_2">§14.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14_2_3"></a><b>§14.2.3. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Tell Inblorb where the story file and iFiction files are</span> <span class="cwebmacronumber">14.2.3</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"storyfile leafname \</span><span class="plain">"</span><span class="string">"</span><span class="plain">); </span><span class="identifier">STREAM_COPY</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">TEMP</span><span class="plain">); </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">existing_story_file</span><span class="plain">)</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"storyfile \</span><span class="plain">"</span><span class="string">%f\</span><span class="plain">"</span><span class="string"> include\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">filename_of_existing_story_file</span><span class="plain">);</span>
|
|
<span class="reserved">else</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"storyfile \</span><span class="plain">"</span><span class="string">%f\</span><span class="plain">"</span><span class="string"> include\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">filename_of_story_file</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"ifiction \</span><span class="plain">"</span><span class="string">%f\</span><span class="plain">"</span><span class="string"> include\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">filename_of_ifiction_record</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP14_2">§14.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14_2_4"></a><b>§14.2.4. </b>A controversial point here is that if the author supplies no cover art, we
|
|
supply it for him, and if necessary copy a suitable image into any website
|
|
released along with the work.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Give instructions about the cover image</span> <span class="cwebmacronumber">14.2.4</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_cover</span><span class="plain">) {</span>
|
|
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">large</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">strcmp</span><span class="plain">(</span><span class="identifier">cover_art_format</span><span class="plain">, </span><span class="string">"jpg"</span><span class="plain">) == 0)</span>
|
|
<span class="identifier">large</span><span class="plain"> = </span><span class="identifier">filename_of_large_cover_art_jpeg</span><span class="plain">;</span>
|
|
<span class="reserved">else</span>
|
|
<span class="identifier">large</span><span class="plain"> = </span><span class="identifier">filename_of_large_cover_art_png</span><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"cover \</span><span class="plain">"</span><span class="string">%f\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">large</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"picture %d \</span><span class="plain">"</span><span class="string">%f\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">cover_picture_number</span><span class="plain">, </span><span class="identifier">large</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"cover \</span><span class="plain">"</span><span class="string">%f\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">filename_of_large_default_cover_art</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"picture %d \</span><span class="plain">"</span><span class="string">%f\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, 1, </span><span class="identifier">filename_of_large_default_cover_art</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_website</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"release file \</span><span class="plain">"</span><span class="string">%f\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">filename_of_large_default_cover_art</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"release file \</span><span class="plain">"</span><span class="string">%f\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">filename_of_small_default_cover_art</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP14_2">§14.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14_2_5"></a><b>§14.2.5. </b>This will be recognisable as yet another form of the Library Card information.
|
|
"Placeholders" are the only data structure in the primitive blurb language, and
|
|
are in effect strings, whose names appear in block capitals within square
|
|
brackets [THUS].
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Write numerous placeholder variables</span> <span class="cwebmacronumber">14.2.5</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"placeholder [IFID] = \</span><span class="plain">"</span><span class="string">%S\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="functiontext">PL::Bibliographic::IFID::read_uuid</span><span class="plain">());</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">NonlocalVariables::has_initial_value_set</span><span class="plain">(</span><span class="identifier">story_release_number_VAR</span><span class="plain">)) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"placeholder [RELEASE] = \</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::write_var_to_text</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">story_release_number_VAR</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"placeholder [RELEASE] = \</span><span class="plain">"</span><span class="string">1\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
|
|
<span class="identifier">BEGIN_COMPILATION_MODE</span><span class="plain">;</span>
|
|
<span class="identifier">COMPILATION_MODE_ENTER</span><span class="plain">(</span><span class="identifier">COMPILE_TEXT_TO_XML_CMODE</span><span class="plain">);</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">NonlocalVariables::has_initial_value_set</span><span class="plain">(</span><span class="identifier">story_creation_year_VAR</span><span class="plain">)) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"placeholder [YEAR] = \</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::write_var_to_text</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">story_creation_year_VAR</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"placeholder [YEAR] = \</span><span class="plain">"</span><span class="string">%d\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, (</span><span class="identifier">the_present</span><span class="plain">-></span><span class="identifier">tm_year</span><span class="plain">)+1900);</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">NonlocalVariables::has_initial_value_set</span><span class="plain">(</span><span class="identifier">story_title_VAR</span><span class="plain">)) {</span>
|
|
<span class="identifier">NonlocalVariables::treat_as_plain_text_word</span><span class="plain">(</span><span class="identifier">story_title_VAR</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"placeholder [TITLE] = \</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::write_var_to_text</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">story_title_VAR</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"placeholder [TITLE] = \</span><span class="plain">"</span><span class="string">Untitled\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">NonlocalVariables::has_initial_value_set</span><span class="plain">(</span><span class="identifier">story_author_VAR</span><span class="plain">)) {</span>
|
|
<span class="identifier">NonlocalVariables::treat_as_plain_text_word</span><span class="plain">(</span><span class="identifier">story_author_VAR</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"placeholder [AUTHOR] = \</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::write_var_to_text</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">story_author_VAR</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"placeholder [AUTHOR] = \</span><span class="plain">"</span><span class="string">Anonymous\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">NonlocalVariables::has_initial_value_set</span><span class="plain">(</span><span class="identifier">story_description_VAR</span><span class="plain">)) {</span>
|
|
<span class="identifier">NonlocalVariables::treat_as_plain_text_word</span><span class="plain">(</span><span class="identifier">story_description_VAR</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"placeholder [BLURB] = \</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="functiontext">PL::Bibliographic::Release::write_var_to_text</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">story_description_VAR</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"placeholder [BLURB] = \</span><span class="plain">"</span><span class="string">A work of interactive fiction.\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
|
|
<span class="identifier">END_COMPILATION_MODE</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP14_2">§14.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14_2_6"></a><b>§14.2.6. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Give instructions about source text, solution and library card</span> <span class="cwebmacronumber">14.2.6</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_source</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">source_public</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"source public\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"source\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_solution</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">solution_public</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"solution public\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"solution\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_card</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">card_public</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"ifiction public\</span><span class="plain">n</span><span class="string">"</span><span class="plain">); </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"ifiction\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP14_2">§14.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14_2_7"></a><b>§14.2.7. </b>The Introduction booklet and the Postcard are both squirreled away inside
|
|
a standard Inform installation. Under the Creative Commons licence terms for
|
|
the Postcard, we have to credit its authors here; but the booklet contains its
|
|
own credits.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Give instructions about auxiliary files</span> <span class="cwebmacronumber">14.2.7</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">auxiliary_file</span><span class="plain"> *</span><span class="identifier">af</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">af</span><span class="plain">, </span><span class="reserved">auxiliary_file</span><span class="plain">) {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">);</span>
|
|
<span class="identifier">Pathnames::to_text_relative</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">, </span><span class="identifier">af</span><span class="plain">-</span><span class="element">>folder_to_release_to</span><span class="plain">, </span><span class="identifier">pathname_of_materials_release</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"auxiliary \</span><span class="plain">"</span><span class="string">%f\</span><span class="plain">"</span><span class="string"> \</span><span class="plain">"</span><span class="string">%S\</span><span class="plain">"</span><span class="string"> \</span><span class="plain">"</span><span class="string">%S\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="identifier">af</span><span class="plain">-</span><span class="element">>name_of_original_file</span><span class="plain">,</span>
|
|
<span class="plain">(</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">af</span><span class="plain">-</span><span class="element">>brief_description</span><span class="plain">) > 0)?(</span><span class="identifier">af</span><span class="plain">-</span><span class="element">>brief_description</span><span class="plain">):</span><span class="identifier">I</span><span class="string">"--"</span><span class="plain">,</span>
|
|
<span class="plain">(</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">) > 0)?</span><span class="identifier">rel</span><span class="plain">:</span><span class="identifier">I</span><span class="string">"--"</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_booklet</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"auxiliary \</span><span class="plain">"</span><span class="string">%f\</span><span class="plain">"</span><span class="string"> \</span><span class="plain">"</span><span class="string">Introduction to IF\</span><span class="plain">"</span><span class="string"> \</span><span class="plain">"</span><span class="string">--\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">filename_of_intro_booklet</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_postcard</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"auxiliary \</span><span class="plain">"</span><span class="string">%f\</span><span class="plain">"</span><span class="string"> \</span><span class="plain">"</span><span class="string">IF Postcard\</span><span class="plain">"</span><span class="string"> \</span><span class="plain">"</span><span class="string">--\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">filename_of_intro_postcard</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"placeholder [OTHERCREDITS] = \</span><span class="plain">"</span><span class="string">The postcard was written by Andrew Plotkin "</span>
|
|
<span class="string">"and designed by Lea Albaugh.\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP14_2">§14.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14_2_8"></a><b>§14.2.8. </b>Facilities for a Javascript interpreter to play a base64-encoded story
|
|
file online.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Give instructions to release with an interpreter for Web play</span> <span class="cwebmacronumber">14.2.8</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">! Website instructions\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"placeholder [ENCODEDSTORYFILE] = \</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">STREAM_COPY</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">".js\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Tell Inblorb where to find the website templates</span> <span class="cwebmacronumber">14.2.8.1</span>><span class="plain">;</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">interpreter_template_leafname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
|
<span class="identifier">interpreter_template_leafname</span><span class="plain"> = </span><span class="identifier">VirtualMachines::get_default_interpreter</span><span class="plain">();</span>
|
|
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">ext</span><span class="plain"> = </span><span class="identifier">VirtualMachines::get_blorbed_extension</span><span class="plain">();</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"placeholder [INTERPRETERSCRIPTS] = \</span><span class="plain">"</span><span class="string"> "</span><span class="plain">);</span>
|
|
<span class="reserved">auxiliary_file</span><span class="plain"> *</span><span class="identifier">af</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">af</span><span class="plain">, </span><span class="reserved">auxiliary_file</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">af</span><span class="plain">-</span><span class="element">>from_payload</span><span class="plain"> == </span><span class="constant">JAVASCRIPT_PAYLOAD</span><span class="plain">) {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">);</span>
|
|
<span class="identifier">Filenames::to_text_relative</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">, </span><span class="identifier">af</span><span class="plain">-</span><span class="element">>name_of_original_file</span><span class="plain">, </span><span class="identifier">pathname_of_area</span><span class="plain">[</span><span class="identifier">MATERIALS_FS_AREA</span><span class="plain">]);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<script src='%S'></script>"</span><span class="plain">, </span><span class="identifier">rel</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">af</span><span class="plain">, </span><span class="reserved">auxiliary_file</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">af</span><span class="plain">-</span><span class="element">>from_payload</span><span class="plain"> == </span><span class="constant">CSS_PAYLOAD</span><span class="plain">) {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">);</span>
|
|
<span class="identifier">Filenames::to_text_relative</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">, </span><span class="identifier">af</span><span class="plain">-</span><span class="element">>name_of_original_file</span><span class="plain">, </span><span class="identifier">pathname_of_area</span><span class="plain">[</span><span class="identifier">MATERIALS_FS_AREA</span><span class="plain">]);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<link rel='stylesheet' href='%S' type='text/css' media='all'></link>"</span><span class="plain">, </span><span class="identifier">rel</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">rel</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"interpreter \</span><span class="plain">"</span><span class="string">%w\</span><span class="plain">"</span><span class="string"> \</span><span class="plain">"</span><span class="string">%c\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">interpreter_template_leafname</span><span class="plain">, </span><span class="identifier">ext</span><span class="plain">[0]);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"base64 \</span><span class="plain">"</span><span class="string">%f\</span><span class="plain">"</span><span class="string"> to \</span><span class="plain">"</span><span class="string">%p%c"</span><span class="plain">,</span>
|
|
<span class="identifier">filename_of_story_file</span><span class="plain">, </span><span class="identifier">pathname_of_released_interpreter</span><span class="plain">, </span><span class="identifier">FOLDER_SEPARATOR</span><span class="plain">);</span>
|
|
<span class="identifier">STREAM_COPY</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">TEMP</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">".js\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP14_2">§14.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14_2_9"></a><b>§14.2.9. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Give instructions to construct a website around the release</span> <span class="cwebmacronumber">14.2.9</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\</span><span class="plain">n</span><span class="string">! Website instructions\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Tell Inblorb where to find the website templates</span> <span class="cwebmacronumber">14.2.8.1</span>><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wide::cmp</span><span class="plain">(</span><span class="identifier">website_template_leafname</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Classic"</span><span class="plain">) != 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"css\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"website \</span><span class="plain">"</span><span class="string">%w\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">website_template_leafname</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP14_2">§14.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14_2_8_1"></a><b>§14.2.8.1. </b>The order here is significant, since Inblorb searches the folders in order,
|
|
with the earliest quoted searched first.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Tell Inblorb where to find the website templates</span> <span class="cwebmacronumber">14.2.8.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">area</span><span class="plain">=0; </span><span class="identifier">area</span><span class="plain"><</span><span class="identifier">NO_FS_AREAS</span><span class="plain">; </span><span class="identifier">area</span><span class="plain">++)</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"template path \</span><span class="plain">"</span><span class="string">%p\</span><span class="plain">"</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">pathname_of_website_templates</span><span class="plain">[</span><span class="identifier">area</span><span class="plain">]);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP14_2_8">§14.2.8</a>, <a href="#SP14_2_9">§14.2.9</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14_2_10"></a><b>§14.2.10. </b>Inblorb reports its progress, or lack of it, with an HTML page, just as we do.
|
|
This page however includes some hints on what the user might have chosen
|
|
instead of what he actually did choose, and we'll write those hints now, for
|
|
Inblorb to copy out later.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Give hints to Inblorb for its HTML status page</span> <span class="cwebmacronumber">14.2.10</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">ParseTree::traverse_with_stream</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="functiontext">PL::Bibliographic::Release::visit_to_quote</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_cover</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"status alternative ||Using 'Release along with cover art', to "</span>
|
|
<span class="string">"provide something more distinctive than the default artwork above"</span><span class="plain">);</span>
|
|
<span class="identifier">Index::DocReferences::link_to</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"release_cover"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"||\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_website</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"status alternative ||Using 'Release along with a website'"</span><span class="plain">);</span>
|
|
<span class="identifier">Index::DocReferences::link_to</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"release_website"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"||\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_interpreter</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"status alternative ||Using 'Release along with an interpreter', "</span>
|
|
<span class="string">"for in-browser play on your website"</span><span class="plain">);</span>
|
|
<span class="identifier">Index::DocReferences::link_to</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"release_interpreter"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"||\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">NUMBER_CREATED</span><span class="plain">(</span><span class="reserved">auxiliary_file</span><span class="plain">) == 0) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"status alternative ||Using 'Release along with a file of "</span>
|
|
<span class="string">"\</span><span class="plain">"</span><span class="string">Such-and-Such\</span><span class="plain">"</span><span class="string"> called \</span><span class="plain">"</span><span class="string">whatever.pdf\</span><span class="plain">"</span><span class="string">', perhaps to add a "</span>
|
|
<span class="string">"manual, or a welcoming note"</span><span class="plain">);</span>
|
|
<span class="identifier">Index::DocReferences::link_to</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"release_files"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"||\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_source</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"status alternative ||Using 'Release along with the source text'"</span><span class="plain">);</span>
|
|
<span class="identifier">Index::DocReferences::link_to</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"release_source"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"||\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_solution</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"status alternative ||Using 'Release along with a solution'"</span><span class="plain">);</span>
|
|
<span class="identifier">Index::DocReferences::link_to</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"release_solution"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"||\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_card</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"status alternative ||Using 'Release along with the library card'"</span><span class="plain">);</span>
|
|
<span class="identifier">Index::DocReferences::link_to</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"release_card"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"||\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_booklet</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"status alternative ||Using 'Release along with the introductory booklet'"</span><span class="plain">);</span>
|
|
<span class="identifier">Index::DocReferences::link_to</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"release_booklet"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"||\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">release_postcard</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"status alternative ||Using 'Release along with the introductory postcard'"</span><span class="plain">);</span>
|
|
<span class="identifier">Index::DocReferences::link_to</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"release_postcard"</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"||\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP14_2">§14.2</a>.</p>
|
|
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><a href="2-bd.html">Back to 'Bibliographic Data'</a></li><li><i>(This section ends Chapter 2: Bibliographic Data.)</i></li></ul><hr class="tocbar">
|
|
<!--End of weave: 1127 lines from a web of 25583-->
|
|
</body>
|
|
</html>
|
|
|