Better links, clearer single-file-web headings
This commit is contained in:
parent
5670710fac
commit
95dcf1afbc
19 changed files with 1214 additions and 1065 deletions
|
@ -96,9 +96,11 @@ version 2 it's much tidier.
|
|||
@<In version 2 syntax, construe the comment under the heading as the purpose@> =
|
||||
if (S->md->using_syntax >= V2_SYNTAX) {
|
||||
source_line *L = S->first_line;
|
||||
if ((L) && (L->category == CHAPTER_HEADING_LCAT)) L = L->next_line;
|
||||
S->sect_purpose = Parser::extract_purpose(I"", L?L->next_line: NULL, S, NULL);
|
||||
if (Str::len(S->sect_purpose) > 0) L->next_line->category = PURPOSE_LCAT;
|
||||
if ((L) && (L->category == CHAPTER_HEADING_LCAT)) L = L->next_line;
|
||||
if (Str::len(S->sect_purpose) == 0) {
|
||||
S->sect_purpose = Parser::extract_purpose(I"", L?L->next_line: NULL, S, NULL);
|
||||
if (Str::len(S->sect_purpose) > 0) L->next_line->category = PURPOSE_LCAT;
|
||||
}
|
||||
}
|
||||
|
||||
@ A new paragraph is implied when a macro definition begins in the middle of
|
||||
|
@ -177,7 +179,13 @@ namespace for its functions.
|
|||
|
||||
@<Parse the line as a probable section heading@> =
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, L->text, L"%[(%C+)%] (%C+/%C+): (%c+).")) {
|
||||
if (Regexp::match(&mr, L->text, L"Implied Purpose: (%c+)")) {
|
||||
S->sect_purpose = Str::duplicate(mr.exp[0]);
|
||||
if (Str::len(S->sect_purpose) > 0) {
|
||||
L->category = PURPOSE_LCAT;
|
||||
L->is_commentary = TRUE;
|
||||
}
|
||||
} else if (Regexp::match(&mr, L->text, L"%[(%C+)%] (%C+/%C+): (%c+).")) {
|
||||
if (S->md->using_syntax >= V2_SYNTAX)
|
||||
Parser::wrong_version(S->md->using_syntax, L,
|
||||
"section range in header line", V1_SYNTAX);
|
||||
|
|
|
@ -252,6 +252,14 @@ void Reader::read_file(web *W, chapter *C, filename *F, text_stream *titling_lin
|
|||
@<Accept this as a line belonging to this section and chapter@>;
|
||||
Str::clear(line);
|
||||
@<Accept this as a line belonging to this section and chapter@>;
|
||||
text_stream *purpose = Bibliographic::get_datum(W->md, I"Purpose");
|
||||
if (Str::len(purpose) > 0) {
|
||||
Str::clear(line);
|
||||
WRITE_TO(line, "Implied Purpose: %S", purpose);
|
||||
@<Accept this as a line belonging to this section and chapter@>;
|
||||
Str::clear(line);
|
||||
@<Accept this as a line belonging to this section and chapter@>;
|
||||
}
|
||||
DISCARD_TEXT(line);
|
||||
|
||||
@ Non-implied source lines come from here. Note that we assume here that
|
||||
|
@ -262,7 +270,8 @@ tangled for.
|
|||
void Reader::scan_source_line(text_stream *line, text_file_position *tfp, void *state) {
|
||||
section *S = (section *) state;
|
||||
int l = Str::len(line) - 1;
|
||||
while ((l>=0) && (Characters::is_space_or_tab(Str::get_at(line, l)))) Str::truncate(line, l--);
|
||||
while ((l>=0) && (Characters::is_space_or_tab(Str::get_at(line, l))))
|
||||
Str::truncate(line, l--);
|
||||
|
||||
if (S->paused_until_at) {
|
||||
if (Str::get_at(line, 0) == '@') S->paused_until_at = FALSE;
|
||||
|
|
|
@ -286,6 +286,21 @@ is where the reference is made from.
|
|||
|
||||
=
|
||||
int Colonies::resolve_reference_in_weave(text_stream *url, text_stream *title,
|
||||
filename *for_HTML_file, text_stream *text, web_md *Wm, source_line *L) {
|
||||
int r = 0;
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, text, L"(%c+?) -> (%c+)")) {
|
||||
r = Colonies::resolve_reference_in_weave_inner(url, NULL,
|
||||
for_HTML_file, mr.exp[1], Wm, L);
|
||||
WRITE_TO(title, "%S", mr.exp[0]);
|
||||
} else {
|
||||
r = Colonies::resolve_reference_in_weave_inner(url, title,
|
||||
for_HTML_file, text, Wm, L);
|
||||
}
|
||||
Regexp::dispose_of(&mr);
|
||||
return r;
|
||||
}
|
||||
int Colonies::resolve_reference_in_weave_inner(text_stream *url, text_stream *title,
|
||||
filename *for_HTML_file, text_stream *text, web_md *Wm, source_line *L) {
|
||||
module *from_M = (Wm)?(Wm->as_module):NULL;
|
||||
module *search_M = from_M;
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
Title: goldbach
|
||||
Title: The Goldbach Conjecture
|
||||
Author: Graham Nelson
|
||||
Purpose: This example of using inweb is a simple program to test Goldbach's Conjecture, a classic problem in number theory.
|
||||
Language: C
|
||||
Licence: This is a free, open-source program published under the Artistic License 2.0.
|
||||
|
||||
Sections
|
||||
The Goldbach Conjecture
|
||||
Summing Primes
|
||||
The Sieve of Eratosthenes
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
The Goldbach Conjecture.
|
||||
Summing Two Primes.
|
||||
|
||||
Here we verify the conjecture for small numbers.
|
||||
|
||||
@h The conjecture.
|
||||
So, this is a program to see if even numbers from 4 to 100 can all be written
|
||||
@ So, this is a program to see if even numbers from 4 to 100 can all be written
|
||||
as a sum of two primes. Christian Goldbach asked Euler in 1742 if every even
|
||||
number greater than 2 can be written this way. This remains open, though
|
||||
every even number is a sum of at most six primes (Ramaré, 1995) and every
|
||||
|
@ -29,9 +28,9 @@ int main(int argc, char *argv[]) {
|
|||
4 = 2+2
|
||||
6 = 3+3
|
||||
8 = 3+5
|
||||
10 = 3+7 5+5
|
||||
10 = 3+7 = 5+5
|
||||
12 = 5+7
|
||||
14 = 3+11 7+7
|
||||
14 = 3+11 = 7+7
|
||||
...
|
||||
=
|
||||
We'll print each different pair of primes adding up to i. We
|
||||
|
@ -39,8 +38,8 @@ only check in the range $2 \leq j \leq i/2$ to avoid counting pairs
|
|||
twice over (thus $8 = 3+5 = 5+3$, but that's hardly two different ways).
|
||||
|
||||
@<Solve Goldbach's conjecture for i@> =
|
||||
printf("%d =", i);
|
||||
printf("%d", i);
|
||||
for (int j=2; j<=i/2; j++)
|
||||
if ((isprime(j)) && (isprime(i-j)))
|
||||
printf(" %d+%d", j, i-j);
|
||||
printf(" = %d+%d", j, i-j);
|
||||
printf("\n");
|
|
@ -1,6 +1,6 @@
|
|||
Title: twinprimes
|
||||
Title: The Twin Primes Conjecture
|
||||
Author: Graham Nelson
|
||||
Purpose: A single-file test web for inweb.
|
||||
Purpose: This example of using inweb is a whole web in a single short file, to look for twin primes, a classic problem in number theory.
|
||||
Language: C
|
||||
|
||||
@h The conjecture.
|
||||
|
|
|
@ -406,7 +406,15 @@ numerically, link to the first section in them; modules likewise. Errors are
|
|||
thrown if these references to sections are in any way ambiguous. They are not
|
||||
case sensitive.
|
||||
|
||||
It's also possible to reference function names and type names, provided that
|
||||
@ Sometimes we want to make a link without literally showing the destination.
|
||||
This is simple: for example,
|
||||
= (text)
|
||||
First //the program has to configure itself -> Configuration//, then...
|
||||
=
|
||||
produces: "First //the program has to configure itself -> Configuration//,
|
||||
then..."; the text "the program has to configure itself" links to //Configuration//.
|
||||
|
||||
@ It's also possible to reference function names and type names, provided that
|
||||
the language definition supports these (see //Supporting Programming Languages//):
|
||||
this is certainly the case for C-like languages. For example,
|
||||
= (text)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
# Inweb 7
|
||||
|
||||
v7-alpha.1+1A20 'Escape to Danger' (14 April 2020)
|
||||
v7-alpha.1+1A21 'Escape to Danger' (15 April 2020)
|
||||
|
||||
## About Inweb
|
||||
|
||||
|
|
2078
Tangled/inweb.c
2078
Tangled/inweb.c
File diff suppressed because it is too large
Load diff
|
@ -1,3 +1,3 @@
|
|||
Prerelease: alpha.1
|
||||
Build Date: 14 April 2020
|
||||
Build Number: 1A20
|
||||
Build Date: 15 April 2020
|
||||
Build Number: 1A21
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
Title: The Inweb Manual and Source Code
|
||||
Author: Graham Nelson
|
||||
Purpose: A documentation page.
|
||||
Language: C
|
||||
|
||||
@ This website holds human-readable, or "woven", forms of the source code for
|
||||
the literate programming tool Inweb. To download and build Inweb, go to the
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>The Goldbach Conjecture</title>
|
||||
<title>Summing Two Primes</title>
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
@ -30,12 +30,10 @@
|
|||
</nav>
|
||||
<main role="main">
|
||||
|
||||
<!--Weave of 'The Goldbach Conjecture' generated by 7-->
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">goldbach</a></li><li><b>The Goldbach Conjecture</b></li></ul><p class="purpose">Here we verify the conjecture for small numbers.</p>
|
||||
<!--Weave of 'Summing Two Primes' generated by 7-->
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">The Goldbach Conjecture</a></li><li><b>Summing Two Primes</b></li></ul><p class="purpose">Here we verify the conjecture for small numbers.</p>
|
||||
|
||||
<ul class="toc"><li><a href="#SP1">§1. The conjecture</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§1. The conjecture. </b>So, this is a program to see if even numbers from 4 to 100 can all be written
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§1. </b>So, this is a program to see if even numbers from 4 to 100 can all be written
|
||||
as a sum of two primes. Christian Goldbach asked Euler in 1742 if every even
|
||||
number greater than 2 can be written this way. This remains open, though
|
||||
every even number is a sum of at most six primes (Ramaré, 1995) and every
|
||||
|
@ -70,9 +68,9 @@ methods.
|
|||
<span class="plain">4 = 2+2</span>
|
||||
<span class="plain">6 = 3+3</span>
|
||||
<span class="plain">8 = 3+5</span>
|
||||
<span class="plain">10 = 3+7 5+5</span>
|
||||
<span class="plain">10 = 3+7 = 5+5</span>
|
||||
<span class="plain">12 = 5+7</span>
|
||||
<span class="plain">14 = 3+11 7+7</span>
|
||||
<span class="plain">14 = 3+11 = 7+7</span>
|
||||
<span class="plain">...</span>
|
||||
</pre>
|
||||
|
||||
|
@ -88,10 +86,10 @@ twice over (thus \(8 = 3+5 = 5+3\), but that's hardly two different ways).
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="identifier">printf</span><span class="plain">(</span><span class="string">"%d ="</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">);</span>
|
||||
<span class="identifier">printf</span><span class="plain">(</span><span class="string">"%d"</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="reserved">int</span><span class="plain"> </span><span class="identifier">j</span><span class="plain">=2; </span><span class="identifier">j</span><span class="plain"><=</span><span class="identifier">i</span><span class="plain">/2; </span><span class="identifier">j</span><span class="plain">++)</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext"><a href="S-tsoe.html#SP2">isprime</a></span><span class="plain">(</span><span class="identifier">j</span><span class="plain">)) && (</span><span class="functiontext"><a href="S-tsoe.html#SP2">isprime</a></span><span class="plain">(</span><span class="identifier">i</span><span class="plain">-</span><span class="identifier">j</span><span class="plain">)))</span>
|
||||
<span class="identifier">printf</span><span class="plain">(</span><span class="string">" %d+%d"</span><span class="plain">, </span><span class="identifier">j</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">-</span><span class="identifier">j</span><span class="plain">);</span>
|
||||
<span class="identifier">printf</span><span class="plain">(</span><span class="string">" = %d+%d"</span><span class="plain">, </span><span class="identifier">j</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">-</span><span class="identifier">j</span><span class="plain">);</span>
|
||||
<span class="identifier">printf</span><span class="plain">(</span><span class="string">"\n"</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
<main role="main">
|
||||
|
||||
<!--Weave of 'The Sieve of Eratosthenes' generated by 7-->
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">goldbach</a></li><li><b>The Sieve of Eratosthenes</b></li></ul><p class="purpose">A fairly fast way to determine if small numbers are prime, given storage.</p>
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">The Goldbach Conjecture</a></li><li><b>The Sieve of Eratosthenes</b></li></ul><p class="purpose">A fairly fast way to determine if small numbers are prime, given storage.</p>
|
||||
|
||||
<ul class="toc"><li><a href="#SP1">§1. Storage</a></li><li><a href="#SP2">§2. Primality</a></li></ul><hr class="tocbar">
|
||||
|
||||
|
@ -65,7 +65,7 @@ for primality.
|
|||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">isprime<button class="popup" onclick="togglePopup('usagePopup0')">...<span class="popuptext" id="usagePopup0">Usage of <b>isprime</b>:<br>The Goldbach Conjecture - <a href="S-tgc.html#SP1_1">§1.1</a></span></button></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="reserved">int</span><span class="plain"> </span><span class="functiontext">isprime<button class="popup" onclick="togglePopup('usagePopup0')">...<span class="popuptext" id="usagePopup0">Usage of <b>isprime</b>:<br>Summing Two Primes - <a href="S-sp.html#SP1_1">§1.1</a></span></button></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="reserved">if</span><span class="plain"> (</span><span class="identifier">n</span><span class="plain"> <= </span><span class="constant">1</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="constant">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">n</span><span class="plain"> > </span><span class="constant">RANGE</span><span class="plain">) { </span><span class="identifier">printf</span><span class="plain">(</span><span class="string">"Out of range!\n"</span><span class="plain">); </span><span class="reserved">return</span><span class="plain"> </span><span class="constant">FALSE</span><span class="plain">; }</span>
|
||||
<span class="reserved">if</span><span class="plain"> (!</span><span class="identifier">sieve_performed</span><span class="plain">) </span><<span class="cwebmacro">Perform the sieve</span> <span class="cwebmacronumber">2.1</span>><span class="plain">;</span>
|
||||
|
@ -127,7 +127,7 @@ for example.
|
|||
<p class="endnote">This code is used in <a href="#SP2_1">§2.1</a>.</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="S-tgc.html">Back to 'The Goldbach Conjecture'</a></li><li><i>(This section ends Sections.)</i></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="S-sp.html">Back to 'Summing Two Primes'</a></li><li><i>(This section ends Sections.)</i></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<html>
|
||||
<head>
|
||||
<title>goldbach</title>
|
||||
<title>The Goldbach Conjecture</title>
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
@ -28,12 +28,12 @@
|
|||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><b>goldbach</b></li></ul>
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><b>The Goldbach Conjecture</b></li></ul>
|
||||
<p class="purpose">This example of using inweb is a simple program to test Goldbach's Conjecture, a classic problem in number theory. This is version 1.</p>
|
||||
<hr>
|
||||
<ul class="sectionlist">
|
||||
<li>
|
||||
<p><a href="S-tgc.html"><spon class="sectiontitle">The Goldbach Conjecture</span></a> -
|
||||
<p><a href="S-sp.html"><spon class="sectiontitle">Summing Two Primes</span></a> -
|
||||
<span class="purpose">Here we verify the conjecture for small numbers.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
|
|
|
@ -186,8 +186,10 @@ version 2 it's much tidier.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain">-></span><span class="element">md</span><span class="plain">-></span><span class="identifier">using_syntax</span><span class="plain"> >= </span><span class="constant">V2_SYNTAX</span><span class="plain">) {</span>
|
||||
<span class="reserved">source_line</span><span class="plain"> *</span><span class="identifier">L</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">-></span><span class="element">first_line</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">L</span><span class="plain">) && (</span><span class="identifier">L</span><span class="plain">-></span><span class="element">category</span><span class="plain"> == </span><span class="constant">CHAPTER_HEADING_LCAT</span><span class="plain">)) </span><span class="identifier">L</span><span class="plain"> = </span><span class="identifier">L</span><span class="plain">-></span><span class="element">next_line</span><span class="plain">;</span>
|
||||
<span class="identifier">S</span><span class="plain">-></span><span class="element">sect_purpose</span><span class="plain"> = </span><span class="functiontext"><a href="#SP2">Parser::extract_purpose</a></span><span class="plain">(</span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">?</span><span class="identifier">L</span><span class="plain">-></span><span class="identifier">next_line:</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="4-sm.html#SP8">Str::len</a></span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-></span><span class="element">sect_purpose</span><span class="plain">) > </span><span class="constant">0</span><span class="plain">) </span><span class="identifier">L</span><span class="plain">-></span><span class="element">next_line</span><span class="plain">-></span><span class="element">category</span><span class="plain"> = </span><span class="constant">PURPOSE_LCAT</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="4-sm.html#SP8">Str::len</a></span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-></span><span class="element">sect_purpose</span><span class="plain">) == </span><span class="constant">0</span><span class="plain">) {</span>
|
||||
<span class="identifier">S</span><span class="plain">-></span><span class="element">sect_purpose</span><span class="plain"> = </span><span class="functiontext"><a href="#SP2">Parser::extract_purpose</a></span><span class="plain">(</span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">?</span><span class="identifier">L</span><span class="plain">-></span><span class="identifier">next_line:</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="4-sm.html#SP8">Str::len</a></span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-></span><span class="element">sect_purpose</span><span class="plain">) > </span><span class="constant">0</span><span class="plain">) </span><span class="identifier">L</span><span class="plain">-></span><span class="element">next_line</span><span class="plain">-></span><span class="element">category</span><span class="plain"> = </span><span class="constant">PURPOSE_LCAT</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
|
@ -325,7 +327,13 @@ namespace for its functions.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="functiontext"><a href="4-pm.html#SP9">Regexp::create_mr</a></span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="4-pm.html#SP10">Regexp::match</a></span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">-></span><span class="element">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"%[(%C+)%] (%C+/%C+): (%c+)."</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="4-pm.html#SP10">Regexp::match</a></span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">-></span><span class="element">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"Implied Purpose: (%c+)"</span><span class="plain">)) {</span>
|
||||
<span class="identifier">S</span><span class="plain">-></span><span class="element">sect_purpose</span><span class="plain"> = </span><span class="functiontext"><a href="4-sm.html#SP3">Str::duplicate</a></span><span class="plain">(</span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0]);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="4-sm.html#SP8">Str::len</a></span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-></span><span class="element">sect_purpose</span><span class="plain">) > </span><span class="constant">0</span><span class="plain">) {</span>
|
||||
<span class="identifier">L</span><span class="plain">-></span><span class="element">category</span><span class="plain"> = </span><span class="constant">PURPOSE_LCAT</span><span class="plain">;</span>
|
||||
<span class="identifier">L</span><span class="plain">-></span><span class="element">is_commentary</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="4-pm.html#SP10">Regexp::match</a></span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">-></span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"%[(%C+)%] (%C+/%C+): (%c+)."</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain">-></span><span class="element">md</span><span class="plain">-></span><span class="identifier">using_syntax</span><span class="plain"> >= </span><span class="constant">V2_SYNTAX</span><span class="plain">)</span>
|
||||
<span class="functiontext"><a href="#SP3">Parser::wrong_version</a></span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-></span><span class="element">md</span><span class="plain">-></span><span class="element">using_syntax</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">,</span>
|
||||
<span class="string">"section range in header line"</span><span class="plain">, </span><span class="constant">V1_SYNTAX</span><span class="plain">);</span>
|
||||
|
|
|
@ -380,6 +380,14 @@ inserted if this is a multi-chapter web.
|
|||
<<span class="cwebmacro">Accept this as a line belonging to this section and chapter</span> <span class="cwebmacronumber">6.1.2</span>><span class="plain">;</span>
|
||||
<span class="functiontext"><a href="4-sm.html#SP15">Str::clear</a></span><span class="plain">(</span><span class="identifier">line</span><span class="plain">);</span>
|
||||
<<span class="cwebmacro">Accept this as a line belonging to this section and chapter</span> <span class="cwebmacronumber">6.1.2</span>><span class="plain">;</span>
|
||||
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">purpose</span><span class="plain"> = </span><span class="functiontext"><a href="8-bdfw.html#SP6">Bibliographic::get_datum</a></span><span class="plain">(</span><span class="identifier">W</span><span class="plain">-></span><span class="element">md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Purpose"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="4-sm.html#SP8">Str::len</a></span><span class="plain">(</span><span class="identifier">purpose</span><span class="plain">) > </span><span class="constant">0</span><span class="plain">) {</span>
|
||||
<span class="functiontext"><a href="4-sm.html#SP15">Str::clear</a></span><span class="plain">(</span><span class="identifier">line</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">line</span><span class="plain">, </span><span class="string">"Implied Purpose: %S"</span><span class="plain">, </span><span class="identifier">purpose</span><span class="plain">);</span>
|
||||
<<span class="cwebmacro">Accept this as a line belonging to this section and chapter</span> <span class="cwebmacronumber">6.1.2</span>><span class="plain">;</span>
|
||||
<span class="functiontext"><a href="4-sm.html#SP15">Str::clear</a></span><span class="plain">(</span><span class="identifier">line</span><span class="plain">);</span>
|
||||
<<span class="cwebmacro">Accept this as a line belonging to this section and chapter</span> <span class="cwebmacronumber">6.1.2</span>><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">line</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
||||
|
@ -396,7 +404,8 @@ tangled for.
|
|||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Reader::scan_source_line<button class="popup" onclick="togglePopup('usagePopup18')">...<span class="popuptext" id="usagePopup18">Usage of <b>Reader::scan_source_line</b>:<br><a href="#SP6">§6</a></span></button></span><span class="plain">(</span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">line</span><span class="plain">, </span><span class="reserved">text_file_position</span><span class="plain"> *</span><span class="identifier">tfp</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">state</span><span class="plain">) {</span>
|
||||
<span class="reserved">section</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain"> = (</span><span class="reserved">section</span><span class="plain"> *) </span><span class="identifier">state</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">l</span><span class="plain"> = </span><span class="functiontext"><a href="4-sm.html#SP8">Str::len</a></span><span class="plain">(</span><span class="identifier">line</span><span class="plain">) - </span><span class="constant">1</span><span class="plain">;</span>
|
||||
<span class="reserved">while</span><span class="plain"> ((</span><span class="identifier">l</span><span class="plain">>=0) && (</span><span class="functiontext"><a href="4-chr.html#SP2">Characters::is_space_or_tab</a></span><span class="plain">(</span><span class="functiontext"><a href="4-sm.html#SP13">Str::get_at</a></span><span class="plain">(</span><span class="identifier">line</span><span class="plain">, </span><span class="identifier">l</span><span class="plain">)))) </span><span class="functiontext"><a href="4-sm.html#SP15">Str::truncate</a></span><span class="plain">(</span><span class="identifier">line</span><span class="plain">, </span><span class="identifier">l</span><span class="plain">--);</span>
|
||||
<span class="reserved">while</span><span class="plain"> ((</span><span class="identifier">l</span><span class="plain">>=0) && (</span><span class="functiontext"><a href="4-chr.html#SP2">Characters::is_space_or_tab</a></span><span class="plain">(</span><span class="functiontext"><a href="4-sm.html#SP13">Str::get_at</a></span><span class="plain">(</span><span class="identifier">line</span><span class="plain">, </span><span class="identifier">l</span><span class="plain">))))</span>
|
||||
<span class="functiontext"><a href="4-sm.html#SP15">Str::truncate</a></span><span class="plain">(</span><span class="identifier">line</span><span class="plain">, </span><span class="identifier">l</span><span class="plain">--);</span>
|
||||
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain">-></span><span class="element">paused_until_at</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="4-sm.html#SP13">Str::get_at</a></span><span class="plain">(</span><span class="identifier">line</span><span class="plain">, </span><span class="constant">0</span><span class="plain">) == </span><span class="character">'@'</span><span class="plain">) </span><span class="identifier">S</span><span class="plain">-></span><span class="element">paused_until_at</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
||||
|
@ -427,7 +436,7 @@ tangled for.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">This code is used in <a href="#SP6_1">§6.1</a>, <a href="#SP6_2">§6.2</a> (twice), <a href="#SP6_1_1">§6.1.1</a>.</p>
|
||||
<p class="endnote">This code is used in <a href="#SP6_1">§6.1</a>, <a href="#SP6_2">§6.2</a> (four times), <a href="#SP6_1_1">§6.1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. Woven and Tangled folders. </b>We abstract these in order to be able to respond well to their not existing:
|
||||
</p>
|
||||
|
|
|
@ -426,6 +426,21 @@ is where the reference is made from.
|
|||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Colonies::resolve_reference_in_weave<button class="popup" onclick="togglePopup('usagePopup369')">...<span class="popuptext" id="usagePopup369">Usage of <b>Colonies::resolve_reference_in_weave</b>:<br><a href="#SP11">§11</a>, Format Methods - <a href="5-fm.html#SP27_4_1">§27.4.1</a><br>HTML Formats - <a href="5-hf.html#SP9_2_1">§9.2.1</a></span></button></span><span class="plain">(</span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">url</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">title</span><span class="plain">,</span>
|
||||
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">for_HTML_file</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">, </span><span class="reserved">web_md</span><span class="plain"> *</span><span class="identifier">Wm</span><span class="plain">, </span><span class="reserved">source_line</span><span class="plain"> *</span><span class="identifier">L</span><span class="plain">) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">r</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
|
||||
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="functiontext"><a href="4-pm.html#SP9">Regexp::create_mr</a></span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="4-pm.html#SP10">Regexp::match</a></span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(%c+?) -> (%c+)"</span><span class="plain">)) {</span>
|
||||
<span class="identifier">r</span><span class="plain"> = </span><span class="functiontext"><a href="#SP10">Colonies::resolve_reference_in_weave_inner</a></span><span class="plain">(</span><span class="identifier">url</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">,</span>
|
||||
<span class="identifier">for_HTML_file</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[1], </span><span class="identifier">Wm</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">title</span><span class="plain">, </span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0]);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">r</span><span class="plain"> = </span><span class="functiontext"><a href="#SP10">Colonies::resolve_reference_in_weave_inner</a></span><span class="plain">(</span><span class="identifier">url</span><span class="plain">, </span><span class="identifier">title</span><span class="plain">,</span>
|
||||
<span class="identifier">for_HTML_file</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">, </span><span class="identifier">Wm</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="functiontext"><a href="4-pm.html#SP9">Regexp::dispose_of</a></span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">r</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Colonies::resolve_reference_in_weave_inner<button class="popup" onclick="togglePopup('usagePopup370')">...<span class="popuptext" id="usagePopup370">Usage of <b>Colonies::resolve_reference_in_weave_inner</b>:<br>none</span></button></span><span class="plain">(</span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">url</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">title</span><span class="plain">,</span>
|
||||
<span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">for_HTML_file</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">, </span><span class="reserved">web_md</span><span class="plain"> *</span><span class="identifier">Wm</span><span class="plain">, </span><span class="reserved">source_line</span><span class="plain"> *</span><span class="identifier">L</span><span class="plain">) {</span>
|
||||
<span class="reserved">module</span><span class="plain"> *</span><span class="identifier">from_M</span><span class="plain"> = (</span><span class="identifier">Wm</span><span class="plain">)?(</span><span class="identifier">Wm</span><span class="plain">-></span><span class="element">as_module</span><span class="plain">):</span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">module</span><span class="plain"> *</span><span class="identifier">search_M</span><span class="plain"> = </span><span class="identifier">from_M</span><span class="plain">;</span>
|
||||
|
@ -615,7 +630,7 @@ the main one, and suffixed by <code class="display"><span class="extract">-modul
|
|||
<p class="inwebparagraph"><a id="SP11"></a><b>§11. URL management. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Colonies::link_URL<button class="popup" onclick="togglePopup('usagePopup370')">...<span class="popuptext" id="usagePopup370">Usage of <b>Colonies::link_URL</b>:<br><a href="#SP6">§6</a>, The Indexer - <a href="3-ti.html#SP6_1_8_15">§6.1.8.15</a></span></button></span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">link_text</span><span class="plain">, </span><span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">) {</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Colonies::link_URL<button class="popup" onclick="togglePopup('usagePopup371')">...<span class="popuptext" id="usagePopup371">Usage of <b>Colonies::link_URL</b>:<br><a href="#SP6">§6</a>, The Indexer - <a href="3-ti.html#SP6_1_8_15">§6.1.8.15</a></span></button></span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">link_text</span><span class="plain">, </span><span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">) {</span>
|
||||
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="functiontext"><a href="4-pm.html#SP9">Regexp::create_mr</a></span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="4-pm.html#SP10">Regexp::match</a></span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">link_text</span><span class="plain">, </span><span class="identifier">L</span><span class="string">" *//(%c+)// *"</span><span class="plain">))</span>
|
||||
<span class="functiontext"><a href="#SP11">Colonies::reference_URL</a></span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">F</span><span class="plain">);</span>
|
||||
|
@ -624,7 +639,7 @@ the main one, and suffixed by <code class="display"><span class="extract">-modul
|
|||
<span class="functiontext"><a href="4-pm.html#SP9">Regexp::dispose_of</a></span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Colonies::reference_URL<button class="popup" onclick="togglePopup('usagePopup371')">...<span class="popuptext" id="usagePopup371">Usage of <b>Colonies::reference_URL</b>:<br>The Indexer - <a href="3-ti.html#SP6_1_8_11">§6.1.8.11</a>, <a href="3-ti.html#SP6_1_8_14">§6.1.8.14</a></span></button></span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">link_text</span><span class="plain">, </span><span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">) {</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Colonies::reference_URL<button class="popup" onclick="togglePopup('usagePopup372')">...<span class="popuptext" id="usagePopup372">Usage of <b>Colonies::reference_URL</b>:<br>The Indexer - <a href="3-ti.html#SP6_1_8_11">§6.1.8.11</a>, <a href="3-ti.html#SP6_1_8_14">§6.1.8.14</a></span></button></span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">link_text</span><span class="plain">, </span><span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">) {</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">title</span><span class="plain">);</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">url</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext"><a href="#SP10">Colonies::resolve_reference_in_weave</a></span><span class="plain">(</span><span class="identifier">url</span><span class="plain">, </span><span class="identifier">title</span><span class="plain">, </span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">link_text</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">))</span>
|
||||
|
@ -635,7 +650,7 @@ the main one, and suffixed by <code class="display"><span class="extract">-modul
|
|||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">url</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Colonies::section_URL<button class="popup" onclick="togglePopup('usagePopup372')">...<span class="popuptext" id="usagePopup372">Usage of <b>Colonies::section_URL</b>:<br><a href="#SP10_5_1">§10.5.1</a>, <a href="#SP10_5_2">§10.5.2</a>, The Indexer - <a href="3-ti.html#SP6_1_8_8_1">§6.1.8.8.1</a><br>HTML Formats - <a href="5-hf.html#SP28">§28</a></span></button></span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">section_md</span><span class="plain"> *</span><span class="identifier">Sm</span><span class="plain">) {</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Colonies::section_URL<button class="popup" onclick="togglePopup('usagePopup373')">...<span class="popuptext" id="usagePopup373">Usage of <b>Colonies::section_URL</b>:<br><a href="#SP10_5_1">§10.5.1</a>, <a href="#SP10_5_2">§10.5.2</a>, The Indexer - <a href="3-ti.html#SP6_1_8_8_1">§6.1.8.8.1</a><br>HTML Formats - <a href="5-hf.html#SP28">§28</a></span></button></span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">section_md</span><span class="plain"> *</span><span class="identifier">Sm</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Sm</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">"unwoven section"</span><span class="plain">);</span>
|
||||
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="identifier">Sm</span><span class="plain">-></span><span class="element">sect_range</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="functiontext"><a href="4-sm.html#SP13">Str::get</a></span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">) == </span><span class="character">'/'</span><span class="plain">) || (</span><span class="functiontext"><a href="4-sm.html#SP13">Str::get</a></span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">) == </span><span class="character">' '</span><span class="plain">))</span>
|
||||
|
@ -645,7 +660,7 @@ the main one, and suffixed by <code class="display"><span class="extract">-modul
|
|||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">".html"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Colonies::paragraph_URL<button class="popup" onclick="togglePopup('usagePopup373')">...<span class="popuptext" id="usagePopup373">Usage of <b>Colonies::paragraph_URL</b>:<br><a href="#SP10_3">§10.3</a>, <a href="#SP10_4">§10.4</a>, HTML Formats - <a href="5-hf.html#SP7">§7</a>, <a href="5-hf.html#SP8">§8</a>, <a href="5-hf.html#SP9_3">§9.3</a>, <a href="5-hf.html#SP27">§27</a></span></button></span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">paragraph</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">section</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">a_link</span><span class="plain">) {</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Colonies::paragraph_URL<button class="popup" onclick="togglePopup('usagePopup374')">...<span class="popuptext" id="usagePopup374">Usage of <b>Colonies::paragraph_URL</b>:<br><a href="#SP10_3">§10.3</a>, <a href="#SP10_4">§10.4</a>, HTML Formats - <a href="5-hf.html#SP7">§7</a>, <a href="5-hf.html#SP8">§8</a>, <a href="5-hf.html#SP9_3">§9.3</a>, <a href="5-hf.html#SP27">§27</a></span></button></span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">paragraph</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">section</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">a_link</span><span class="plain">) {</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">linkto</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">from</span><span class="plain">) && (</span><span class="identifier">P</span><span class="plain">-></span><span class="element">under_section</span><span class="plain"> != </span><span class="identifier">from</span><span class="plain">)) {</span>
|
||||
<span class="functiontext"><a href="4-sm.html#SP16">Str::copy</a></span><span class="plain">(</span><span class="identifier">linkto</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-></span><span class="element">under_section</span><span class="plain">-></span><span class="element">md</span><span class="plain">-></span><span class="element">sect_range</span><span class="plain">);</span>
|
||||
|
|
|
@ -33,7 +33,7 @@
|
|||
<!--Weave of 'How to Write a Web' generated by 7-->
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">inweb</a></li><li><a href="index.html#M">Manual</a></li><li><b>How to Write a Web</b></li></ul><p class="purpose">How to mark up code for literate programming.</p>
|
||||
|
||||
<ul class="toc"><li><a href="#SP1">§1. The title of a section</a></li><li><a href="#SP2">§2. Paragraphing</a></li><li><a href="#SP6">§6. Conditional compilation</a></li><li><a href="#SP7">§7. Commentary</a></li><li><a href="#SP12">§12. Code samples and other extraneous matter</a></li><li><a href="#SP13">§13. Links</a></li><li><a href="#SP14">§14. Cross-references</a></li><li><a href="#SP16">§16. Figures</a></li><li><a href="#SP17">§17. Embedded video</a></li><li><a href="#SP20">§20. Mathematics notation</a></li><li><a href="#SP21">§21. Footnotes</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="#SP1">§1. The title of a section</a></li><li><a href="#SP2">§2. Paragraphing</a></li><li><a href="#SP6">§6. Conditional compilation</a></li><li><a href="#SP7">§7. Commentary</a></li><li><a href="#SP12">§12. Code samples and other extraneous matter</a></li><li><a href="#SP13">§13. Links</a></li><li><a href="#SP14">§14. Cross-references</a></li><li><a href="#SP18">§18. Figures</a></li><li><a href="#SP19">§19. Embedded video</a></li><li><a href="#SP22">§22. Mathematics notation</a></li><li><a href="#SP23">§23. Footnotes</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§1. The title of a section. </b>In any section file, there will be a few lines at the top which occur before
|
||||
the first paragraph of code begins. (The first paragraph begins on the first
|
||||
|
@ -594,7 +594,19 @@ thrown if these references to sections are in any way ambiguous. They are not
|
|||
case sensitive.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">It's also possible to reference function names and type names, provided that
|
||||
<p class="inwebparagraph"><a id="SP15"></a><b>§15. </b>Sometimes we want to make a link without literally showing the destination.
|
||||
This is simple: for example,
|
||||
</p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="plain">First //the program has to configure itself -> Configuration//, then...</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph">produces: "First <a href="1-cnf.html" class="internal">the program has to configure itself</a>,
|
||||
then..."; the text "the program has to configure itself" links to <a href="1-cnf.html" class="internal">Configuration</a>.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP16"></a><b>§16. </b>It's also possible to reference function names and type names, provided that
|
||||
the language definition supports these (see <a href="M-spl.html" class="internal">Supporting Programming Languages</a>):
|
||||
this is certainly the case for C-like languages. For example,
|
||||
</p>
|
||||
|
@ -614,7 +626,7 @@ current one, but this requires the use of a Colony file.
|
|||
See <a href="M-mwiw.html" class="internal">Making Weaves into Websites</a>.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP15"></a><b>§15. </b>Cross-references also work inside text extracts marked as <code class="display"><span class="extract">hyperlinked</span></code>.
|
||||
<p class="inwebparagraph"><a id="SP17"></a><b>§17. </b>Cross-references also work inside text extracts marked as <code class="display"><span class="extract">hyperlinked</span></code>.
|
||||
</p>
|
||||
|
||||
<pre class="display">
|
||||
|
@ -649,7 +661,7 @@ can be configured in the Contents page of a web, say like so:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP16"></a><b>§16. Figures. </b>Images to be included in weaves of a web are called "Figures", as they
|
||||
<p class="inwebparagraph"><a id="SP18"></a><b>§18. Figures. </b>Images to be included in weaves of a web are called "Figures", as they
|
||||
would be in a printed book. These images should ideally be in PNG, JPG or PDF
|
||||
format and placed in a subdirectory of the web called <code class="display"><span class="extract">Figures</span></code>: for instance,
|
||||
the weaver would seek <code class="display"><span class="extract">Fig_2_3.pdf</span></code> at pathname <code class="display"><span class="extract">Figures/Fig_2_3.pdf</span></code>.
|
||||
|
@ -680,7 +692,7 @@ to be exactly that given: it is scaled accordingly. (They can't both be
|
|||
constrained, so you can't change the aspect ratio.)
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP17"></a><b>§17. Embedded video. </b>This makes sense only for some HTML-like weave formats, but we can also
|
||||
<p class="inwebparagraph"><a id="SP19"></a><b>§19. Embedded video. </b>This makes sense only for some HTML-like weave formats, but we can also
|
||||
cause videos to be embedded:
|
||||
</p>
|
||||
|
||||
|
@ -723,7 +735,7 @@ this case was <code class="display"><span class="extract">https://youtu.be/GR3aI
|
|||
|
||||
<center><iframe width="100%" height="405" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/tracks/42803139&color=%23ff5500&auto_play=false&hide_related=false&show_comments=true&show_user=true&show_reposts=false&show_teaser=true&visual=true"></iframe>
|
||||
</center>
|
||||
<p class="inwebparagraph"><a id="SP18"></a><b>§18. </b>Adding width and height is straightforward; by default the dimensions are
|
||||
<p class="inwebparagraph"><a id="SP20"></a><b>§20. </b>Adding width and height is straightforward; by default the dimensions are
|
||||
720 by 405.
|
||||
</p>
|
||||
|
||||
|
@ -736,7 +748,7 @@ this case was <code class="display"><span class="extract">https://youtu.be/GR3aI
|
|||
arguably music has width and not height, but SoundCloud thinks otherwise).
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP19"></a><b>§19. </b>It's easy to add services. These are all handled by using prototype code
|
||||
<p class="inwebparagraph"><a id="SP21"></a><b>§21. </b>It's easy to add services. These are all handled by using prototype code
|
||||
for a suitable HTML <code class="display"><span class="extract"><iframe></span></code>, and those prototypes are stored in the
|
||||
<code class="display"><span class="extract">Embedding</span></code> subdirectory of the Inweb installation. But you can use your
|
||||
own prototypes instead, by creating an <code class="display"><span class="extract">Embedding</span></code> subdirectory of your own
|
||||
|
@ -744,7 +756,7 @@ web; this overrides the ones built in. If your service is, say, <code class="dis
|
|||
then the file would be <code class="display"><span class="extract">W/Embedding/WebTubeo.html</span></code>.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP20"></a><b>§20. Mathematics notation. </b>Literate programming is a good technique to justify code which hangs on
|
||||
<p class="inwebparagraph"><a id="SP22"></a><b>§22. Mathematics notation. </b>Literate programming is a good technique to justify code which hangs on
|
||||
unobvious pieces of mathematics or computer science, and which must therefore
|
||||
be explained carefully. Formulae or equations are a real convenience for that.
|
||||
</p>
|
||||
|
@ -803,7 +815,7 @@ deactivated entirely by writing the following in the Contents section of a web:
|
|||
<p class="inwebparagraph">(This is always <code class="display"><span class="extract">On</span></code>, the default, or <code class="display"><span class="extract">Off</span></code>.)
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP21"></a><b>§21. Footnotes. </b>Not everyone likes footnotes,<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> but sometimes they're a tidy way to make
|
||||
<p class="inwebparagraph"><a id="SP23"></a><b>§23. Footnotes. </b>Not everyone likes footnotes,<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> but sometimes they're a tidy way to make
|
||||
references.<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup>
|
||||
</p>
|
||||
|
||||
|
@ -813,7 +825,7 @@ University Press, 1999).
|
|||
Computers & Mathematics with Applications, 2, 137-39 (1976).
|
||||
<a href="#fnref:2" title="return to text"> ↩</a></p></li></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP22"></a><b>§22. </b>The content of that sentence was typed as follows:
|
||||
<p class="inwebparagraph"><a id="SP24"></a><b>§24. </b>The content of that sentence was typed as follows:
|
||||
</p>
|
||||
|
||||
<pre class="display">
|
||||
|
@ -846,7 +858,7 @@ right now it's not possible to have mathematics in a footnote when <code class="
|
|||
is in use.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP23"></a><b>§23. </b>Once again, notation may be an issue, and so it's controllable. By default,
|
||||
<p class="inwebparagraph"><a id="SP25"></a><b>§25. </b>Once again, notation may be an issue, and so it's controllable. By default,
|
||||
we have:
|
||||
</p>
|
||||
|
||||
|
|
|
@ -489,7 +489,11 @@ main {
|
|||
<main role="main">
|
||||
|
||||
<!--Weave of 'Complete Program' generated by 7-->
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><b>twinprimes</b></li></ul><p class="inwebparagraph"><a id="SP1"></a><b>§1. The conjecture. </b>It is widely believed that there are an infinite number of twin primes, that
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><b>The Twin Primes Conjecture</b></li></ul><p class="purpose">This example of using inweb is a whole web in a single short file, to look for twin primes, a classic problem in number theory.</p>
|
||||
|
||||
<ul class="toc"><li><a href="#SP1">§1. The conjecture</a></li><li><a href="#SP2">§2. Primality</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§1. The conjecture. </b>It is widely believed that there are an infinite number of twin primes, that
|
||||
is, prime numbers occurring in pairs different by 2. Twins are known to exist
|
||||
at least as far out as \(10^{388,342}\) (as of 2016), and there are infinitely
|
||||
many pairs of primes closer together than about 250 (Zhang, 2013; Tao, Maynard,
|
||||
|
|
Loading…
Reference in a new issue