mirror of
https://github.com/ganelson/inform.git
synced 2024-07-18 06:54:26 +03:00
1266 lines
164 KiB
HTML
1266 lines
164 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>2/hd</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 '3/ifs' generated by 7-->
|
|
<ul class="crumbs"><li><a href="../webs.html">★</a></li><li><a href="index.html">index</a></li><li><a href="index.html#3">Chapter 3: Indexing</a></li><li><b>Index File Services</b></li></ul><p class="purpose">To provide routines to help build the various HTML index files, none of which are actually created in this section.</p>
|
|
|
|
<ul class="toc"><li><a href="#SP1">§1. Definitions</a></li><li><a href="#SP4_2">§4.2. Writing the periodic table</a></li><li><a href="#SP4_4">§4.4. Writing the elements</a></li><li><a href="#SP6">§6. So here goes with the CSS and Javascript</a></li><li><a href="#SP10">§10. Links to source</a></li><li><a href="#SP11">§11. Links to detail pages</a></li><li><a href="#SP12">§12. "See below" links</a></li><li><a href="#SP13">§13. "Show extra" links, and also a spacer of equivalent width</a></li><li><a href="#SP15">§15. "Deprecation" icons</a></li><li><a href="#SP16">§16. Miscellaneous utilities</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>If only we had an index file, we could look it up under "index file"...
|
|
</p>
|
|
|
|
<p class="inwebparagraph">The Index of a project is a set of HTML files describing its milieu: the
|
|
definitions it makes, the world model resulting, and the rules in force,
|
|
which arise as a combination of the source text and the extensions (in
|
|
particular, the Standard Rules).
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Each index page is divided into "elements".
|
|
</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">index_page</span><span class="plain"> {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">no_elements</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">key_colour</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">page_title</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">page_explanation</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">page_leafname</span><span class="plain">;</span>
|
|
<span class="identifier">MEMORY_MANAGEMENT</span>
|
|
<span class="plain">} </span><span class="reserved">index_page</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The structure index_page is private to this section.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b></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">index_element</span><span class="plain"> {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">atomic_number</span><span class="plain">; </span> <span class="comment">1, 2, 3, ..., within its page</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">chemical_symbol</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">element_name</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">explanatory_note</span><span class="plain">;</span>
|
|
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">index_page</span><span class="plain"> *</span><span class="identifier">owning_page</span><span class="plain">;</span>
|
|
<span class="identifier">MEMORY_MANAGEMENT</span>
|
|
<span class="plain">} </span><span class="reserved">index_element</span><span class="plain">;</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The structure index_element is private to this section.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>The index is written at the end of each successful compilation. During
|
|
indexing, only one index file is ever open for output at a time: this
|
|
always has the file handle <code class="display"><span class="extract">ifl</span></code>. The following routine is called to open a
|
|
new index file for output.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">index_page</span><span class="plain"> *</span><span class="identifier">current_index_page</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::new_page</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">col</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">title</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">exp</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">leaf</span><span class="plain">) {</span>
|
|
<span class="identifier">current_index_page</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">index_page</span><span class="plain">);</span>
|
|
<span class="identifier">current_index_page</span><span class="plain">-</span><span class="element">>no_elements</span><span class="plain"> = 0;</span>
|
|
<span class="identifier">current_index_page</span><span class="plain">-</span><span class="element">>key_colour</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">col</span><span class="plain">);</span>
|
|
<span class="identifier">current_index_page</span><span class="plain">-</span><span class="element">>page_title</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">title</span><span class="plain">);</span>
|
|
<span class="identifier">current_index_page</span><span class="plain">-</span><span class="element">>page_explanation</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">exp</span><span class="plain">);</span>
|
|
<span class="identifier">current_index_page</span><span class="plain">-</span><span class="element">>page_leafname</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">leaf</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::new_segment</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">abb</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">title</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">explanation</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_index_page</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
|
|
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"template creates index elements improperly"</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">abb</span><span class="plain">) > 2)</span>
|
|
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"abbreviation for index element too long"</span><span class="plain">);</span>
|
|
<span class="reserved">index_element</span><span class="plain"> *</span><span class="identifier">ie</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">index_element</span><span class="plain">);</span>
|
|
<span class="identifier">ie</span><span class="plain">-</span><span class="element">>owning_page</span><span class="plain"> = </span><span class="identifier">current_index_page</span><span class="plain">;</span>
|
|
<span class="identifier">ie</span><span class="plain">-</span><span class="element">>atomic_number</span><span class="plain"> = ++(</span><span class="identifier">current_index_page</span><span class="plain">-</span><span class="element">>no_elements</span><span class="plain">);</span>
|
|
<span class="identifier">ie</span><span class="plain">-</span><span class="element">>chemical_symbol</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">abb</span><span class="plain">);</span>
|
|
<span class="identifier">ie</span><span class="plain">-</span><span class="element">>element_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">title</span><span class="plain">);</span>
|
|
<span class="identifier">ie</span><span class="plain">-</span><span class="element">>explanatory_note</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">index_file_counter</span><span class="plain"> = 0;</span>
|
|
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">ifl</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">; </span> <span class="comment">Current destination of index text</span>
|
|
<span class="identifier">text_stream</span><span class="plain"> </span><span class="identifier">index_file_struct</span><span class="plain">; </span> <span class="comment">The current index file being written</span>
|
|
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">Index::open_file</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">index_leaf</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">title</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">sub</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">explanation</span><span class="plain">) {</span>
|
|
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="identifier">Locations::in_index</span><span class="plain">(</span><span class="identifier">index_leaf</span><span class="plain">, </span><span class="identifier">sub</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ifl</span><span class="plain">) </span><span class="functiontext">Index::close_index_file</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">index_file_struct</span><span class="plain">, </span><span class="identifier">F</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 index file"</span><span class="plain">, </span><span class="identifier">F</span><span class="plain">);</span>
|
|
<span class="identifier">ifl</span><span class="plain"> = &</span><span class="identifier">index_file_struct</span><span class="plain">;</span>
|
|
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain"> = </span><span class="identifier">ifl</span><span class="plain">;</span>
|
|
|
|
<<span class="cwebmacro">Set the current index page</span> <span class="cwebmacronumber">4.1</span>><span class="plain">;</span>
|
|
|
|
<span class="functiontext">HTMLFiles::html_header</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">title</span><span class="plain">);</span>
|
|
<span class="identifier">index_file_counter</span><span class="plain">++;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::get_first_char</span><span class="plain">(</span><span class="identifier">title</span><span class="plain">) == </span><span class="character">'<'</span><span class="plain">) {</span>
|
|
<span class="functiontext">Index::index_banner_line</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, 1, </span><span class="identifier">I</span><span class="string">"^"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Details"</span><span class="plain">,</span>
|
|
<span class="identifier">I</span><span class="string">"A single action in detail.|About the action rulebooks<ARSUMMARY>"</span><span class="plain">,</span>
|
|
<span class="string">"../Actions.html"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_TAG</span><span class="plain">(</span><span class="string">"hr"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><<span class="cwebmacro">Write the periodic table</span> <span class="cwebmacronumber">4.3</span>><span class="plain">;</span>
|
|
<span class="identifier">indexing_stage</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">Str::get_first_char</span><span class="plain">(</span><span class="identifier">title</span><span class="plain">) != </span><span class="character">'<'</span><span class="plain">) && (</span><span class="identifier">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">index_leaf</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Welcome.html"</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">))</span>
|
|
<<span class="cwebmacro">Write the index elements</span> <span class="cwebmacronumber">4.4</span>><span class="plain">;</span>
|
|
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">OUT</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Index::new_page appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Index::new_segment appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Index::open_file appears nowhere else.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_1"></a><b>§4.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Set the current index page</span> <span class="cwebmacronumber">4.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">index_page</span><span class="plain"> *</span><span class="identifier">ip</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">ip</span><span class="plain">, </span><span class="reserved">index_page</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ip</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain"> == </span><span class="identifier">index_file_counter</span><span class="plain">) {</span>
|
|
<span class="identifier">current_index_page</span><span class="plain"> = </span><span class="identifier">ip</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="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_2"></a><b>§4.2. Writing the periodic table. </b>Each index page is arranged as follows: at the top is a navigational bar
|
|
in a DIV called "periodictable", and underneath that are chunks of actual
|
|
indexing material in DIVs called "element1", "element2", ... Different
|
|
pages have different numbers of elements.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">The periodic table is shown complete on the Welcome page, but otherwise
|
|
is reduced to just the relevant row (orbital?).
|
|
</p>
|
|
|
|
<p class="inwebparagraph">We will call the table opened if the surround is fully visible, in which
|
|
case the actual content is hidden but the 8 rows of the table are all
|
|
visible; and closed if the surround is hidden, so that only 1 row of the
|
|
table is visible, and some or all of the content of the page is visible below.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Each row, except the top one, begins with a rectangle called the sidebar.
|
|
If the table is closed then clicking on the sidebar opens it; if it's open,
|
|
clicking on the sidebar for a given row closes the table and goes to the
|
|
relevant page of the index. The contents of the sidebar cell are defined
|
|
by a DIV whose class is "sidebar".
|
|
</p>
|
|
|
|
<p class="inwebparagraph">The sidebar is followed by a series of cells called the "boxes", one for
|
|
each element in that row's index page. These contain DIVs with the class
|
|
"box" and the ID "boxN_M", where N is the row number, 1 to 7, and M is
|
|
the column number, 1 to E, where E is the number of elements in that row.
|
|
Each box then contains three pieces of text: an abbreviation like Kd,
|
|
in a DIV with class "symbol"; a spelled-out name like Kinds, in a DIV
|
|
with class "rubric"; and an element number like 3, in a DIV with class
|
|
"indexno".
|
|
</p>
|
|
|
|
<p class="inwebparagraph">Following that is a broad cell, spanning the rest of the table's width,
|
|
which contains text like "Kinds Index". This contains a DIV of class
|
|
"headingbox", inside which is a main heading in a DIV of class "headingtext"
|
|
and text underneath in another of class "headingrubric".
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_3"></a><b>§4.3. </b>So let's generate all of that:
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Write the periodic table</span> <span class="cwebmacronumber">4.3</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">max_elements</span><span class="plain"> = 0;</span>
|
|
<span class="reserved">index_page</span><span class="plain"> *</span><span class="identifier">ip</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">ip</span><span class="plain">, </span><span class="reserved">index_page</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">max_elements</span><span class="plain"> < </span><span class="identifier">ip</span><span class="plain">-</span><span class="element">>no_elements</span><span class="plain">)</span>
|
|
<span class="identifier">max_elements</span><span class="plain"> = </span><span class="identifier">ip</span><span class="plain">-</span><span class="element">>no_elements</span><span class="plain">;</span>
|
|
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"id=\</span><span class="plain">"</span><span class="string">periodictable\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"table"</span><span class="plain">, </span><span class="string">"cellspacing=\</span><span class="plain">"</span><span class="string">3\</span><span class="plain">"</span><span class="string"> border=\</span><span class="plain">"</span><span class="string">0\</span><span class="plain">"</span><span class="string"> width=\</span><span class="plain">"</span><span class="string">100%%\</span><span class="plain">"</span><span class="string">"</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">index_leaf</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Welcome.html"</span><span class="plain">))</span>
|
|
<<span class="cwebmacro">Write the heading row of the surround</span> <span class="cwebmacronumber">4.3.1</span>><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">ip</span><span class="plain">, </span><span class="reserved">index_page</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">index_leaf</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Welcome.html"</span><span class="plain">)) || (</span><span class="identifier">ip</span><span class="plain"> == </span><span class="identifier">current_index_page</span><span class="plain">)) &&</span>
|
|
<span class="plain">(</span><span class="identifier">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">ip</span><span class="plain">-</span><span class="element">>page_leafname</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Welcome"</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
|
|
<<span class="cwebmacro">Start a row of the periodic table</span> <span class="cwebmacronumber">4.3.2</span>><span class="plain">;</span>
|
|
<span class="reserved">index_element</span><span class="plain"> *</span><span class="identifier">ie</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">ie</span><span class="plain">, </span><span class="reserved">index_element</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ie</span><span class="plain">-</span><span class="element">>owning_page</span><span class="plain"> == </span><span class="identifier">ip</span><span class="plain">)</span>
|
|
<<span class="cwebmacro">Write an element-box of the periodic table</span> <span class="cwebmacronumber">4.3.3</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">End a row of the periodic table</span> <span class="cwebmacronumber">4.3.4</span>><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"table"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_3_1"></a><b>§4.3.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write the heading row of the surround</span> <span class="cwebmacronumber">4.3.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"tr"</span><span class="plain">, </span><span class="string">"id=\</span><span class="plain">"</span><span class="string">surround0\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">, </span><span class="string">"colspan=\</span><span class="plain">"</span><span class="string">2\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_TAG_WITH</span><span class="plain">(</span><span class="string">"img"</span><span class="plain">, </span><span class="string">"src='inform:/doc_images/index@2x.png' border=1 width=115 height=115"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">, </span><span class="string">"colspan=\</span><span class="plain">"</span><span class="string">%d\</span><span class="plain">"</span><span class="string"> style=\</span><span class="plain">"</span><span class="string">width:100%%;\</span><span class="plain">"</span><span class="string">"</span><span class="plain">, </span><span class="identifier">max_elements</span><span class="plain"> - 1);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"class=\</span><span class="plain">"</span><span class="string">headingboxhigh\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"class=\</span><span class="plain">"</span><span class="string">headingtext\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"Welcome to the Index"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"class=\</span><span class="plain">"</span><span class="string">headingrubric\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"A guide which grows with your project"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"tr"</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4_3">§4.3</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_3_2"></a><b>§4.3.2. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Start a row of the periodic table</span> <span class="cwebmacronumber">4.3.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">index_leaf</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Welcome.html"</span><span class="plain">)) {</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"tr"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">, </span><span class="string">"onclick=\</span><span class="plain">"</span><span class="string">window.location='%S.html'; return false;\</span><span class="plain">"</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="identifier">ip</span><span class="plain">-</span><span class="element">>page_leafname</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"class=\</span><span class="plain">"</span><span class="string">sidebar\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"tr"</span><span class="plain">, </span><span class="string">"id=\</span><span class="plain">"</span><span class="string">surround%d\</span><span class="plain">"</span><span class="string">"</span><span class="plain">, </span><span class="identifier">ip</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">+1);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">, </span><span class="string">"onclick=\</span><span class="plain">"</span><span class="string">window.location='Welcome.html'; return false;\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"class=\</span><span class="plain">"</span><span class="string">sidebar\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4_3">§4.3</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_3_3"></a><b>§4.3.3. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write an element-box of the periodic table</span> <span class="cwebmacronumber">4.3.3</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ip</span><span class="plain"> == </span><span class="identifier">current_index_page</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">, </span><span class="string">"onclick=\</span><span class="plain">"</span><span class="string">click_element_box('segment%d'); return false;\</span><span class="plain">"</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="identifier">ie</span><span class="plain">-</span><span class="element">>atomic_number</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">, </span><span class="string">"onclick=\</span><span class="plain">"</span><span class="string">window.location='%S.html?segment%d'; return false;\</span><span class="plain">"</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="identifier">ip</span><span class="plain">-</span><span class="element">>page_leafname</span><span class="plain">, </span><span class="identifier">ie</span><span class="plain">-</span><span class="element">>atomic_number</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"id=\</span><span class="plain">"</span><span class="string">box%d_%d\</span><span class="plain">"</span><span class="string"> class=\</span><span class="plain">"</span><span class="string">box\</span><span class="plain">"</span><span class="string">"</span><span class="plain">, </span><span class="identifier">ip</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">+1, </span><span class="identifier">ie</span><span class="plain">-</span><span class="element">>atomic_number</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">, </span><span class="string">"class=\</span><span class="plain">"</span><span class="string">symbol\</span><span class="plain">"</span><span class="string"> title=\</span><span class="plain">"</span><span class="string">%S\</span><span class="plain">"</span><span class="string"> href=\</span><span class="plain">"</span><span class="string">#\</span><span class="plain">"</span><span class="string">"</span><span class="plain">, </span><span class="identifier">ie</span><span class="plain">-</span><span class="element">>element_name</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">ie</span><span class="plain">-</span><span class="element">>chemical_symbol</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"a"</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">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"class=\</span><span class="plain">"</span><span class="string">indexno\</span><span class="plain">"</span><span class="string">"</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">ie</span><span class="plain">-</span><span class="element">>atomic_number</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"class=\</span><span class="plain">"</span><span class="string">rubric\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">ie</span><span class="plain">-</span><span class="element">>element_name</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4_3">§4.3</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_3_4"></a><b>§4.3.4. </b><code class="display">
|
|
<<span class="cwebmacrodefn">End a row of the periodic table</span> <span class="cwebmacronumber">4.3.4</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">tds</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ip</span><span class="plain"> == </span><span class="identifier">current_index_page</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">tds</span><span class="plain">, </span><span class="string">"onclick=\</span><span class="plain">"</span><span class="string">show_all_elements(); return false;\</span><span class="plain">"</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_TO</span><span class="plain">(</span><span class="identifier">tds</span><span class="plain">, </span><span class="string">"onclick=\</span><span class="plain">"</span><span class="string">window.location='%S.html'; return false;\</span><span class="plain">"</span><span class="string"> "</span><span class="plain">,</span>
|
|
<span class="identifier">ip</span><span class="plain">-</span><span class="element">>page_leafname</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ip</span><span class="plain">-</span><span class="element">>no_elements</span><span class="plain"> < </span><span class="identifier">max_elements</span><span class="plain">)</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">tds</span><span class="plain">, </span><span class="string">"colspan=\</span><span class="plain">"</span><span class="string">%d\</span><span class="plain">"</span><span class="string"> "</span><span class="plain">, </span><span class="identifier">max_elements</span><span class="plain"> - </span><span class="identifier">ip</span><span class="plain">-</span><span class="element">>no_elements</span><span class="plain"> + 1);</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">tds</span><span class="plain">, </span><span class="string">"style=\</span><span class="plain">"</span><span class="string">width:100%%\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">, </span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">tds</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">tds</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">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"class=\</span><span class="plain">"</span><span class="string">headingbox\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"class=\</span><span class="plain">"</span><span class="string">headingtext\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">ip</span><span class="plain">-</span><span class="element">>page_title</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"class=\</span><span class="plain">"</span><span class="string">headingrubric\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">ip</span><span class="plain">-</span><span class="element">>page_explanation</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"tr"</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4_3">§4.3</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4_4"></a><b>§4.4. Writing the elements. </b>Each element is contained inside a DIV with id "segment1", "segment2", and
|
|
so on. There's then a banner line — a sort of subheading; then the index
|
|
content at last; and then a rule.
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Write the index elements</span> <span class="cwebmacronumber">4.4</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="reserved">index_element</span><span class="plain"> *</span><span class="identifier">ie</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">ie</span><span class="plain">, </span><span class="reserved">index_element</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ie</span><span class="plain">-</span><span class="element">>owning_page</span><span class="plain"> == </span><span class="identifier">current_index_page</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"id=\</span><span class="plain">"</span><span class="string">segment%d\</span><span class="plain">"</span><span class="string">"</span><span class="plain">, </span><span class="identifier">ie</span><span class="plain">-</span><span class="element">>atomic_number</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_TAG</span><span class="plain">(</span><span class="string">"hr"</span><span class="plain">);</span>
|
|
<span class="functiontext">Index::index_banner_line</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">ie</span><span class="plain">-</span><span class="element">>atomic_number</span><span class="plain">, </span><span class="identifier">ie</span><span class="plain">-</span><span class="element">>chemical_symbol</span><span class="plain">,</span>
|
|
<span class="identifier">ie</span><span class="plain">-</span><span class="element">>element_name</span><span class="plain">, </span><span class="identifier">ie</span><span class="plain">-</span><span class="element">>explanatory_note</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
|
<span class="reserved">index_page</span><span class="plain"> *</span><span class="identifier">save_ip</span><span class="plain"> = </span><span class="identifier">current_index_page</span><span class="plain">;</span>
|
|
<span class="functiontext">Index::index_actual_element</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">ie</span><span class="plain">-</span><span class="element">>chemical_symbol</span><span class="plain">);</span>
|
|
<span class="identifier">current_index_page</span><span class="plain"> = </span><span class="identifier">save_ip</span><span class="plain">;</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">HTML_TAG</span><span class="plain">(</span><span class="string">"hr"</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP5"></a><b>§5. </b>This is abstracted as a routine because it's also used for the much smaller
|
|
and simpler navigation on the Actions detail pages.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::index_banner_line</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">N</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">sym</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">exp</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">link</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"table"</span><span class="plain">, </span><span class="string">"cellspacing=\</span><span class="plain">"</span><span class="string">3\</span><span class="plain">"</span><span class="string"> border=\</span><span class="plain">"</span><span class="string">0\</span><span class="plain">"</span><span class="string"> style=\</span><span class="plain">"</span><span class="string">background:#eeeeee;\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"tr"</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Write the banner mini-element-box</span> <span class="cwebmacronumber">5.1</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Write the row titling element</span> <span class="cwebmacronumber">5.2</span>><span class="plain">;</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"tr"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"table"</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">The function Index::index_banner_line is used in <a href="#SP4">§4</a>, <a href="#SP4_4">§4.4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP5_1"></a><b>§5.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write the banner mini-element-box</span> <span class="cwebmacronumber">5.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">, </span><span class="string">"valign=\</span><span class="plain">"</span><span class="string">top\</span><span class="plain">"</span><span class="string"> align=\</span><span class="plain">"</span><span class="string">left\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"id=\</span><span class="plain">"</span><span class="string">minibox%d_%d\</span><span class="plain">"</span><span class="string"> class=\</span><span class="plain">"</span><span class="string">smallbox\</span><span class="plain">"</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="identifier">current_index_page</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">+1, </span><span class="identifier">N</span><span class="plain">);</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">dets</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">dets</span><span class="plain">, </span><span class="string">"class=\</span><span class="plain">"</span><span class="string">symbol\</span><span class="plain">"</span><span class="string"> title=\</span><span class="plain">"</span><span class="string">%S\</span><span class="plain">"</span><span class="string"> "</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">link</span><span class="plain">) </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">dets</span><span class="plain">, </span><span class="string">"href=\</span><span class="plain">"</span><span class="string">%s\</span><span class="plain">"</span><span class="string">"</span><span class="plain">, </span><span class="identifier">link</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">dets</span><span class="plain">, </span><span class="string">"href=\</span><span class="plain">"</span><span class="string">#\</span><span class="plain">"</span><span class="string"> onclick=\</span><span class="plain">"</span><span class="string">click_element_box('segment%d'); return false;\</span><span class="plain">"</span><span class="string">"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">, </span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">dets</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">dets</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">sym</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"class=\</span><span class="plain">"</span><span class="string">indexno\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%d\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"td"</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="SP5_2"></a><b>§5.2. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write the row titling element</span> <span class="cwebmacronumber">5.2</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"td"</span><span class="plain">, </span><span class="string">"style=\</span><span class="plain">"</span><span class="string">width:100%%;\</span><span class="plain">"</span><span class="string"> align=\</span><span class="plain">"</span><span class="string">left\</span><span class="plain">"</span><span class="string"> valign=\</span><span class="plain">"</span><span class="string">top\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">, </span><span class="string">"style=\</span><span class="plain">"</span><span class="string">margin-top:0px;padding-top:0px;"</span>
|
|
<span class="string">"margin-bottom:0px;padding-bottom:0px;line-height:150%%;\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<b>%S</b> &mdash; \</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
|
|
<span class="functiontext">Index::explain</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">exp</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"td"</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. So here goes with the CSS and Javascript. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::scripting</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_index_page</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
|
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"style"</span><span class="plain">, </span><span class="string">"type=\</span><span class="plain">"</span><span class="string">text/css\</span><span class="plain">"</span><span class="string"> media=\</span><span class="plain">"</span><span class="string">screen, print\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Write some CSS styles for all these classes</span> <span class="cwebmacronumber">6.1</span>><span class="plain">;</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"style"</span><span class="plain">);</span>
|
|
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"script"</span><span class="plain">, </span><span class="string">"type=\</span><span class="plain">"</span><span class="string">text/javascript\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"var qq; window.onload = function() {\</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">" if (location.search.length > 0) {\</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">" qq = location.search.substring(1, location.search.length);\</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">" show_only_one_element(qq);\</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">" }\</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">"}\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Write Javascript code for clicking on an element box</span> <span class="cwebmacronumber">6.3</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Write Javascript code for clicking on the sidebar</span> <span class="cwebmacronumber">6.4</span>><span class="plain">;</span>
|
|
|
|
<<span class="cwebmacro">Write Javascript code for showing every element on the page</span> <span class="cwebmacronumber">6.5</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Write Javascript code for showing only one element on the page</span> <span class="cwebmacronumber">6.6</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Write Javascript code for entering the periodic table display</span> <span class="cwebmacronumber">6.7</span>><span class="plain">;</span>
|
|
|
|
<<span class="cwebmacro">Write Javascript code for showing and hiding a single element</span> <span class="cwebmacronumber">6.8</span>><span class="plain">;</span>
|
|
<<span class="cwebmacro">Write Javascript code for lighting up or greying down an element box</span> <span class="cwebmacronumber">6.9</span>><span class="plain">;</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"script"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Index::scripting is used in 2/hf (<a href="2-hf.html#SP6">§6</a>).</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6_1"></a><b>§6.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write some CSS styles for all these classes</span> <span class="cwebmacronumber">6.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"p {\</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">"font-family: \</span><span class="plain">"</span><span class="string">Lucida Grande\</span><span class="plain">"</span><span class="string">, \</span><span class="plain">"</span><span class="string">Lucida Sans Unicode\</span><span class="plain">"</span><span class="string">, Helvetica, Arial, Verdana, sans-serif;\</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">"}\</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">"\</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">".box a:link { text-decoration: none; }\</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">".box a:visited { text-decoration: none; }\</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">".box a:active { text-decoration: none; }\</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">".box a:hover { text-decoration: none; color: #444444; }\</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">"\</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">".smallbox a:link { text-decoration: none; }\</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">".smallbox a:visited { text-decoration: none; }\</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">".smallbox a:active { text-decoration: none; }\</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">".smallbox a:hover { text-decoration: none; color: #444444; }\</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">"\</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">".symbol {\</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">" position: absolute;\</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">" top: -4px;\</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">" left: -1px;\</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">" width: 100%%;\</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">" color: #ffffff;\</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">" padding: 14px 0px 14px 1px;\</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">" font-size: 20px;\</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">" font-weight: bold;\</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">" text-align: center;\</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">"}\</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">".indexno {\</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">" position: absolute;\</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">" top: 1px;\</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">" left: 3px;\</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">" color: #ffffff;\</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">" font-size: 7pt;\</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">" text-align: left;\</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">"}\</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">".rubric {\</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">" position: absolute;\</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">" top: 35px;\</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">" width: 100%%;\</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">" color: #ffffff;\</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">" font-size: 9px;\</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">" font-weight: bold;\</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">" text-align: center;\</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">"}\</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">"\</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">".box {\</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">" position: relative;\</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">" height: 56px;\</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">" width: 56px;\</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">" padding: 0px;\</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">"font-family: \</span><span class="plain">"</span><span class="string">Lucida Grande\</span><span class="plain">"</span><span class="string">, \</span><span class="plain">"</span><span class="string">Lucida Sans Unicode\</span><span class="plain">"</span><span class="string">, Helvetica, Arial, Verdana, sans-serif;\</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">"-webkit-font-smoothing: antialiased;\</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">"}\</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">".sidebar {\</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">" height: 56px;\</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">" width: 16px;\</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">" background: #888;\</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">"font-family: \</span><span class="plain">"</span><span class="string">Lucida Grande\</span><span class="plain">"</span><span class="string">, \</span><span class="plain">"</span><span class="string">Lucida Sans Unicode\</span><span class="plain">"</span><span class="string">, Helvetica, Arial, Verdana, sans-serif;\</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">"-webkit-font-smoothing: antialiased;\</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">"}\</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">".sidebar:hover { background: #222; }\</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">"\</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">".smallbox {\</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">" position: relative;\</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">" height: 40px;\</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">" width: 40px;\</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">" padding: 0px;\</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">"font-family: \</span><span class="plain">"</span><span class="string">Lucida Grande\</span><span class="plain">"</span><span class="string">, \</span><span class="plain">"</span><span class="string">Lucida Sans Unicode\</span><span class="plain">"</span><span class="string">, Helvetica, Arial, Verdana, sans-serif;\</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">"-webkit-font-smoothing: antialiased;\</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">"}\</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">"\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="reserved">index_page</span><span class="plain"> *</span><span class="identifier">ip</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">ip</span><span class="plain">, </span><span class="reserved">index_page</span><span class="plain">) {</span>
|
|
<span class="reserved">index_element</span><span class="plain"> *</span><span class="identifier">ie</span><span class="plain">;</span>
|
|
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">ie</span><span class="plain">, </span><span class="reserved">index_element</span><span class="plain">)</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ie</span><span class="plain">-</span><span class="element">>owning_page</span><span class="plain"> == </span><span class="identifier">ip</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"#box%d_%d {\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">ip</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">+1, </span><span class="identifier">ie</span><span class="plain">-</span><span class="element">>atomic_number</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" background: #%S;\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">ip</span><span class="plain">-</span><span class="element">>key_colour</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">WRITE</span><span class="plain">(</span><span class="string">"#minibox%d_%d {\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">ip</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">+1, </span><span class="identifier">ie</span><span class="plain">-</span><span class="element">>atomic_number</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" background: #%S;\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">ip</span><span class="plain">-</span><span class="element">>key_colour</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="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">WRITE</span><span class="plain">(</span><span class="string">"ul.leaders {\</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">" padding: 0;\</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">" margin-top: 1px;\</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">" margin-bottom: 0;\</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">" overflow-x: hidden;\</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">" list-style: none}\</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">"ul.leaders li.leaded:before {\</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">" float: left;\</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">" width: 0;\</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">" white-space: nowrap;\</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">" content:\</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">" \</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">" \</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">" \</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">" \</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">" \</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">" \</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">" \</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">" \</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">" \</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">" \</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">"ul.leaders li.leaded span:first-child {\</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">" padding-right: 0.33em;\</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">" background: white}\</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">"ul.leaders li.leaded span + span {\</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">" float: right;\</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">" padding-left: 0.33em;\</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">" background: white}\</span><span class="plain">n</span><span class="string">"</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">=1; </span><span class="identifier">i</span><span class="plain"><10; </span><span class="identifier">i</span><span class="plain">++) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"li.indent%d span:first-child {\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" padding-left: %dpx;\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, 25*</span><span class="identifier">i</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="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">WRITE</span><span class="plain">(</span><span class="string">"li.unleaded:before {\</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">" content: \</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">"}\</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="#SP6">§6</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6_2"></a><b>§6.2. </b>Now we come to the Javascript. The page can be in one of three states:
|
|
</p>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<ul class="items"><li>(1) With the periodic table closed, and all the boxes in the one visible
|
|
row lit up, and all of the elements on the page visible;
|
|
</li><li>(2) With the periodic table closed, and all the boxes grey except one
|
|
which is lit up, and just the one element it corresponds to visible;
|
|
</li><li>(3) With the periodic table open, and all boxes lit up, and no elements
|
|
visible on the page below.
|
|
</li></ul>
|
|
<p class="inwebparagraph">The page loads in state (1). Note that on a page with just one element,
|
|
states (1) and (2) are indistinguishable.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">We'll structure the Javascript routines on three levels. At the top level,
|
|
we have routines called when buttons on the page are clicked:
|
|
</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6_3"></a><b>§6.3. </b>This is called when the user clicks on an element box corresponding to
|
|
something on the current page. If that's hidden, we go to state (2) for the
|
|
element clicked on. If it's showing, we see which state we're in: if we're
|
|
in state (2) we go to state (1), and otherwise go to state (2). (The trick
|
|
is deciding what state we're in: we do that by counting the number of visible
|
|
elements.)
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Write Javascript code for clicking on an element box</span> <span class="cwebmacronumber">6.3</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"function click_element_box(id) {\</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">" if (document.getElementById(id).style.display == 'none') {\</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">" show_only_one_element(id);\</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">" } else {\</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">" var x = 0;\</span><span class="plain">n</span><span class="string">"</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">=1; </span><span class="identifier">i</span><span class="plain"><=</span><span class="identifier">current_index_page</span><span class="plain">-</span><span class="element">>no_elements</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++)</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" if (document.getElementById('segment%d').style.display == '') { x++; }\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" if (x == 1) { show_all_elements(); }\</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">" else { show_only_one_element(id); }\</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">" }\</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">"}\</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="#SP6">§6</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6_4"></a><b>§6.4. </b>If we're in state (1) or (2), go to state (3); if we're in state (3), go to
|
|
state (1).
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Write Javascript code for clicking on the sidebar</span> <span class="cwebmacronumber">6.4</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"function click_sidebar() {\</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">" if (document.getElementById('surround0').style.display == 'none') {\</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">" enter_periodic_table();\</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">" } else {\</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">" show_all_elements();\</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">" }\</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">"}\</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="#SP6">§6</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6_5"></a><b>§6.5. </b>At the middle level of our Javascript, we have routines which move the
|
|
page to a new state. This routine goes to state (1):
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Write Javascript code for showing every element on the page</span> <span class="cwebmacronumber">6.5</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"function show_all_elements() {\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=1; </span><span class="identifier">i</span><span class="plain"><=</span><span class="identifier">current_index_page</span><span class="plain">-</span><span class="element">>no_elements</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" show_element('segment%d');\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" light_up('segment%d');\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">i</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">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="#SP6">§6</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6_6"></a><b>§6.6. </b>This routine goes to state (2), where the <code class="display"><span class="extract">id</span></code> is the ID of the content
|
|
element — <code class="display"><span class="extract">segment1</span></code>, <code class="display"><span class="extract">segment2</span></code>, ...
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Write Javascript code for showing only one element on the page</span> <span class="cwebmacronumber">6.6</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"function show_only_one_element(id) {\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=1; </span><span class="identifier">i</span><span class="plain"><=</span><span class="identifier">current_index_page</span><span class="plain">-</span><span class="element">>no_elements</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" hide_element('segment%d');\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" light_down('segment%d');\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" show_element(id);\</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">" light_up(id);\</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">"}\</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="#SP6">§6</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6_7"></a><b>§6.7. </b>This routine goes to state (3):
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Write Javascript code for entering the periodic table display</span> <span class="cwebmacronumber">6.7</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"function enter_periodic_table() {\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=1; </span><span class="identifier">i</span><span class="plain"><=</span><span class="identifier">current_index_page</span><span class="plain">-</span><span class="element">>no_elements</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" hide_element('segment%d');\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" light_up('segment%d');\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">i</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">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="#SP6">§6</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6_8"></a><b>§6.8. </b>And at the bottom level of the Javascript code we have service routines
|
|
to show, hide and colour things:
|
|
</p>
|
|
|
|
|
|
<p class="macrodefinition"><code class="display">
|
|
<<span class="cwebmacrodefn">Write Javascript code for showing and hiding a single element</span> <span class="cwebmacronumber">6.8</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"function show_element(id) {\</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">" document.getElementById(id).style.display = '';\</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">"}\</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">"function hide_element(id) {\</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">" document.getElementById(id).style.display = 'none';\</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">"}\</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="#SP6">§6</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6_9"></a><b>§6.9. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write Javascript code for lighting up or greying down an element box</span> <span class="cwebmacronumber">6.9</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"function light_up(id) {\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Write Javascript to produce the corresponding icon name</span> <span class="cwebmacronumber">6.9.1</span>><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" document.getElementById(ic).style.background = '#%S';\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="identifier">current_index_page</span><span class="plain">-</span><span class="element">>key_colour</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">WRITE</span><span class="plain">(</span><span class="string">"function light_down(id) {\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
|
<<span class="cwebmacro">Write Javascript to produce the corresponding icon name</span> <span class="cwebmacronumber">6.9.1</span>><span class="plain">;</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" document.getElementById(ic).style.background = '#cccccc';\</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">"}\</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="#SP6">§6</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP6_9_1"></a><b>§6.9.1. </b><code class="display">
|
|
<<span class="cwebmacrodefn">Write Javascript to produce the corresponding icon name</span> <span class="cwebmacronumber">6.9.1</span>> =
|
|
</code></p>
|
|
|
|
|
|
<pre class="displaydefn">
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" var ic = 'box%d_1';\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">current_index_page</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">+1);</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=2; </span><span class="identifier">i</span><span class="plain"><=</span><span class="identifier">current_index_page</span><span class="plain">-</span><span class="element">>no_elements</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++)</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" if (id == 'segment%d') { ic = 'box%d_%d';}\</span><span class="plain">n</span><span class="string">"</span><span class="plain">,</span>
|
|
<span class="identifier">i</span><span class="plain">, </span><span class="identifier">current_index_page</span><span class="plain">-></span><span class="identifier">allocation_id</span><span class="plain">+1, </span><span class="identifier">i</span><span class="plain">);</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">This code is used in <a href="#SP6_9">§6.9</a> (twice).</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::index_actual_element</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">elt</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">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"C"</span><span class="plain">)) {</span>
|
|
<span class="identifier">Sentences::Headings::index</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="identifier">Extensions::Files::index</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="identifier">Extensions::Files::update_census</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Vl"</span><span class="plain">)) {</span>
|
|
<span class="identifier">NonlocalVariables::index_all</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="identifier">Equations::index</span><span class="plain">(</span><span class="identifier">OUT</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Fi"</span><span class="plain">)) {</span>
|
|
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">MULTIMEDIA_MODULE</span>
|
|
<span class="identifier">PL::Figures::index_all</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="identifier">PL::Sounds::index_all</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="identifier">PL::Files::index_all</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="plain">#</span><span class="identifier">endif</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Tb"</span><span class="plain">)) {</span>
|
|
<span class="identifier">Tables::index</span><span class="plain">(</span><span class="identifier">OUT</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Cd"</span><span class="plain">)) {</span>
|
|
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">IF_MODULE</span>
|
|
<span class="identifier">PL::Bibliographic::index_library_card</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="plain">#</span><span class="identifier">endif</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"In"</span><span class="plain">)) {</span>
|
|
<span class="identifier">VirtualMachines::index_innards</span><span class="plain">(</span><span class="identifier">OUT</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Ph"</span><span class="plain">)) {</span>
|
|
<span class="identifier">Phrases::Index::index_page_Phrasebook</span><span class="plain">(</span><span class="identifier">OUT</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Lx"</span><span class="plain">)) {</span>
|
|
<span class="functiontext">Index::Lexicon::index</span><span class="plain">(</span><span class="identifier">OUT</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Rl"</span><span class="plain">)) {</span>
|
|
<span class="identifier">Relations::index_table</span><span class="plain">(</span><span class="identifier">OUT</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Vb"</span><span class="plain">)) {</span>
|
|
<span class="functiontext">Index::Lexicon::index_verbs</span><span class="plain">(</span><span class="identifier">OUT</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Ch"</span><span class="plain">)) {</span>
|
|
<span class="identifier">Data::Objects::page_Kinds</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="identifier">Kinds::Index::index_kinds</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, 2);</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Ar"</span><span class="plain">)) {</span>
|
|
<span class="identifier">Kinds::Dimensions::index_dimensional_rules</span><span class="plain">(</span><span class="identifier">OUT</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Mp"</span><span class="plain">)) {</span>
|
|
<span class="identifier">Data::Objects::page_World</span><span class="plain">(</span><span class="identifier">OUT</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Gz"</span><span class="plain">)) {</span>
|
|
<span class="functiontext">Index::Lexicon::index_common_nouns</span><span class="plain">(</span><span class="identifier">OUT</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Pl"</span><span class="plain">)) {</span>
|
|
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">IF_MODULE</span>
|
|
<span class="identifier">PL::Scenes::Index::index</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="plain">#</span><span class="identifier">endif</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Ev"</span><span class="plain">)) {</span>
|
|
<span class="identifier">Phrases::Timed::index</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">); </span> <span class="comment">rules which happen at set times of day</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"RS"</span><span class="plain">)) {</span>
|
|
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">IF_MODULE</span>
|
|
<span class="identifier">PL::Scenes::Index::index_rules</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="plain">#</span><span class="identifier">endif</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"St"</span><span class="plain">)) {</span>
|
|
<span class="identifier">Rulebooks::index_page</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, 1);</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Xt"</span><span class="plain">)) {</span>
|
|
<span class="identifier">Rulebooks::index_page</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, 2);</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"A1"</span><span class="plain">)) {</span>
|
|
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">IF_MODULE</span>
|
|
<span class="identifier">PL::Actions::Index::page</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="plain">#</span><span class="identifier">endif</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Bh"</span><span class="plain">)) {</span>
|
|
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">IF_MODULE</span>
|
|
<span class="identifier">PL::Actions::Patterns::Named::index</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="plain">#</span><span class="identifier">endif</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Cm"</span><span class="plain">)) {</span>
|
|
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">IF_MODULE</span>
|
|
<span class="identifier">PL::Actions::Index::commands</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="plain">#</span><span class="identifier">endif</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"To"</span><span class="plain">)) {</span>
|
|
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">IF_MODULE</span>
|
|
<span class="identifier">PL::Actions::Index::tokens</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="plain">#</span><span class="identifier">endif</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">Str::eq_wide_string</span><span class="plain">(</span><span class="identifier">elt</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"A2"</span><span class="plain">)) {</span>
|
|
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">IF_MODULE</span>
|
|
<span class="identifier">PL::Actions::Index::alphabetical</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
|
<span class="plain">#</span><span class="identifier">endif</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">HTML_OPEN</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">); </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"NO CONTENT"</span><span class="plain">); </span><span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Index::index_actual_element is used in <a href="#SP4_4">§4.4</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">Index::explain</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">explanation</span><span class="plain">) {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">italics_open</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0, </span><span class="identifier">L</span><span class="plain">=</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">); </span><span class="identifier">i</span><span class="plain"><</span><span class="identifier">L</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
|
|
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">Str::get_at</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">)) {</span>
|
|
<span class="reserved">case</span><span class="plain"> </span><span class="character">'|'</span><span class="plain">:</span>
|
|
<span class="identifier">HTML_TAG</span><span class="plain">(</span><span class="string">"br"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"<i>"</span><span class="plain">); </span><span class="identifier">italics_open</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="character">'<'</span><span class="plain">: {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">link</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&nbsp;"</span><span class="plain">);</span>
|
|
<span class="identifier">i</span><span class="plain">++;</span>
|
|
<span class="reserved">while</span><span class="plain"> ((</span><span class="identifier">i</span><span class="plain"><</span><span class="identifier">L</span><span class="plain">) && (</span><span class="identifier">Str::get_at</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) != </span><span class="character">'>'</span><span class="plain">))</span>
|
|
<span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">link</span><span class="plain">, </span><span class="identifier">Str::get_at</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">++));</span>
|
|
<span class="functiontext">Index::DocReferences::link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">link</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">link</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="character">'['</span><span class="plain">: {</span>
|
|
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">link</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&nbsp;"</span><span class="plain">);</span>
|
|
<span class="identifier">i</span><span class="plain">++;</span>
|
|
<span class="reserved">while</span><span class="plain"> ((</span><span class="identifier">i</span><span class="plain"><</span><span class="identifier">L</span><span class="plain">) && (</span><span class="identifier">Str::get_at</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) != </span><span class="character">'>'</span><span class="plain">))</span>
|
|
<span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">link</span><span class="plain">, </span><span class="identifier">Str::get_at</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">++));</span>
|
|
<span class="functiontext">Index::below_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">link</span><span class="plain">);</span>
|
|
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">link</span><span class="plain">);</span>
|
|
<span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">default</span><span class="plain">: </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%c"</span><span class="plain">, </span><span class="identifier">Str::get_at</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">)); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">italics_open</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"</i>"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Index::explain is used in <a href="#SP5_2">§5.2</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP9"></a><b>§9. </b>Written index files are closed either when the next one is opened (see
|
|
above), or when the <code class="display"><span class="extract">.i6t</span></code> interpreter signals the end of indexing by
|
|
calling <code class="display"><span class="extract">Index::complete</span></code> below.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::complete</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ifl</span><span class="plain">) </span><span class="functiontext">Index::close_index_file</span><span class="plain">();</span>
|
|
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">IF_MODULE</span>
|
|
<span class="identifier">PL::Actions::Index::detail_pages</span><span class="plain">();</span>
|
|
<span class="plain">#</span><span class="identifier">endif</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::close_index_file</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ifl</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="functiontext">HTMLFiles::html_footer</span><span class="plain">(</span><span class="identifier">ifl</span><span class="plain">);</span>
|
|
<span class="identifier">STREAM_CLOSE</span><span class="plain">(</span><span class="identifier">ifl</span><span class="plain">); </span><span class="identifier">ifl</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Index::complete appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Index::close_index_file is used in <a href="#SP4">§4</a>.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP10"></a><b>§10. Links to source. </b>When index files need to reference source text material, they normally do
|
|
so by means of orange back-arrow icons which are linked to positions in
|
|
the source as typed by the user. But source text also comes from extensions.
|
|
We don't want to provide source links to those, because they can't easily
|
|
be opened in the Inform application (on some platforms, anyway), and
|
|
in any case, can't easily be modified (or should not be, anyway). Instead,
|
|
we produce links.
|
|
</p>
|
|
|
|
<p class="inwebparagraph">So, then, source links are omitted if the reference is to a location in the
|
|
Standard Rules; if it is to an extension other than that, the link is made
|
|
to the documentation for the extension; and otherwise we make a link to
|
|
the source text in the application.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::link</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">wn</span><span class="plain">) {</span>
|
|
<span class="functiontext">Index::link_to_location</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">Lexer::word_location</span><span class="plain">(</span><span class="identifier">wn</span><span class="plain">), </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::link_location</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">source_location</span><span class="plain"> </span><span class="identifier">sl</span><span class="plain">) {</span>
|
|
<span class="functiontext">Index::link_to_location</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">sl</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::link_to</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">wn</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">nonbreaking_space</span><span class="plain">) {</span>
|
|
<span class="functiontext">Index::link_to_location</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">Lexer::word_location</span><span class="plain">(</span><span class="identifier">wn</span><span class="plain">), </span><span class="identifier">nonbreaking_space</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::link_to_location</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">source_location</span><span class="plain"> </span><span class="identifier">sl</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">nonbreaking_space</span><span class="plain">) {</span>
|
|
<span class="identifier">extension_file</span><span class="plain"> *</span><span class="identifier">ef</span><span class="plain"> = </span><span class="identifier">SourceFiles::get_extension_corresponding</span><span class="plain">(</span><span class="identifier">sl</span><span class="plain">.</span><span class="identifier">file_of_origin</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ef</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ef</span><span class="plain"> != </span><span class="identifier">standard_rules_extension</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nonbreaking_space</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&nbsp;"</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">" "</span><span class="plain">);</span>
|
|
<span class="identifier">Extensions::IDs::begin_extension_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">Extensions::Files::get_eid</span><span class="plain">(</span><span class="identifier">ef</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_TAG_WITH</span><span class="plain">(</span><span class="string">"img"</span><span class="plain">, </span><span class="string">"border=0 src=inform:/doc_images/Revealext.png"</span><span class="plain">);</span>
|
|
<span class="identifier">Extensions::IDs::end_extension_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">Extensions::Files::get_eid</span><span class="plain">(</span><span class="identifier">ef</span><span class="plain">));</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="functiontext">HTMLFiles::html_source_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">sl</span><span class="plain">, </span><span class="identifier">nonbreaking_space</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Index::link is used in 3/li (<a href="3-li.html#SP8_11_2">§8.11.2</a>, <a href="3-li.html#SP9">§9</a>).</p>
|
|
|
|
<p class="endnote">The function Index::link_location appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Index::link_to appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Index::link_to_location appears nowhere else.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP11"></a><b>§11. Links to detail pages. </b>The "Beneath" icon is used for links to details pages seen as beneath the
|
|
current index page: for instance, for the link from the Actions page to the
|
|
page about the taking action.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::detail_link</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">stub</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">sub</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">down</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&nbsp;"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">, </span><span class="string">"href=%s%d_%s.html"</span><span class="plain">, (</span><span class="identifier">down</span><span class="plain">)?</span><span class="string">"Details/"</span><span class="plain">:</span><span class="string">""</span><span class="plain">, </span><span class="identifier">sub</span><span class="plain">, </span><span class="identifier">stub</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_TAG_WITH</span><span class="plain">(</span><span class="string">"img"</span><span class="plain">, </span><span class="string">"border=0 src=inform:/doc_images/Beneath.png"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Index::detail_link appears nowhere else.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP12"></a><b>§12. "See below" links. </b>These are the grey magnifying glass icons. The links are done by internal
|
|
href links to anchors lower down the same HTML page. These can be identified
|
|
either by number, or by name: whichever is more convenient for the indexing
|
|
code.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::below_link</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&nbsp;"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">, </span><span class="string">"href=#%S"</span><span class="plain">, </span><span class="identifier">p</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_TAG_WITH</span><span class="plain">(</span><span class="string">"img"</span><span class="plain">, </span><span class="string">"border=0 src=inform:/doc_images/Below.png"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::anchor</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">, </span><span class="string">"name=%S"</span><span class="plain">, </span><span class="identifier">p</span><span class="plain">); </span><span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::below_link_numbered</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">n</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&nbsp;"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">, </span><span class="string">"href=#A%d"</span><span class="plain">, </span><span class="identifier">n</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_TAG_WITH</span><span class="plain">(</span><span class="string">"img"</span><span class="plain">, </span><span class="string">"border=0 src=inform:/doc_images/Below.png"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::anchor_numbered</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">n</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">, </span><span class="string">"name=A%d"</span><span class="plain">, </span><span class="identifier">n</span><span class="plain">); </span><span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Index::below_link is used in <a href="#SP8">§8</a>.</p>
|
|
|
|
<p class="endnote">The function Index::anchor is used in 3/li (<a href="3-li.html#SP8">§8</a>).</p>
|
|
|
|
<p class="endnote">The function Index::below_link_numbered is used in 3/li (<a href="3-li.html#SP8_11_2">§8.11.2</a>).</p>
|
|
|
|
<p class="endnote">The function Index::anchor_numbered is used in 3/li (<a href="3-li.html#SP9">§9</a>).</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP13"></a><b>§13. "Show extra" links, and also a spacer of equivalent width. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::extra_link</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">id</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">, </span><span class="string">"href=\</span><span class="plain">"</span><span class="string">#\</span><span class="plain">"</span><span class="string"> onclick=\</span><span class="plain">"</span><span class="string">showExtra('extra%d', 'plus%d'); return false;\</span><span class="plain">"</span><span class="string">"</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_TAG_WITH</span><span class="plain">(</span><span class="string">"img"</span><span class="plain">, </span><span class="string">"border=0 id=\</span><span class="plain">"</span><span class="string">plus%d\</span><span class="plain">"</span><span class="string"> src=inform:/doc_images/extra.png"</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&nbsp;"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::extra_link_with</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">id</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">icon</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">id</span><span class="plain"> == 2000000) {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">, </span><span class="string">"href=\</span><span class="plain">"</span><span class="string">#\</span><span class="plain">"</span><span class="string"> onclick=\</span><span class="plain">"</span><span class="string">showAllResp(%d); return false;\</span><span class="plain">"</span><span class="string">"</span><span class="plain">, </span><span class="identifier">NUMBER_CREATED</span><span class="plain">(</span><span class="identifier">rule</span><span class="plain">));</span>
|
|
<span class="identifier">HTML_TAG_WITH</span><span class="plain">(</span><span class="string">"img"</span><span class="plain">, </span><span class="string">"border=0 src=inform:/doc_images/%s.png"</span><span class="plain">, </span><span class="identifier">icon</span><span class="plain">);</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">, </span><span class="string">"href=\</span><span class="plain">"</span><span class="string">#\</span><span class="plain">"</span><span class="string"> onclick=\</span><span class="plain">"</span><span class="string">showResp('extra%d', 'plus%d'); return false;\</span><span class="plain">"</span><span class="string">"</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_TAG_WITH</span><span class="plain">(</span><span class="string">"img"</span><span class="plain">, </span><span class="string">"border=0 id=\</span><span class="plain">"</span><span class="string">plus%d\</span><span class="plain">"</span><span class="string"> src=inform:/doc_images/%s.png"</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">icon</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&nbsp;"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::noextra_link</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_TAG_WITH</span><span class="plain">(</span><span class="string">"img"</span><span class="plain">, </span><span class="string">"border=0 src=inform:/doc_images/noextra.png"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&nbsp;"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Index::extra_link appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Index::extra_link_with appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Index::noextra_link appears nowhere else.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP14"></a><b>§14. </b>These open up divisions:
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::extra_div_open</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">id</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">indent</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">colour</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"id=\</span><span class="plain">"</span><span class="string">extra%d\</span><span class="plain">"</span><span class="string"> style=\</span><span class="plain">"</span><span class="string">display: none;\</span><span class="plain">"</span><span class="string">"</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFiles::open_para</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">indent</span><span class="plain">, </span><span class="string">""</span><span class="plain">);</span>
|
|
<span class="identifier">HTML::open_coloured_box</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">colour</span><span class="plain">, </span><span class="identifier">ROUND_BOX_TOP</span><span class="plain">+</span><span class="identifier">ROUND_BOX_BOTTOM</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::extra_div_close</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">colour</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML::close_coloured_box</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">colour</span><span class="plain">, </span><span class="identifier">ROUND_BOX_TOP</span><span class="plain">+</span><span class="identifier">ROUND_BOX_BOTTOM</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::extra_div_open_nested</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">id</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">indent</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">, </span><span class="string">"id=\</span><span class="plain">"</span><span class="string">extra%d\</span><span class="plain">"</span><span class="string"> style=\</span><span class="plain">"</span><span class="string">display: none;\</span><span class="plain">"</span><span class="string">"</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">);</span>
|
|
<span class="functiontext">HTMLFiles::open_para</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">indent</span><span class="plain">, </span><span class="string">""</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::extra_div_close_nested</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"p"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"div"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Index::extra_div_open appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Index::extra_div_close appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Index::extra_div_open_nested appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Index::extra_div_close_nested appears nowhere else.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP15"></a><b>§15. "Deprecation" icons. </b></p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::deprecation_icon</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">id</span><span class="plain">) {</span>
|
|
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">, </span><span class="string">"href=\</span><span class="plain">"</span><span class="string">#\</span><span class="plain">"</span><span class="string"> onclick=\</span><span class="plain">"</span><span class="string">showExtra('extra%d', 'plus%d'); return false;\</span><span class="plain">"</span><span class="string">"</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_TAG_WITH</span><span class="plain">(</span><span class="string">"img"</span><span class="plain">, </span><span class="string">"border=0 src=inform:/doc_images/deprecated.png"</span><span class="plain">);</span>
|
|
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"a"</span><span class="plain">);</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&nbsp;"</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Index::deprecation_icon appears nowhere else.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP16"></a><b>§16. Miscellaneous utilities. </b>First: to print a double-quoted word into the index, without its surrounding
|
|
quotes.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Index::dequote</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="identifier">wchar_t</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain"> = 1;</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">p</span><span class="plain">[0] == 0) || (</span><span class="identifier">p</span><span class="plain">[1] == 0)) </span><span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="reserved">for</span><span class="plain"> (</span><span class="identifier">i</span><span class="plain">=1; </span><span class="identifier">p</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">+1]; </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">p</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">];</span>
|
|
<span class="reserved">switch</span><span class="plain">(</span><span class="identifier">c</span><span class="plain">) {</span>
|
|
<span class="reserved">case</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">"&quot;"</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="reserved">default</span><span class="plain">: </span><span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">c</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Index::dequote appears nowhere else.</p>
|
|
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><i>(This section begins Chapter 3: Indexing.)</i></li><li><a href="3-dr.html">Continue with 'Documentation References'</a></li></ul><hr class="tocbar">
|
|
<!--End of weave-->
|
|
</body>
|
|
</html>
|
|
|