Added invisible paragraph numbering option

This commit is contained in:
Graham Nelson 2020-08-19 22:24:28 +01:00
parent 74ac3c3ccd
commit d87ad97a04
12 changed files with 1242 additions and 1213 deletions

View file

@ -735,6 +735,7 @@ typedef struct paragraph {
int above_bar; /* placed above the dividing bar in its section (in Version 1 syntax) */
int placed_early; /* should appear early in the tangled code */
int placed_very_early; /* should appear very early in the tangled code */
int invisible; /* do not render paragraph number */
struct text_stream *heading_text; /* if any - many paras have none */
struct text_stream *ornament; /* a "P" for a pilcrow or "S" for section-marker */
struct text_stream *paragraph_number; /* used in combination with the ornament */
@ -765,6 +766,9 @@ typedef struct paragraph {
P->placed_early = before_bar;
P->placed_very_early = FALSE;
}
P->invisible = FALSE;
if (Str::eq(Bibliographic::get_datum(W->md, I"Paragraph Numbers Visibility"), I"Off"))
P->invisible = TRUE;
P->heading_text = Str::duplicate(L->text_operand);
if ((S->md->using_syntax == V1_SYNTAX) && (before_bar))
P->ornament = Str::duplicate(I"P");

View file

@ -542,11 +542,11 @@ was well.
A more typical example, drawn from the actual Inform 7 web, is:
= (text)
<k-kind-of-kind> <k-formal-kind-variable> ==> { - , Kinds::variable_construction(R[2], RP[1]) }
<k-kind-of-kind> <k-formal-variable> ==> { - , Kinds::var_construction(R[2], RP[1]) }
=
which says that the composite result -- the right-hand formula -- is formed by
calling a particular routine on the integer result of subexpression 2
(|<k-formal-kind-variable>|) and the pointer result of subexpression 1
(|<k-formal-variable>|) and the pointer result of subexpression 1
(|<k-kind-of-kind>|). The answer, the composite result, that is, must be
placed in |*X| and |*XP|. (Composition functions are also allowed to
invalidate the result, by returning |FALSE|, and have other tricks up their

View file

@ -919,11 +919,13 @@ void HTMLFormat::paragraph_number(text_stream *OUT, paragraph *P) {
Colonies::paragraph_anchor(TEMP, P);
HTML::anchor_with_class(OUT, TEMP, I"paragraph-anchor");
DISCARD_TEXT(TEMP)
HTML_OPEN("b");
WRITE("%s%S", (Str::get_first_char(P->ornament) == 'S')?"&#167;":"&para;",
P->paragraph_number);
WRITE(". %S%s ", P->heading_text, (Str::len(P->heading_text) > 0)?".":"");
HTML_CLOSE("b");
if (P->invisible == FALSE) {
HTML_OPEN("b");
WRITE("%s%S", (Str::get_first_char(P->ornament) == 'S')?"&#167;":"&para;",
P->paragraph_number);
WRITE(". %S%s ", P->heading_text, (Str::len(P->heading_text) > 0)?".":"");
HTML_CLOSE("b");
}
}
@ =

View file

@ -1,6 +1,6 @@
# Inweb 7
v7-alpha.1+1A62 'Escape to Danger' (16 August 2020)
v7-alpha.1+1A63 'Escape to Danger' (19 August 2020)
## About Inweb

File diff suppressed because it is too large Load diff

View file

@ -1,3 +1,3 @@
Prerelease: alpha.1
Build Date: 16 August 2020
Build Number: 1A62
Build Date: 19 August 2020
Build Number: 1A63

View file

@ -128,6 +128,7 @@ convenient to store them directly here than to use a dictionary.
<span class="plain-syntax"> </span><span class="identifier-syntax">bd</span><span class="plain-syntax"> = </span><a href="8-bdfw.html#SP7" class="function-link"><span class="function-syntax">Bibliographic::set_datum</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Wm</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Code In Code Comments Notation"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"|"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">bd</span><span class="plain-syntax"> = </span><a href="8-bdfw.html#SP7" class="function-link"><span class="function-syntax">Bibliographic::set_datum</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Wm</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Cross-References Notation"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"//"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">bd</span><span class="plain-syntax"> = </span><a href="8-bdfw.html#SP7" class="function-link"><span class="function-syntax">Bibliographic::set_datum</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Wm</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Web Syntax Version"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">bd</span><span class="plain-syntax"> = </span><a href="8-bdfw.html#SP7" class="function-link"><span class="function-syntax">Bibliographic::set_datum</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Wm</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Paragraph Numbers Visibility"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"On"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. </b>Once the declarations for a web have been processed, the following is called

Binary file not shown.

View file

@ -920,6 +920,7 @@ of French weaving" and the remainder,
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">above_bar</span><span class="plain-syntax">; </span><span class="comment-syntax"> placed above the dividing bar in its section (in Version 1 syntax)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">placed_early</span><span class="plain-syntax">; </span><span class="comment-syntax"> should appear early in the tangled code</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">placed_very_early</span><span class="plain-syntax">; </span><span class="comment-syntax"> should appear very early in the tangled code</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">invisible</span><span class="plain-syntax">; </span><span class="comment-syntax"> do not render paragraph number</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">heading_text</span><span class="plain-syntax">; </span><span class="comment-syntax"> if any - many paras have none</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ornament</span><span class="plain-syntax">; </span><span class="comment-syntax"> a "P" for a pilcrow or "S" for section-marker</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">paragraph_number</span><span class="plain-syntax">; </span><span class="comment-syntax"> used in combination with the ornament</span>
@ -954,6 +955,9 @@ of French weaving" and the remainder,
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">placed_early</span><span class="plain-syntax"> = </span><span class="identifier-syntax">before_bar</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">placed_very_early</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">invisible</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><a href="../foundation-module/8-bdfw.html#SP6" class="function-link"><span class="function-syntax">Bibliographic::get_datum</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Paragraph Numbers Visibility"</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Off"</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">invisible</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">heading_text</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP3" class="function-link"><span class="function-syntax">Str::duplicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">text_operand</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">using_syntax</span><span class="plain-syntax"> == </span><span class="constant-syntax">V1_SYNTAX</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">before_bar</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">ornament</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP3" class="function-link"><span class="function-syntax">Str::duplicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"P"</span><span class="plain-syntax">);</span>

View file

@ -710,11 +710,11 @@ was well.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> &lt;k-kind-of-kind&gt; &lt;k-formal-kind-variable&gt; ==&gt; { - , Kinds::variable_construction(R[2], RP[1]) }</span>
<span class="plain-syntax"> &lt;k-kind-of-kind&gt; &lt;k-formal-variable&gt; ==&gt; { - , Kinds::var_construction(R[2], RP[1]) }</span>
</pre>
<p class="commentary">which says that the composite result &mdash; the right-hand formula &mdash; is formed by
calling a particular routine on the integer result of subexpression 2
(<span class="extract"><span class="extract-syntax">&lt;k-formal-kind-variable&gt;</span></span>) and the pointer result of subexpression 1
(<span class="extract"><span class="extract-syntax">&lt;k-formal-variable&gt;</span></span>) and the pointer result of subexpression 1
(<span class="extract"><span class="extract-syntax">&lt;k-kind-of-kind&gt;</span></span>). The answer, the composite result, that is, must be
placed in <span class="extract"><span class="extract-syntax">*X</span></span> and <span class="extract"><span class="extract-syntax">*XP</span></span>. (Composition functions are also allowed to
invalidate the result, by returning <span class="extract"><span class="extract-syntax">FALSE</span></span>, and have other tricks up their

View file

@ -1190,11 +1190,13 @@ which is itself inside a list entry"; and so on.
<span class="plain-syntax"> </span><a href="6-cln.html#SP11" class="function-link"><span class="function-syntax">Colonies::paragraph_anchor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/5-htm.html#SP17" class="function-link"><span class="function-syntax">HTML::anchor_with_class</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"paragraph-anchor"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"b"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%s%S"</span><span class="plain-syntax">, (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_first_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ornament</span><span class="plain-syntax">) == </span><span class="character-syntax">'S'</span><span class="plain-syntax">)?</span><span class="string-syntax">"&amp;#167;"</span><span class="plain-syntax">:</span><span class="string-syntax">"&amp;para;"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">paragraph_number</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">". %S%s "</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">heading_text</span><span class="plain-syntax">, (</span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">heading_text</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)?</span><span class="string-syntax">"."</span><span class="plain-syntax">:</span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"b"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">invisible</span><span class="plain-syntax"> == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"b"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%s%S"</span><span class="plain-syntax">, (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_first_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ornament</span><span class="plain-syntax">) == </span><span class="character-syntax">'S'</span><span class="plain-syntax">)?</span><span class="string-syntax">"&amp;#167;"</span><span class="plain-syntax">:</span><span class="string-syntax">"&amp;para;"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">paragraph_number</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">". %S%s "</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">heading_text</span><span class="plain-syntax">, (</span><a href="../foundation-module/4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">heading_text</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)?</span><span class="string-syntax">"."</span><span class="plain-syntax">:</span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"b"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>&#167;9. </b></p>

View file

@ -76,6 +76,7 @@ void Bibliographic::initialise_data(web_md *Wm) {
bd = Bibliographic::set_datum(Wm, I"Code In Code Comments Notation", I"|");
bd = Bibliographic::set_datum(Wm, I"Cross-References Notation", I"//");
bd = Bibliographic::set_datum(Wm, I"Web Syntax Version", NULL);
bd = Bibliographic::set_datum(Wm, I"Paragraph Numbers Visibility", I"On");
}
@ Once the declarations for a web have been processed, the following is called