Better cross-references to explicit URLs

This commit is contained in:
Graham Nelson 2020-05-01 23:49:25 +01:00
parent a845336ecd
commit dc0b313eed
19 changed files with 470 additions and 306 deletions

View file

@ -25,8 +25,6 @@ void TextWeaver::commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
(in_code)?(I"Code In Code Comments Notation"):(I"Code In Commentary Notation")); (in_code)?(I"Code In Code Comments Notation"):(I"Code In Commentary Notation"));
if (Str::ne(code_in_comments_notation, I"Off")) @<Split text and code extracts@>; if (Str::ne(code_in_comments_notation, I"Off")) @<Split text and code extracts@>;
if (within == FALSE) @<Recognose hyperlinks@>;
int display_flag = TRUE; int display_flag = TRUE;
text_stream *tex_notation = Bibliographic::get_datum(wv->weave_web->md, text_stream *tex_notation = Bibliographic::get_datum(wv->weave_web->md,
I"TeX Mathematics Displayed Notation"); I"TeX Mathematics Displayed Notation");
@ -43,6 +41,7 @@ void TextWeaver::commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
if (within) { if (within) {
TextWeaver::inline_code_fragment(tree, ap, matter); TextWeaver::inline_code_fragment(tree, ap, matter);
} else { } else {
@<Recognise hyperlinks@>;
@<Detect use of footnotes@>; @<Detect use of footnotes@>;
TextWeaver::commentary_fragment(tree, ap, matter, in_code); TextWeaver::commentary_fragment(tree, ap, matter, in_code);
} }
@ -65,7 +64,7 @@ void TextWeaver::commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
} }
} }
@<Recognose hyperlinks@> = @<Recognise hyperlinks@> =
for (int i=0; i < Str::len(matter); i++) { for (int i=0; i < Str::len(matter); i++) {
if ((Str::includes_at(matter, i, I"http://")) || if ((Str::includes_at(matter, i, I"http://")) ||
(Str::includes_at(matter, i, I"https://"))) { (Str::includes_at(matter, i, I"https://"))) {
@ -75,6 +74,15 @@ void TextWeaver::commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
Str::substr(after, Str::at(matter, i), Str::end(matter)); Str::substr(after, Str::at(matter, i), Str::end(matter));
match_results mr = Regexp::create_mr(); match_results mr = Regexp::create_mr();
if (Regexp::match(&mr, after, L"(https*://%C+)(%c*)")) { if (Regexp::match(&mr, after, L"(https*://%C+)(%c*)")) {
while (TextWeaver::boundary_character(FALSE, Str::get_last_char(mr.exp[0]))) {
wchar_t c = Str::get_last_char(mr.exp[0]);
Str::delete_last_character(mr.exp[0]);
TEMPORARY_TEXT(longer);
WRITE_TO(longer, "%c%S", c, mr.exp[1]);
Str::clear(mr.exp[1]);
Str::copy(mr.exp[1], longer);
DISCARD_TEXT(longer);
}
TextWeaver::commentary_r(tree, ap, before, within, in_code); TextWeaver::commentary_r(tree, ap, before, within, in_code);
Trees::make_child(WeaveTree::url(tree, mr.exp[0], mr.exp[0], TRUE), ap); Trees::make_child(WeaveTree::url(tree, mr.exp[0], mr.exp[0], TRUE), ap);
TextWeaver::commentary_r(tree, ap, mr.exp[1], within, in_code); TextWeaver::commentary_r(tree, ap, mr.exp[1], within, in_code);
@ -141,10 +149,14 @@ void TextWeaver::commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
@<Recognise cross-references@> = @<Recognise cross-references@> =
int N = Str::len(xref_notation); int N = Str::len(xref_notation);
for (int i=0; i < Str::len(matter); i++) { for (int i=0; i < Str::len(matter); i++) {
if ((within == FALSE) && (Str::includes_at(matter, i, xref_notation))) { if ((within == FALSE) && (Str::includes_at(matter, i, xref_notation)) &&
((i == 0) || (TextWeaver::boundary_character(TRUE,
Str::get_at(matter, i-1))))) {
int j = i + N+1; int j = i + N+1;
while (j < Str::len(matter)) { while (j < Str::len(matter)) {
if (Str::includes_at(matter, j, xref_notation)) { if ((Str::includes_at(matter, j, xref_notation)) &&
(TextWeaver::boundary_character(FALSE,
Str::get_at(matter, j+Str::len(xref_notation))))) {
int allow = FALSE; int allow = FALSE;
TEMPORARY_TEXT(before); TEMPORARY_TEXT(before);
TEMPORARY_TEXT(reference); TEMPORARY_TEXT(reference);
@ -166,19 +178,35 @@ void TextWeaver::commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
@<Attempt to resolve the cross-reference@> = @<Attempt to resolve the cross-reference@> =
TEMPORARY_TEXT(url); TEMPORARY_TEXT(url);
TEMPORARY_TEXT(title); TEMPORARY_TEXT(title);
int ext = FALSE;
if (Colonies::resolve_reference_in_weave(url, title, wv->weave_to, reference, if (Colonies::resolve_reference_in_weave(url, title, wv->weave_to, reference,
wv->weave_web->md, wv->current_weave_line)) { wv->weave_web->md, wv->current_weave_line, &ext)) {
TextWeaver::commentary_r(tree, ap, before, within, in_code); TextWeaver::commentary_r(tree, ap, before, within, in_code);
Trees::make_child(WeaveTree::url(tree, url, title, FALSE), ap); Trees::make_child(WeaveTree::url(tree, url, title, ext), ap);
TextWeaver::commentary_r(tree, ap, after, within, in_code); TextWeaver::commentary_r(tree, ap, after, within, in_code);
allow = TRUE; allow = TRUE;
} }
DISCARD_TEXT(url); DISCARD_TEXT(url);
DISCARD_TEXT(title); DISCARD_TEXT(title);
@ @ This tests whether a cross-reference is allowed to begin or end: it must
begin after and finish before a "boundary character".
Note the one-sided treatment of |:|, which is a boundary after but not before,
so that |http://| won't trigger a cross-reference with the standard |//|
xref notation.
= =
int TextWeaver::boundary_character(int before, wchar_t c) {
if (c == 0) return TRUE;
if (Characters::is_whitespace(c)) return TRUE;
if ((c == '.') || (c == ',') || (c == '!') || (c == '?') || (c == ';') ||
(c == '(')|| (c == ')')) return TRUE;
if ((before == FALSE) && (c == ':')) return TRUE;
return FALSE;
}
@ =
void TextWeaver::commentary_fragment(heterogeneous_tree *tree, tree_node *ap, void TextWeaver::commentary_fragment(heterogeneous_tree *tree, tree_node *ap,
text_stream *fragment, int in_code) { text_stream *fragment, int in_code) {
if (Str::len(fragment) > 0) if (Str::len(fragment) > 0)
@ -264,9 +292,10 @@ void TextWeaver::source_code(heterogeneous_tree *tree, tree_node *ap,
@<Attempt to resolve the cross-reference at the eleventh hour@> = @<Attempt to resolve the cross-reference at the eleventh hour@> =
TEMPORARY_TEXT(url); TEMPORARY_TEXT(url);
TEMPORARY_TEXT(title); TEMPORARY_TEXT(title);
int ext = FALSE;
if (Colonies::resolve_reference_in_weave(url, title, wv->weave_to, reference, if (Colonies::resolve_reference_in_weave(url, title, wv->weave_to, reference,
wv->weave_web->md, wv->current_weave_line)) { wv->weave_web->md, wv->current_weave_line, &ext)) {
tree_node *U = WeaveTree::url(tree, url, title, FALSE); tree_node *U = WeaveTree::url(tree, url, title, ext);
TextWeaver::source_code_piece(tree, ap, matter, colouring, from, i); TextWeaver::source_code_piece(tree, ap, matter, colouring, from, i);
Trees::make_child(U, ap); Trees::make_child(U, ap);
i = j + N; i = j + N;

View file

@ -308,27 +308,30 @@ is where the reference is made from.
= =
int Colonies::resolve_reference_in_weave(text_stream *url, text_stream *title, 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) { filename *for_HTML_file, text_stream *text, web_md *Wm, source_line *L, int *ext) {
int r = 0; int r = 0;
if (ext) *ext = FALSE;
match_results mr = Regexp::create_mr(); match_results mr = Regexp::create_mr();
if (Regexp::match(&mr, text, L"(%c+?) -> (%c+)")) { if (Regexp::match(&mr, text, L"(%c+?) -> (%c+)")) {
r = Colonies::resolve_reference_in_weave_inner(url, NULL, r = Colonies::resolve_reference_in_weave_inner(url, NULL,
for_HTML_file, mr.exp[1], Wm, L); for_HTML_file, mr.exp[1], Wm, L, ext);
WRITE_TO(title, "%S", mr.exp[0]); WRITE_TO(title, "%S", mr.exp[0]);
} else { } else {
r = Colonies::resolve_reference_in_weave_inner(url, title, r = Colonies::resolve_reference_in_weave_inner(url, title,
for_HTML_file, text, Wm, L); for_HTML_file, text, Wm, L, ext);
} }
Regexp::dispose_of(&mr); Regexp::dispose_of(&mr);
return r; return r;
} }
int Colonies::resolve_reference_in_weave_inner(text_stream *url, text_stream *title, 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) { filename *for_HTML_file, text_stream *text, web_md *Wm, source_line *L, int *ext) {
module *from_M = (Wm)?(Wm->as_module):NULL; module *from_M = (Wm)?(Wm->as_module):NULL;
module *search_M = from_M; module *search_M = from_M;
colony_member *search_CM = NULL; colony_member *search_CM = NULL;
int external = FALSE; int external = FALSE;
@<Is it an explicit URL?@>;
@<Is it the name of a member of our colony?@>; @<Is it the name of a member of our colony?@>;
@<If it contains a colon, does this indicate a section in a colony member?@>; @<If it contains a colon, does this indicate a section in a colony member?@>;
@ -358,6 +361,17 @@ int Colonies::resolve_reference_in_weave_inner(text_stream *url, text_stream *ti
} }
} }
@<Is it an explicit URL?@> =
match_results mr = Regexp::create_mr();
if (Regexp::match(&mr, text, L"https*://%c*")) {
WRITE_TO(url, "%S", text);
WRITE_TO(title, "%S", text);
Regexp::dispose_of(&mr);
if (ext) *ext = TRUE;
return TRUE;
}
Regexp::dispose_of(&mr);
@<Is it the name of a member of our colony?@> = @<Is it the name of a member of our colony?@> =
search_CM = Colonies::find(text); search_CM = Colonies::find(text);
if (search_CM) { if (search_CM) {
@ -449,7 +463,7 @@ void Colonies::link_URL(OUTPUT_STREAM, text_stream *link_text, filename *F) {
void Colonies::reference_URL(OUTPUT_STREAM, text_stream *link_text, filename *F) { void Colonies::reference_URL(OUTPUT_STREAM, text_stream *link_text, filename *F) {
TEMPORARY_TEXT(title); TEMPORARY_TEXT(title);
TEMPORARY_TEXT(url); TEMPORARY_TEXT(url);
if (Colonies::resolve_reference_in_weave(url, title, F, link_text, NULL, NULL)) if (Colonies::resolve_reference_in_weave(url, title, F, link_text, NULL, NULL, NULL))
WRITE("%S", url); WRITE("%S", url);
else else
PRINT("Warning: unable to resolve reference '%S' in navigation\n", link_text); PRINT("Warning: unable to resolve reference '%S' in navigation\n", link_text);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 581 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 51 KiB

View file

@ -24,7 +24,7 @@ said as late as the early twentieth century.
of the great age of Enlightenment letter-writing. He and Euler exchanged of the great age of Enlightenment letter-writing. He and Euler exchanged
scholarly letters for over thirty years, not something Euler would have scholarly letters for over thirty years, not something Euler would have
kept up with a duffer. Goldbach was also not, as is sometimes said, a lawyer. kept up with a duffer. Goldbach was also not, as is sometimes said, a lawyer.
See: http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html See: http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html.
An edited transcription of the letter is at: http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf An edited transcription of the letter is at: http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf
@ Computer verification has been made up to around $10^{18}$, but by rather @ Computer verification has been made up to around $10^{18}$, but by rather

View file

@ -365,25 +365,27 @@ For example,
URLs in the web are automatically recognised and a weave to HTML will URLs in the web are automatically recognised and a weave to HTML will
make them into links. For example: make them into links. For example:
= (text) = (text)
For further reading, see: https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships For further reading, see: https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships.
= =
For further reading, see: https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships For further reading, see: https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships.
Note that URLs are considered to continue to the next white space, so don't Note that URLs are considered to continue to the next white space, except
end them with full stops or commas. that any final full stops, question or exclamation marks, commas, brackets,
semicolons, or colons are disregarded. (This is why the above sentence ended
with a full stop and yet the full stop wasn't part of the reference URL.)
URLs will also be recognised in any text extract marked as |hyperlinked|. URLs will also be recognised in any text extract marked as |hyperlinked|.
For example, For example,
= (text) = (text)
Compare: https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes Compare: https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes!
= =
produces: produces:
= (hyperlinked text) = (hyperlinked text)
Compare: https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes Compare: https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes!
= =
@h Cross-references. @h Cross-references.
These are like links, but internal. These are normally written within |//| These are like links, but are internal. These are normally written within |//|
signs and are only available in the commentary of a web. They allow us to signs and are only available in the commentary of a web. They allow us to
place cross-references like so: place cross-references like so:
= (text) = (text)
@ -413,6 +415,12 @@ This is simple: for example,
= =
produces: "First //the program has to configure itself -> Configuration//, produces: "First //the program has to configure itself -> Configuration//,
then..."; the text "the program has to configure itself" links to //Configuration//. then..."; the text "the program has to configure itself" links to //Configuration//.
This is especially useful if the destination is given as an explicit URL, which
is also allowed:
= (text)
See //this biographical note -> http://mathshistory.st-andrews.ac.uk/Biographies/Gauss.html//.
=
See //this biographical note -> http://mathshistory.st-andrews.ac.uk/Biographies/Gauss.html//.
@ It's also possible to reference function names and type names, provided that @ It's also possible to reference function names and type names, provided that
the language definition supports these (see //Supporting Programming Languages//): the language definition supports these (see //Supporting Programming Languages//):
@ -440,7 +448,11 @@ produces:
See the //Manual// for more on this. See the //Manual// for more on this.
= =
This notation may be inconvenient if you need |//| for something else, but it @ Cross-references must begin after white space, or a punctuation mark (other
than a colon), and must end to be followed by more white space or another
punctuation mark (this time allowing a colon). In practice, that reduces
the risk of misunderstanding a |//| occurring in the commentary for some
other reason. All the same, you might want a different notation, so this
can be configured in the Contents page of a web, say like so: can be configured in the Contents page of a web, say like so:
= (text as Inweb) = (text as Inweb)
Cross-References Notation: &&& Cross-References Notation: &&&

View file

@ -3735,13 +3735,15 @@ void TextWeaver__commentary_text(heterogeneous_tree *tree, tree_node *ap, text_
void TextWeaver__comment_text_in_code(heterogeneous_tree *tree, tree_node *ap, text_stream *matter) ; void TextWeaver__comment_text_in_code(heterogeneous_tree *tree, tree_node *ap, text_stream *matter) ;
#line 19 "inweb/Chapter 3/The Weaver of Text.w" #line 19 "inweb/Chapter 3/The Weaver of Text.w"
void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stream *matter, int within, int in_code) ; void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stream *matter, int within, int in_code) ;
#line 182 "inweb/Chapter 3/The Weaver of Text.w" #line 200 "inweb/Chapter 3/The Weaver of Text.w"
int TextWeaver__boundary_character(int before, wchar_t c) ;
#line 210 "inweb/Chapter 3/The Weaver of Text.w"
void TextWeaver__commentary_fragment(heterogeneous_tree *tree, tree_node *ap, text_stream *fragment, int in_code) ; void TextWeaver__commentary_fragment(heterogeneous_tree *tree, tree_node *ap, text_stream *fragment, int in_code) ;
#line 188 "inweb/Chapter 3/The Weaver of Text.w" #line 216 "inweb/Chapter 3/The Weaver of Text.w"
void TextWeaver__inline_code_fragment(heterogeneous_tree *tree, tree_node *ap, text_stream *fragment) ; void TextWeaver__inline_code_fragment(heterogeneous_tree *tree, tree_node *ap, text_stream *fragment) ;
#line 201 "inweb/Chapter 3/The Weaver of Text.w" #line 229 "inweb/Chapter 3/The Weaver of Text.w"
void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap, text_stream *matter, text_stream *colouring, int linked) ; void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap, text_stream *matter, text_stream *colouring, int linked) ;
#line 305 "inweb/Chapter 3/The Weaver of Text.w" #line 334 "inweb/Chapter 3/The Weaver of Text.w"
void TextWeaver__source_code_piece(heterogeneous_tree *tree, tree_node *ap, text_stream *matter, text_stream *colouring, int from, int to) ; void TextWeaver__source_code_piece(heterogeneous_tree *tree, tree_node *ap, text_stream *matter, text_stream *colouring, int from, int to) ;
#line 14 "inweb/Chapter 3/The Tangler.w" #line 14 "inweb/Chapter 3/The Tangler.w"
void Tangler__tangle(web *W, tangle_target *target, filename *dest_file) ; void Tangler__tangle(web *W, tangle_target *target, filename *dest_file) ;
@ -4240,18 +4242,18 @@ pathname * Colonies__assets_path(void) ;
#line 284 "inweb/Chapter 6/Colonies.w" #line 284 "inweb/Chapter 6/Colonies.w"
pathname * Colonies__patterns_path(void) ; pathname * Colonies__patterns_path(void) ;
#line 310 "inweb/Chapter 6/Colonies.w" #line 310 "inweb/Chapter 6/Colonies.w"
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 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 *ext) ;
#line 325 "inweb/Chapter 6/Colonies.w" #line 327 "inweb/Chapter 6/Colonies.w"
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) ; 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, int *ext) ;
#line 440 "inweb/Chapter 6/Colonies.w" #line 454 "inweb/Chapter 6/Colonies.w"
void Colonies__link_URL(OUTPUT_STREAM, text_stream *link_text, filename *F) ; void Colonies__link_URL(OUTPUT_STREAM, text_stream *link_text, filename *F) ;
#line 449 "inweb/Chapter 6/Colonies.w" #line 463 "inweb/Chapter 6/Colonies.w"
void Colonies__reference_URL(OUTPUT_STREAM, text_stream *link_text, filename *F) ; void Colonies__reference_URL(OUTPUT_STREAM, text_stream *link_text, filename *F) ;
#line 460 "inweb/Chapter 6/Colonies.w" #line 474 "inweb/Chapter 6/Colonies.w"
void Colonies__section_URL(OUTPUT_STREAM, section_md *Sm) ; void Colonies__section_URL(OUTPUT_STREAM, section_md *Sm) ;
#line 470 "inweb/Chapter 6/Colonies.w" #line 484 "inweb/Chapter 6/Colonies.w"
void Colonies__paragraph_URL(OUTPUT_STREAM, paragraph *P, filename *from) ; void Colonies__paragraph_URL(OUTPUT_STREAM, paragraph *P, filename *from) ;
#line 491 "inweb/Chapter 6/Colonies.w" #line 505 "inweb/Chapter 6/Colonies.w"
void Colonies__paragraph_anchor(OUTPUT_STREAM, paragraph *P) ; void Colonies__paragraph_anchor(OUTPUT_STREAM, paragraph *P) ;
void register_tangled_nonterminals(void); void register_tangled_nonterminals(void);
text_stream *TL_IS_0 = NULL; text_stream *TL_IS_0 = NULL;
@ -20058,7 +20060,7 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
(in_code)?(TL_IS_257):(TL_IS_258)); (in_code)?(TL_IS_257):(TL_IS_258));
if (Str__ne(code_in_comments_notation, TL_IS_259)) if (Str__ne(code_in_comments_notation, TL_IS_259))
{ {
#line 52 "inweb/Chapter 3/The Weaver of Text.w" #line 51 "inweb/Chapter 3/The Weaver of Text.w"
for (int i=0; i < Str__len(matter); i++) { for (int i=0; i < Str__len(matter); i++) {
if (Str__get_at(matter, i) == '\\') i += Str__len(code_in_comments_notation) - 1; if (Str__get_at(matter, i) == '\\') i += Str__len(code_in_comments_notation) - 1;
else if (Str__includes_at(matter, i, code_in_comments_notation)) { else if (Str__includes_at(matter, i, code_in_comments_notation)) {
@ -20079,9 +20081,140 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
#line 26 "inweb/Chapter 3/The Weaver of Text.w" #line 26 "inweb/Chapter 3/The Weaver of Text.w"
; ;
if (within == FALSE) int display_flag = TRUE;
text_stream *tex_notation = Bibliographic__get_datum(wv->weave_web->md,
TL_IS_260);
if (Str__ne(tex_notation, TL_IS_261))
{ {
#line 69 "inweb/Chapter 3/The Weaver of Text.w" #line 99 "inweb/Chapter 3/The Weaver of Text.w"
int N = Str__len(tex_notation);
for (int i=0; i < Str__len(matter); i++) {
if ((within == FALSE) && (Str__includes_at(matter, i, tex_notation))) {
int j = i + N;
while (j < Str__len(matter)) {
if (Str__includes_at(matter, j, tex_notation)) {
int allow = FALSE;
TEMPORARY_TEXT(before);
TEMPORARY_TEXT(maths);
TEMPORARY_TEXT(after);
Str__substr(before, Str__start(matter), Str__at(matter, i));
Str__substr(maths, Str__at(matter, i + N), Str__at(matter, j));
Str__substr(after, Str__at(matter, j + N), Str__end(matter));
TextWeaver__commentary_r(tree, ap, before, within, in_code);
Trees__make_child(WeaveTree__mathematics(tree, maths, display_flag), ap);
TextWeaver__commentary_r(tree, ap, after, within, in_code);
allow = TRUE;
DISCARD_TEXT(before);
DISCARD_TEXT(maths);
DISCARD_TEXT(after);
if (allow) return;
}
j++;
}
}
}
}
#line 31 "inweb/Chapter 3/The Weaver of Text.w"
;
display_flag = FALSE;
tex_notation = Bibliographic__get_datum(wv->weave_web->md,
TL_IS_262);
if (Str__ne(tex_notation, TL_IS_263))
{
#line 99 "inweb/Chapter 3/The Weaver of Text.w"
int N = Str__len(tex_notation);
for (int i=0; i < Str__len(matter); i++) {
if ((within == FALSE) && (Str__includes_at(matter, i, tex_notation))) {
int j = i + N;
while (j < Str__len(matter)) {
if (Str__includes_at(matter, j, tex_notation)) {
int allow = FALSE;
TEMPORARY_TEXT(before);
TEMPORARY_TEXT(maths);
TEMPORARY_TEXT(after);
Str__substr(before, Str__start(matter), Str__at(matter, i));
Str__substr(maths, Str__at(matter, i + N), Str__at(matter, j));
Str__substr(after, Str__at(matter, j + N), Str__end(matter));
TextWeaver__commentary_r(tree, ap, before, within, in_code);
Trees__make_child(WeaveTree__mathematics(tree, maths, display_flag), ap);
TextWeaver__commentary_r(tree, ap, after, within, in_code);
allow = TRUE;
DISCARD_TEXT(before);
DISCARD_TEXT(maths);
DISCARD_TEXT(after);
if (allow) return;
}
j++;
}
}
}
}
#line 35 "inweb/Chapter 3/The Weaver of Text.w"
;
text_stream *xref_notation = Bibliographic__get_datum(wv->weave_web->md,
TL_IS_264);
if (Str__ne(xref_notation, TL_IS_265))
{
#line 150 "inweb/Chapter 3/The Weaver of Text.w"
int N = Str__len(xref_notation);
for (int i=0; i < Str__len(matter); i++) {
if ((within == FALSE) && (Str__includes_at(matter, i, xref_notation)) &&
((i == 0) || (TextWeaver__boundary_character(TRUE,
Str__get_at(matter, i-1))))) {
int j = i + N+1;
while (j < Str__len(matter)) {
if ((Str__includes_at(matter, j, xref_notation)) &&
(TextWeaver__boundary_character(FALSE,
Str__get_at(matter, j+Str__len(xref_notation))))) {
int allow = FALSE;
TEMPORARY_TEXT(before);
TEMPORARY_TEXT(reference);
TEMPORARY_TEXT(after);
Str__substr(before, Str__start(matter), Str__at(matter, i));
Str__substr(reference, Str__at(matter, i + N), Str__at(matter, j));
Str__substr(after, Str__at(matter, j + N), Str__end(matter));
{
#line 179 "inweb/Chapter 3/The Weaver of Text.w"
TEMPORARY_TEXT(url);
TEMPORARY_TEXT(title);
int ext = FALSE;
if (Colonies__resolve_reference_in_weave(url, title, wv->weave_to, reference,
wv->weave_web->md, wv->current_weave_line, &ext)) {
TextWeaver__commentary_r(tree, ap, before, within, in_code);
Trees__make_child(WeaveTree__url(tree, url, title, ext), ap);
TextWeaver__commentary_r(tree, ap, after, within, in_code);
allow = TRUE;
}
DISCARD_TEXT(url);
DISCARD_TEXT(title);
}
#line 167 "inweb/Chapter 3/The Weaver of Text.w"
;
DISCARD_TEXT(before);
DISCARD_TEXT(reference);
DISCARD_TEXT(after);
if (allow) return;
}
j++;
}
}
}
}
#line 39 "inweb/Chapter 3/The Weaver of Text.w"
;
if (within) {
TextWeaver__inline_code_fragment(tree, ap, matter);
} else {
{
#line 68 "inweb/Chapter 3/The Weaver of Text.w"
for (int i=0; i < Str__len(matter); i++) { for (int i=0; i < Str__len(matter); i++) {
if ((Str__includes_at(matter, i, TL_IS_266)) || if ((Str__includes_at(matter, i, TL_IS_266)) ||
(Str__includes_at(matter, i, TL_IS_267))) { (Str__includes_at(matter, i, TL_IS_267))) {
@ -20091,6 +20224,15 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
Str__substr(after, Str__at(matter, i), Str__end(matter)); Str__substr(after, Str__at(matter, i), Str__end(matter));
match_results mr = Regexp__create_mr(); match_results mr = Regexp__create_mr();
if (Regexp__match(&mr, after, L"(https*://%C+)(%c*)")) { if (Regexp__match(&mr, after, L"(https*://%C+)(%c*)")) {
while (TextWeaver__boundary_character(FALSE, Str__get_last_char(mr.exp[0]))) {
wchar_t c = Str__get_last_char(mr.exp[0]);
Str__delete_last_character(mr.exp[0]);
TEMPORARY_TEXT(longer);
WRITE_TO(longer, "%c%S", c, mr.exp[1]);
Str__clear(mr.exp[1]);
Str__copy(mr.exp[1], longer);
DISCARD_TEXT(longer);
}
TextWeaver__commentary_r(tree, ap, before, within, in_code); TextWeaver__commentary_r(tree, ap, before, within, in_code);
Trees__make_child(WeaveTree__url(tree, mr.exp[0], mr.exp[0], TRUE), ap); Trees__make_child(WeaveTree__url(tree, mr.exp[0], mr.exp[0], TRUE), ap);
TextWeaver__commentary_r(tree, ap, mr.exp[1], within, in_code); TextWeaver__commentary_r(tree, ap, mr.exp[1], within, in_code);
@ -20104,138 +20246,11 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
} }
} }
#line 28 "inweb/Chapter 3/The Weaver of Text.w" #line 44 "inweb/Chapter 3/The Weaver of Text.w"
; ;
int display_flag = TRUE;
text_stream *tex_notation = Bibliographic__get_datum(wv->weave_web->md,
TL_IS_260);
if (Str__ne(tex_notation, TL_IS_261))
{
#line 91 "inweb/Chapter 3/The Weaver of Text.w"
int N = Str__len(tex_notation);
for (int i=0; i < Str__len(matter); i++) {
if ((within == FALSE) && (Str__includes_at(matter, i, tex_notation))) {
int j = i + N;
while (j < Str__len(matter)) {
if (Str__includes_at(matter, j, tex_notation)) {
int allow = FALSE;
TEMPORARY_TEXT(before);
TEMPORARY_TEXT(maths);
TEMPORARY_TEXT(after);
Str__substr(before, Str__start(matter), Str__at(matter, i));
Str__substr(maths, Str__at(matter, i + N), Str__at(matter, j));
Str__substr(after, Str__at(matter, j + N), Str__end(matter));
TextWeaver__commentary_r(tree, ap, before, within, in_code);
Trees__make_child(WeaveTree__mathematics(tree, maths, display_flag), ap);
TextWeaver__commentary_r(tree, ap, after, within, in_code);
allow = TRUE;
DISCARD_TEXT(before);
DISCARD_TEXT(maths);
DISCARD_TEXT(after);
if (allow) return;
}
j++;
}
}
}
}
#line 33 "inweb/Chapter 3/The Weaver of Text.w"
;
display_flag = FALSE;
tex_notation = Bibliographic__get_datum(wv->weave_web->md,
TL_IS_262);
if (Str__ne(tex_notation, TL_IS_263))
{
#line 91 "inweb/Chapter 3/The Weaver of Text.w"
int N = Str__len(tex_notation);
for (int i=0; i < Str__len(matter); i++) {
if ((within == FALSE) && (Str__includes_at(matter, i, tex_notation))) {
int j = i + N;
while (j < Str__len(matter)) {
if (Str__includes_at(matter, j, tex_notation)) {
int allow = FALSE;
TEMPORARY_TEXT(before);
TEMPORARY_TEXT(maths);
TEMPORARY_TEXT(after);
Str__substr(before, Str__start(matter), Str__at(matter, i));
Str__substr(maths, Str__at(matter, i + N), Str__at(matter, j));
Str__substr(after, Str__at(matter, j + N), Str__end(matter));
TextWeaver__commentary_r(tree, ap, before, within, in_code);
Trees__make_child(WeaveTree__mathematics(tree, maths, display_flag), ap);
TextWeaver__commentary_r(tree, ap, after, within, in_code);
allow = TRUE;
DISCARD_TEXT(before);
DISCARD_TEXT(maths);
DISCARD_TEXT(after);
if (allow) return;
}
j++;
}
}
}
}
#line 37 "inweb/Chapter 3/The Weaver of Text.w"
;
text_stream *xref_notation = Bibliographic__get_datum(wv->weave_web->md,
TL_IS_264);
if (Str__ne(xref_notation, TL_IS_265))
{
#line 142 "inweb/Chapter 3/The Weaver of Text.w"
int N = Str__len(xref_notation);
for (int i=0; i < Str__len(matter); i++) {
if ((within == FALSE) && (Str__includes_at(matter, i, xref_notation))) {
int j = i + N+1;
while (j < Str__len(matter)) {
if (Str__includes_at(matter, j, xref_notation)) {
int allow = FALSE;
TEMPORARY_TEXT(before);
TEMPORARY_TEXT(reference);
TEMPORARY_TEXT(after);
Str__substr(before, Str__start(matter), Str__at(matter, i));
Str__substr(reference, Str__at(matter, i + N), Str__at(matter, j));
Str__substr(after, Str__at(matter, j + N), Str__end(matter));
{
#line 167 "inweb/Chapter 3/The Weaver of Text.w"
TEMPORARY_TEXT(url);
TEMPORARY_TEXT(title);
if (Colonies__resolve_reference_in_weave(url, title, wv->weave_to, reference,
wv->weave_web->md, wv->current_weave_line)) {
TextWeaver__commentary_r(tree, ap, before, within, in_code);
Trees__make_child(WeaveTree__url(tree, url, title, FALSE), ap);
TextWeaver__commentary_r(tree, ap, after, within, in_code);
allow = TRUE;
}
DISCARD_TEXT(url);
DISCARD_TEXT(title);
}
#line 155 "inweb/Chapter 3/The Weaver of Text.w"
;
DISCARD_TEXT(before);
DISCARD_TEXT(reference);
DISCARD_TEXT(after);
if (allow) return;
}
j++;
}
}
}
}
#line 41 "inweb/Chapter 3/The Weaver of Text.w"
;
if (within) {
TextWeaver__inline_code_fragment(tree, ap, matter);
} else {
{ {
#line 119 "inweb/Chapter 3/The Weaver of Text.w" #line 127 "inweb/Chapter 3/The Weaver of Text.w"
TEMPORARY_TEXT(before); TEMPORARY_TEXT(before);
TEMPORARY_TEXT(cue); TEMPORARY_TEXT(cue);
TEMPORARY_TEXT(after); TEMPORARY_TEXT(after);
@ -20259,13 +20274,23 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
if (allow) return; if (allow) return;
} }
#line 46 "inweb/Chapter 3/The Weaver of Text.w" #line 45 "inweb/Chapter 3/The Weaver of Text.w"
; ;
TextWeaver__commentary_fragment(tree, ap, matter, in_code); TextWeaver__commentary_fragment(tree, ap, matter, in_code);
} }
} }
#line 182 "inweb/Chapter 3/The Weaver of Text.w" #line 200 "inweb/Chapter 3/The Weaver of Text.w"
int TextWeaver__boundary_character(int before, wchar_t c) {
if (c == 0) return TRUE;
if (Characters__is_whitespace(c)) return TRUE;
if ((c == '.') || (c == ',') || (c == '!') || (c == '?') || (c == ';') ||
(c == '(')|| (c == ')')) return TRUE;
if ((before == FALSE) && (c == ':')) return TRUE;
return FALSE;
}
#line 210 "inweb/Chapter 3/The Weaver of Text.w"
void TextWeaver__commentary_fragment(heterogeneous_tree *tree, tree_node *ap, void TextWeaver__commentary_fragment(heterogeneous_tree *tree, tree_node *ap,
text_stream *fragment, int in_code) { text_stream *fragment, int in_code) {
if (Str__len(fragment) > 0) if (Str__len(fragment) > 0)
@ -20282,7 +20307,7 @@ void TextWeaver__inline_code_fragment(heterogeneous_tree *tree, tree_node *ap, t
Trees__make_child(SC, I); Trees__make_child(SC, I);
} }
#line 201 "inweb/Chapter 3/The Weaver of Text.w" #line 229 "inweb/Chapter 3/The Weaver of Text.w"
void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap, void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap,
text_stream *matter, text_stream *colouring, int linked) { text_stream *matter, text_stream *colouring, int linked) {
weave_document_node *C = RETRIEVE_POINTER_weave_document_node(tree->root->content); weave_document_node *C = RETRIEVE_POINTER_weave_document_node(tree->root->content);
@ -20293,7 +20318,7 @@ void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap,
if (linked) { if (linked) {
{ {
#line 233 "inweb/Chapter 3/The Weaver of Text.w" #line 261 "inweb/Chapter 3/The Weaver of Text.w"
if ((Str__includes_at(matter, i, TL_IS_271)) || if ((Str__includes_at(matter, i, TL_IS_271)) ||
(Str__includes_at(matter, i, TL_IS_272))) { (Str__includes_at(matter, i, TL_IS_272))) {
TEMPORARY_TEXT(after); TEMPORARY_TEXT(after);
@ -20310,14 +20335,14 @@ void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap,
} }
} }
#line 209 "inweb/Chapter 3/The Weaver of Text.w" #line 237 "inweb/Chapter 3/The Weaver of Text.w"
; ;
text_stream *xref_notation = Bibliographic__get_datum(wv->weave_web->md, text_stream *xref_notation = Bibliographic__get_datum(wv->weave_web->md,
TL_IS_269); TL_IS_269);
if (Str__ne(xref_notation, TL_IS_270)) if (Str__ne(xref_notation, TL_IS_270))
{ {
#line 249 "inweb/Chapter 3/The Weaver of Text.w" #line 277 "inweb/Chapter 3/The Weaver of Text.w"
int N = Str__len(xref_notation); int N = Str__len(xref_notation);
if ((Str__includes_at(matter, i, xref_notation))) { if ((Str__includes_at(matter, i, xref_notation))) {
int j = i + N+1; int j = i + N+1;
@ -20327,12 +20352,13 @@ void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap,
Str__substr(reference, Str__at(matter, i + N), Str__at(matter, j)); Str__substr(reference, Str__at(matter, i + N), Str__at(matter, j));
{ {
#line 265 "inweb/Chapter 3/The Weaver of Text.w" #line 293 "inweb/Chapter 3/The Weaver of Text.w"
TEMPORARY_TEXT(url); TEMPORARY_TEXT(url);
TEMPORARY_TEXT(title); TEMPORARY_TEXT(title);
int ext = FALSE;
if (Colonies__resolve_reference_in_weave(url, title, wv->weave_to, reference, if (Colonies__resolve_reference_in_weave(url, title, wv->weave_to, reference,
wv->weave_web->md, wv->current_weave_line)) { wv->weave_web->md, wv->current_weave_line, &ext)) {
tree_node *U = WeaveTree__url(tree, url, title, FALSE); tree_node *U = WeaveTree__url(tree, url, title, ext);
TextWeaver__source_code_piece(tree, ap, matter, colouring, from, i); TextWeaver__source_code_piece(tree, ap, matter, colouring, from, i);
Trees__make_child(U, ap); Trees__make_child(U, ap);
i = j + N; i = j + N;
@ -20342,7 +20368,7 @@ void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap,
DISCARD_TEXT(title); DISCARD_TEXT(title);
} }
#line 256 "inweb/Chapter 3/The Weaver of Text.w" #line 284 "inweb/Chapter 3/The Weaver of Text.w"
; ;
DISCARD_TEXT(reference); DISCARD_TEXT(reference);
break; break;
@ -20352,7 +20378,7 @@ void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap,
} }
} }
#line 213 "inweb/Chapter 3/The Weaver of Text.w" #line 241 "inweb/Chapter 3/The Weaver of Text.w"
; ;
} }
if ((Str__get_at(colouring, i) == FUNCTION_COLOUR) && if ((Str__get_at(colouring, i) == FUNCTION_COLOUR) &&
@ -20365,7 +20391,7 @@ void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap,
wv->current_weave_line->owning_section, fname, FUNCTION_COLOUR)) wv->current_weave_line->owning_section, fname, FUNCTION_COLOUR))
{ {
#line 279 "inweb/Chapter 3/The Weaver of Text.w" #line 308 "inweb/Chapter 3/The Weaver of Text.w"
language_function *fn = Analyser__get_function( language_function *fn = Analyser__get_function(
wv->current_weave_line->owning_section, fname, FUNCTION_COLOUR); wv->current_weave_line->owning_section, fname, FUNCTION_COLOUR);
if (fn) { if (fn) {
@ -20392,7 +20418,7 @@ void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap,
} }
} }
#line 223 "inweb/Chapter 3/The Weaver of Text.w" #line 251 "inweb/Chapter 3/The Weaver of Text.w"
; ;
DISCARD_TEXT(fname); DISCARD_TEXT(fname);
} }
@ -20402,7 +20428,7 @@ void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap,
TextWeaver__source_code_piece(tree, ap, matter, colouring, from, Str__len(matter)); TextWeaver__source_code_piece(tree, ap, matter, colouring, from, Str__len(matter));
} }
#line 305 "inweb/Chapter 3/The Weaver of Text.w" #line 334 "inweb/Chapter 3/The Weaver of Text.w"
void TextWeaver__source_code_piece(heterogeneous_tree *tree, tree_node *ap, void TextWeaver__source_code_piece(heterogeneous_tree *tree, tree_node *ap,
text_stream *matter, text_stream *colouring, int from, int to) { text_stream *matter, text_stream *colouring, int from, int to) {
if (to > from) { if (to > from) {
@ -28712,22 +28738,24 @@ pathname *Colonies__patterns_path(void) {
#line 310 "inweb/Chapter 6/Colonies.w" #line 310 "inweb/Chapter 6/Colonies.w"
int Colonies__resolve_reference_in_weave(text_stream *url, text_stream *title, 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) { filename *for_HTML_file, text_stream *text, web_md *Wm, source_line *L, int *ext) {
int r = 0; int r = 0;
if (ext) *ext = FALSE;
match_results mr = Regexp__create_mr(); match_results mr = Regexp__create_mr();
if (Regexp__match(&mr, text, L"(%c+?) -> (%c+)")) { if (Regexp__match(&mr, text, L"(%c+?) -> (%c+)")) {
r = Colonies__resolve_reference_in_weave_inner(url, NULL, r = Colonies__resolve_reference_in_weave_inner(url, NULL,
for_HTML_file, mr.exp[1], Wm, L); for_HTML_file, mr.exp[1], Wm, L, ext);
WRITE_TO(title, "%S", mr.exp[0]); WRITE_TO(title, "%S", mr.exp[0]);
} else { } else {
r = Colonies__resolve_reference_in_weave_inner(url, title, r = Colonies__resolve_reference_in_weave_inner(url, title,
for_HTML_file, text, Wm, L); for_HTML_file, text, Wm, L, ext);
} }
Regexp__dispose_of(&mr); Regexp__dispose_of(&mr);
return r; return r;
} }
int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *title, 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) { filename *for_HTML_file, text_stream *text, web_md *Wm, source_line *L, int *ext) {
module *from_M = (Wm)?(Wm->as_module):NULL; module *from_M = (Wm)?(Wm->as_module):NULL;
module *search_M = from_M; module *search_M = from_M;
colony_member *search_CM = NULL; colony_member *search_CM = NULL;
@ -28735,7 +28763,23 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti
{ {
#line 362 "inweb/Chapter 6/Colonies.w" #line 365 "inweb/Chapter 6/Colonies.w"
match_results mr = Regexp__create_mr();
if (Regexp__match(&mr, text, L"https*://%c*")) {
WRITE_TO(url, "%S", text);
WRITE_TO(title, "%S", text);
Regexp__dispose_of(&mr);
if (ext) *ext = TRUE;
return TRUE;
}
Regexp__dispose_of(&mr);
}
#line 334 "inweb/Chapter 6/Colonies.w"
;
{
#line 376 "inweb/Chapter 6/Colonies.w"
search_CM = Colonies__find(text); search_CM = Colonies__find(text);
if (search_CM) { if (search_CM) {
module *found_M = Colonies__as_module(search_CM, L, Wm); module *found_M = Colonies__as_module(search_CM, L, Wm);
@ -28744,11 +28788,11 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti
WRITE_TO(title, "%S", search_CM->name); WRITE_TO(title, "%S", search_CM->name);
{ {
#line 409 "inweb/Chapter 6/Colonies.w" #line 423 "inweb/Chapter 6/Colonies.w"
if (found_M == NULL) internal_error("could not locate M"); if (found_M == NULL) internal_error("could not locate M");
if (search_CM) if (search_CM)
{ {
#line 415 "inweb/Chapter 6/Colonies.w" #line 429 "inweb/Chapter 6/Colonies.w"
pathname *from = Filenames__up(for_HTML_file); pathname *from = Filenames__up(for_HTML_file);
pathname *to = search_CM->weave_path; pathname *to = search_CM->weave_path;
Pathnames__relative_URL(url, from, to); Pathnames__relative_URL(url, from, to);
@ -28758,11 +28802,11 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti
WRITE_TO(title, " (in %S)", search_CM->name); WRITE_TO(title, " (in %S)", search_CM->name);
} }
#line 410 "inweb/Chapter 6/Colonies.w" #line 424 "inweb/Chapter 6/Colonies.w"
else else
{ {
#line 428 "inweb/Chapter 6/Colonies.w" #line 442 "inweb/Chapter 6/Colonies.w"
if (found_M == from_M) { if (found_M == from_M) {
Colonies__section_URL(url, found_Sm); Colonies__section_URL(url, found_Sm);
} else { } else {
@ -28773,21 +28817,21 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti
} }
} }
#line 411 "inweb/Chapter 6/Colonies.w" #line 425 "inweb/Chapter 6/Colonies.w"
; ;
return TRUE; return TRUE;
} }
#line 368 "inweb/Chapter 6/Colonies.w" #line 382 "inweb/Chapter 6/Colonies.w"
; ;
} }
} }
#line 332 "inweb/Chapter 6/Colonies.w" #line 335 "inweb/Chapter 6/Colonies.w"
; ;
{ {
#line 372 "inweb/Chapter 6/Colonies.w" #line 386 "inweb/Chapter 6/Colonies.w"
match_results mr = Regexp__create_mr(); match_results mr = Regexp__create_mr();
if (Regexp__match(&mr, text, L"(%c*?): (%c*)")) { if (Regexp__match(&mr, text, L"(%c*?): (%c*)")) {
search_CM = Colonies__find(mr.exp[0]); search_CM = Colonies__find(mr.exp[0]);
@ -28803,7 +28847,7 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti
Regexp__dispose_of(&mr); Regexp__dispose_of(&mr);
} }
#line 333 "inweb/Chapter 6/Colonies.w" #line 336 "inweb/Chapter 6/Colonies.w"
; ;
module *found_M = NULL; module *found_M = NULL;
@ -28815,7 +28859,7 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti
if ((L) && (external == FALSE)) { if ((L) && (external == FALSE)) {
{ {
#line 387 "inweb/Chapter 6/Colonies.w" #line 401 "inweb/Chapter 6/Colonies.w"
language_function *fn; language_function *fn;
LOOP_OVER(fn, language_function) { LOOP_OVER(fn, language_function) {
if (Str__eq_insensitive(fn->function_name, text)) { if (Str__eq_insensitive(fn->function_name, text)) {
@ -28827,11 +28871,11 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti
} }
} }
#line 342 "inweb/Chapter 6/Colonies.w" #line 345 "inweb/Chapter 6/Colonies.w"
; ;
{ {
#line 398 "inweb/Chapter 6/Colonies.w" #line 412 "inweb/Chapter 6/Colonies.w"
language_type *str; language_type *str;
LOOP_OVER(str, language_type) { LOOP_OVER(str, language_type) {
if (Str__eq_insensitive(str->structure_name, text)) { if (Str__eq_insensitive(str->structure_name, text)) {
@ -28843,7 +28887,7 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti
} }
} }
#line 343 "inweb/Chapter 6/Colonies.w" #line 346 "inweb/Chapter 6/Colonies.w"
; ;
} }
TEMPORARY_TEXT(err); TEMPORARY_TEXT(err);
@ -28859,11 +28903,11 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti
} else { } else {
{ {
#line 409 "inweb/Chapter 6/Colonies.w" #line 423 "inweb/Chapter 6/Colonies.w"
if (found_M == NULL) internal_error("could not locate M"); if (found_M == NULL) internal_error("could not locate M");
if (search_CM) if (search_CM)
{ {
#line 415 "inweb/Chapter 6/Colonies.w" #line 429 "inweb/Chapter 6/Colonies.w"
pathname *from = Filenames__up(for_HTML_file); pathname *from = Filenames__up(for_HTML_file);
pathname *to = search_CM->weave_path; pathname *to = search_CM->weave_path;
Pathnames__relative_URL(url, from, to); Pathnames__relative_URL(url, from, to);
@ -28873,11 +28917,11 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti
WRITE_TO(title, " (in %S)", search_CM->name); WRITE_TO(title, " (in %S)", search_CM->name);
} }
#line 410 "inweb/Chapter 6/Colonies.w" #line 424 "inweb/Chapter 6/Colonies.w"
else else
{ {
#line 428 "inweb/Chapter 6/Colonies.w" #line 442 "inweb/Chapter 6/Colonies.w"
if (found_M == from_M) { if (found_M == from_M) {
Colonies__section_URL(url, found_Sm); Colonies__section_URL(url, found_Sm);
} else { } else {
@ -28888,18 +28932,18 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti
} }
} }
#line 411 "inweb/Chapter 6/Colonies.w" #line 425 "inweb/Chapter 6/Colonies.w"
; ;
return TRUE; return TRUE;
} }
#line 356 "inweb/Chapter 6/Colonies.w" #line 359 "inweb/Chapter 6/Colonies.w"
; ;
return TRUE; return TRUE;
} }
} }
#line 440 "inweb/Chapter 6/Colonies.w" #line 454 "inweb/Chapter 6/Colonies.w"
void Colonies__link_URL(OUTPUT_STREAM, text_stream *link_text, filename *F) { void Colonies__link_URL(OUTPUT_STREAM, text_stream *link_text, filename *F) {
match_results mr = Regexp__create_mr(); match_results mr = Regexp__create_mr();
if (Regexp__match(&mr, link_text, L" *//(%c+)// *")) if (Regexp__match(&mr, link_text, L" *//(%c+)// *"))
@ -28912,7 +28956,7 @@ void Colonies__link_URL(OUTPUT_STREAM, text_stream *link_text, filename *F) {
void Colonies__reference_URL(OUTPUT_STREAM, text_stream *link_text, filename *F) { void Colonies__reference_URL(OUTPUT_STREAM, text_stream *link_text, filename *F) {
TEMPORARY_TEXT(title); TEMPORARY_TEXT(title);
TEMPORARY_TEXT(url); TEMPORARY_TEXT(url);
if (Colonies__resolve_reference_in_weave(url, title, F, link_text, NULL, NULL)) if (Colonies__resolve_reference_in_weave(url, title, F, link_text, NULL, NULL, NULL))
WRITE("%S", url); WRITE("%S", url);
else else
PRINT("Warning: unable to resolve reference '%S' in navigation\n", link_text); PRINT("Warning: unable to resolve reference '%S' in navigation\n", link_text);

View file

@ -86,7 +86,7 @@ said as late as the early twentieth century.
of the great age of Enlightenment letter-writing. He and Euler exchanged of the great age of Enlightenment letter-writing. He and Euler exchanged
scholarly letters for over thirty years, not something Euler would have scholarly letters for over thirty years, not something Euler would have
kept up with a duffer. Goldbach was also not, as is sometimes said, a lawyer. kept up with a duffer. Goldbach was also not, as is sometimes said, a lawyer.
See: <a href="http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html" class="external">http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html</a> See: <a href="http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html" class="external">http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html</a>.
An edited transcription of the letter is at: <a href="http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf" class="external">http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf</a> An edited transcription of the letter is at: <a href="http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf" class="external">http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf</a>
<a href="#fnref:2" title="return to text"> &#x21A9;</a></p></li></ul> <a href="#fnref:2" title="return to text"> &#x21A9;</a></p></li></ul>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b>Computer verification has been made up to around \(10^{18}\), but by rather <p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b>Computer verification has been made up to around \(10^{18}\), but by rather

View file

@ -42,7 +42,7 @@ document weave order 0
commentary <kept up with a duffer. Goldbach was also not, as is sometimes said, a lawyer.\n> commentary <kept up with a duffer. Goldbach was also not, as is sometimes said, a lawyer.\n>
commentary <See: > commentary <See: >
url content <http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html> url <http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html> url content <http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html> url <http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html>
commentary <\n> commentary <.\n>
commentary <An edited transcription of the letter is at: > commentary <An edited transcription of the letter is at: >
url content <http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf> url <http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf> url content <http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf> url <http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf>
commentary <\n> commentary <\n>

Binary file not shown.

View file

@ -260,7 +260,7 @@ letter-writer, though his reputation stands less high today.\footnote{${}^{2}$}{
of the great age of Enlightenment letter-writing. He and Euler exchanged of the great age of Enlightenment letter-writing. He and Euler exchanged
scholarly letters for over thirty years, not something Euler would have scholarly letters for over thirty years, not something Euler would have
kept up with a duffer. Goldbach was also not, as is sometimes said, a lawyer. kept up with a duffer. Goldbach was also not, as is sometimes said, a lawyer.
See: http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html See: http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html.
An edited transcription of the letter is at: http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf An edited transcription of the letter is at: http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf
} All the same, } All the same,
the general belief now is that primes are just plentiful enough, and just the general belief now is that primes are just plentiful enough, and just

View file

@ -30,7 +30,7 @@ said as late as the early twentieth century.
of the great age of Enlightenment letter-writing. He and Euler exchanged of the great age of Enlightenment letter-writing. He and Euler exchanged
scholarly letters for over thirty years, not something Euler would have scholarly letters for over thirty years, not something Euler would have
kept up with a duffer. Goldbach was also not, as is sometimes said, a lawyer. kept up with a duffer. Goldbach was also not, as is sometimes said, a lawyer.
See: http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html See: http://mathshistory.st-andrews.ac.uk/Biographies/Goldbach.html.
An edited transcription of the letter is at: http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf An edited transcription of the letter is at: http://eulerarchive.maa.org//correspondence/letters/OO0765.pdf
S2. Computer verification has been made up to around 10^{18}, but by rather S2. Computer verification has been made up to around 10^{18}, but by rather

View file

@ -416,7 +416,7 @@ of each C function.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">return</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Analyser::is_reserved_word_for_section</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Analyser::is_reserved_word_for_section</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">section</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">e</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Analyser::is_reserved_word_for_section</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Analyser::is_reserved_word_for_section</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">section</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">e</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ta.html#SP10" class="function-link"><span class="function-syntax">Analyser::is_reserved_word</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_target</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">symbols</span><span class="plain-syntax">), </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">e</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-ta.html#SP10" class="function-link"><span class="function-syntax">Analyser::is_reserved_word</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_target</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">symbols</span><span class="plain-syntax">), </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">e</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
@ -426,7 +426,7 @@ of each C function.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">language_function</span><span class="plain-syntax"> *</span><span class="function-syntax">Analyser::get_function</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Analyser::get_function</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP3_3">&#167;3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">section</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">e</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">language_function</span><span class="plain-syntax"> *</span><span class="function-syntax">Analyser::get_function</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Analyser::get_function</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP4_3">&#167;4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">section</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">e</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">hash_table_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">hte</span><span class="plain-syntax"> = </span><a href="3-ta.html#SP9" class="function-link"><span class="function-syntax">Analyser::find_hash_entry</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_target</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">symbols</span><span class="plain-syntax">), </span><span class="identifier-syntax">p</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">hash_table_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">hte</span><span class="plain-syntax"> = </span><a href="3-ta.html#SP9" class="function-link"><span class="function-syntax">Analyser::find_hash_entry</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_target</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">symbols</span><span class="plain-syntax">), </span><span class="identifier-syntax">p</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><span class="identifier-syntax">hte</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">hte</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">reserved_word</span><span class="plain-syntax"> &amp; (1 &lt;&lt; </span><span class="identifier-syntax">e</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">hte</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_function</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">hte</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">hte</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">reserved_word</span><span class="plain-syntax"> &amp; (1 &lt;&lt; </span><span class="identifier-syntax">e</span><span class="plain-syntax">))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">hte</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_function</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>

View file

@ -546,7 +546,7 @@ in the source is set indented in code style.
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</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">original</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="constant-syntax">PLAIN_COLOUR</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</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">original</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="constant-syntax">PLAIN_COLOUR</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CL</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP4" class="function-link"><span class="function-syntax">WeaveTree::code_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CL</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP4" class="function-link"><span class="function-syntax">WeaveTree::code_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CL</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ap</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CL</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ap</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP3" class="function-link"><span class="function-syntax">TextWeaver::source_code</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">CL</span><span class="plain-syntax">, </span><span class="identifier-syntax">original</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">enable_hyperlinks</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-twot.html#SP4" class="function-link"><span class="function-syntax">TextWeaver::source_code</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">CL</span><span class="plain-syntax">, </span><span class="identifier-syntax">original</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">enable_hyperlinks</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">colouring</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">colouring</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">original</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">original</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-tw.html#SP5" class="function-link"><span class="function-syntax">Weaver::commentary_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-tw.html#SP5" class="function-link"><span class="function-syntax">Weaver::commentary_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">);</span>
@ -601,7 +601,7 @@ and macro usage is rendered differently.
<span class="plain-syntax"> </span><a href="4-lm.html#SP25" class="function-link"><span class="function-syntax">LanguageMethods::syntax_colour</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_language</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="4-lm.html#SP25" class="function-link"><span class="function-syntax">LanguageMethods::syntax_colour</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_language</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tw.html#SP2_7_2_3_2_6" class="named-paragraph-link"><span class="named-paragraph">Find macro usages and adjust syntax colouring accordingly</span><span class="named-paragraph-number">2.7.2.3.2.6</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tw.html#SP2_7_2_3_2_6" class="named-paragraph-link"><span class="named-paragraph">Find macro usages and adjust syntax colouring accordingly</span><span class="named-paragraph-number">2.7.2.3.2.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP3" class="function-link"><span class="function-syntax">TextWeaver::source_code</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">CL</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">enable_hyperlinks</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-twot.html#SP4" class="function-link"><span class="function-syntax">TextWeaver::source_code</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">CL</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">enable_hyperlinks</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#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">concluding_comment</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</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">concluding_comment</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP1" class="function-link"><span class="function-syntax">TextWeaver::comment_text_in_code</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">CL</span><span class="plain-syntax">, </span><span class="identifier-syntax">concluding_comment</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-twot.html#SP1" class="function-link"><span class="function-syntax">TextWeaver::comment_text_in_code</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">CL</span><span class="plain-syntax">, </span><span class="identifier-syntax">concluding_comment</span><span class="plain-syntax">);</span>
@ -726,7 +726,7 @@ otherwise, they are set flush right.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pmac</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">pmac</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">front_colouring</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">front_colouring</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP26" class="function-link"><span class="function-syntax">Str::substr</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">front_colouring</span><span class="plain-syntax">, </span><a href="../foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">), </span><a href="../foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">colouring</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">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0])));</span> <span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP26" class="function-link"><span class="function-syntax">Str::substr</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">front_colouring</span><span class="plain-syntax">, </span><a href="../foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">), </span><a href="../foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">colouring</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">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0])));</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP3" class="function-link"><span class="function-syntax">TextWeaver::source_code</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">CL</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">front_colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">enable_hyperlinks</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-twot.html#SP4" class="function-link"><span class="function-syntax">TextWeaver::source_code</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">CL</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">front_colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">enable_hyperlinks</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">front_colouring</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">front_colouring</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP17" class="function-link"><span class="function-syntax">Str::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[2]);</span> <span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP17" class="function-link"><span class="function-syntax">Str::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[2]);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</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">matter</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</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">matter</span><span class="plain-syntax">);</span>
@ -867,7 +867,7 @@ structure usage, or how <span class="extract"><span class="extract-syntax">CWEB<
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b></p> <p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b></p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Weaver::show_function_usage</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Weaver::show_function_usage</span></span>:<br/><a href="3-tw.html#SP3_2">&#167;3.2</a><br/>The Weaver of Text - <a href="3-twot.html#SP3_3">&#167;3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">,</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Weaver::show_function_usage</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Weaver::show_function_usage</span></span>:<br/><a href="3-tw.html#SP3_2">&#167;3.2</a><br/>The Weaver of Text - <a href="3-twot.html#SP4_3">&#167;4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">language_function</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">as_list</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">language_function</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fn</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">as_list</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">body</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">body</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ap</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">usage_described</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">fn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">usage_described</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>

View file

@ -49,7 +49,7 @@ function togglePopup(material_id) {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">inweb</a></li><li><a href="index.html#3">Chapter 3: Outputs</a></li><li><b>The Weaver of Text</b></li></ul></div> <ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">inweb</a></li><li><a href="index.html#3">Chapter 3: Outputs</a></li><li><b>The Weaver of Text</b></li></ul></div>
<p class="purpose">To manage the weaving of commentary or source code text.</p> <p class="purpose">To manage the weaving of commentary or source code text.</p>
<ul class="toc"><li><a href="3-twot.html#SP1">&#167;1. Commentary text</a></li><li><a href="3-twot.html#SP3">&#167;3. Code text</a></li></ul><hr class="tocbar"> <ul class="toc"><li><a href="3-twot.html#SP1">&#167;1. Commentary text</a></li><li><a href="3-twot.html#SP4">&#167;4. Code text</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. Commentary text. </b>The following takes text, divides it up at stroke-mark boundaries &mdash; <p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. Commentary text. </b>The following takes text, divides it up at stroke-mark boundaries &mdash;
that is, <span class="extract"><span class="extract-syntax">this is inside</span></span>, this is outside &mdash; and sends contiguous pieces that is, <span class="extract"><span class="extract-syntax">this is inside</span></span>, this is outside &mdash; and sends contiguous pieces
@ -74,8 +74,6 @@ as appropriate.
<span class="plain-syntax"> (</span><span class="identifier-syntax">in_code</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">"Code In Commentary Notation"</span><span class="plain-syntax">));</span> <span class="plain-syntax"> (</span><span class="identifier-syntax">in_code</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">"Code In Commentary Notation"</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::ne</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">code_in_comments_notation</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="named-paragraph-container code-font"><a href="3-twot.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Split text and code extracts</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::ne</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">code_in_comments_notation</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="named-paragraph-container code-font"><a href="3-twot.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Split text and code extracts</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">within</span><span class="plain-syntax"> == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-twot.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Recognose hyperlinks</span><span class="named-paragraph-number">1.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">display_flag</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">display_flag</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tex_notation</span><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">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_web</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">,</span> <span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tex_notation</span><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">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_web</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"TeX Mathematics Displayed Notation"</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"TeX Mathematics Displayed Notation"</span><span class="plain-syntax">);</span>
@ -90,10 +88,11 @@ as appropriate.
<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::ne</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">xref_notation</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="named-paragraph-container code-font"><a href="3-twot.html#SP1_5" class="named-paragraph-link"><span class="named-paragraph">Recognise cross-references</span><span class="named-paragraph-number">1.5</span></a></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::ne</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">xref_notation</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="named-paragraph-container code-font"><a href="3-twot.html#SP1_5" class="named-paragraph-link"><span class="named-paragraph">Recognise cross-references</span><span class="named-paragraph-number">1.5</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">within</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">within</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP2" class="function-link"><span class="function-syntax">TextWeaver::inline_code_fragment</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-twot.html#SP3" class="function-link"><span class="function-syntax">TextWeaver::inline_code_fragment</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span> <span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-twot.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Recognise hyperlinks</span><span class="named-paragraph-number">1.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-twot.html#SP1_4" class="named-paragraph-link"><span class="named-paragraph">Detect use of footnotes</span><span class="named-paragraph-number">1.4</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-twot.html#SP1_4" class="named-paragraph-link"><span class="named-paragraph">Detect use of footnotes</span><span class="named-paragraph-number">1.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP2" class="function-link"><span class="function-syntax">TextWeaver::commentary_fragment</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-twot.html#SP3" class="function-link"><span class="function-syntax">TextWeaver::commentary_fragment</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
@ -118,7 +117,7 @@ as appropriate.
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-twot.html#SP1">&#167;1</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-twot.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2"></a><b>&#167;1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Recognose hyperlinks</span><span class="named-paragraph-number">1.2</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP1_2"></a><b>&#167;1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Recognise hyperlinks</span><span class="named-paragraph-number">1.2</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -131,6 +130,15 @@ as appropriate.
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP26" class="function-link"><span class="function-syntax">Str::substr</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">after</span><span class="plain-syntax">, </span><a href="../foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">), </span><a href="../foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP26" class="function-link"><span class="function-syntax">Str::substr</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">after</span><span class="plain-syntax">, </span><a href="../foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">), </span><a href="../foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::create_mr</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><span class="reserved-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::create_mr</span></a><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-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">after</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(https*://%C+)(%c*)"</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-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">after</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(https*://%C+)(%c*)"</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><a href="3-twot.html#SP2" class="function-link"><span class="function-syntax">TextWeaver::boundary_character</span></a><span class="plain-syntax">(</span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_last_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0]))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_last_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0]);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP25" class="function-link"><span class="function-syntax">Str::delete_last_character</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0]);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">longer</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">longer</span><span class="plain-syntax">, </span><span class="string-syntax">"%c%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1]);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP15" class="function-link"><span class="function-syntax">Str::clear</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1]);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP17" class="function-link"><span class="function-syntax">Str::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">longer</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">longer</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP1" class="function-link"><span class="function-syntax">TextWeaver::commentary_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">before</span><span class="plain-syntax">, </span><span class="identifier-syntax">within</span><span class="plain-syntax">, </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-twot.html#SP1" class="function-link"><span class="function-syntax">TextWeaver::commentary_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">before</span><span class="plain-syntax">, </span><span class="identifier-syntax">within</span><span class="plain-syntax">, </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><a href="5-wt.html#SP5" class="function-link"><span class="function-syntax">WeaveTree::url</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">), </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><a href="5-wt.html#SP5" class="function-link"><span class="function-syntax">WeaveTree::url</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">), </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP1" class="function-link"><span class="function-syntax">TextWeaver::commentary_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">within</span><span class="plain-syntax">, </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-twot.html#SP1" class="function-link"><span class="function-syntax">TextWeaver::commentary_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">within</span><span class="plain-syntax">, </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">);</span>
@ -209,10 +217,14 @@ as appropriate.
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</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">xref_notation</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</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">xref_notation</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"> &lt; </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">matter</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"> &lt; </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">matter</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</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">within</span><span class="plain-syntax"> == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><a href="../foundation-module/4-sm.html#SP26" class="function-link"><span class="function-syntax">Str::includes_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">xref_notation</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">within</span><span class="plain-syntax"> == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><a href="../foundation-module/4-sm.html#SP26" class="function-link"><span class="function-syntax">Str::includes_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">xref_notation</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> ((</span><span class="identifier-syntax">i</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) || (</span><a href="3-twot.html#SP2" class="function-link"><span class="function-syntax">TextWeaver::boundary_character</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TRUE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">-1))))) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax"> + </span><span class="identifier-syntax">N</span><span class="plain-syntax">+1;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">j</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax"> + </span><span class="identifier-syntax">N</span><span class="plain-syntax">+1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax"> &lt; </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">matter</span><span class="plain-syntax">)) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax"> &lt; </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">matter</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#SP26" class="function-link"><span class="function-syntax">Str::includes_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">, </span><span class="identifier-syntax">xref_notation</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#SP26" class="function-link"><span class="function-syntax">Str::includes_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">, </span><span class="identifier-syntax">xref_notation</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="3-twot.html#SP2" class="function-link"><span class="function-syntax">TextWeaver::boundary_character</span></a><span class="plain-syntax">(</span><span class="constant-syntax">FALSE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</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">xref_notation</span><span class="plain-syntax">))))) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">allow</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">allow</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">before</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">before</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">reference</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">reference</span><span class="plain-syntax">);</span>
@ -238,10 +250,11 @@ as appropriate.
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ext</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="6-cln.html#SP10" class="function-link"><span class="function-syntax">Colonies::resolve_reference_in_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">reference</span><span class="plain-syntax">,</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="6-cln.html#SP10" class="function-link"><span class="function-syntax">Colonies::resolve_reference_in_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">reference</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_web</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">current_weave_line</span><span class="plain-syntax">)) {</span> <span class="plain-syntax"> </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_web</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">current_weave_line</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">ext</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP1" class="function-link"><span class="function-syntax">TextWeaver::commentary_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">before</span><span class="plain-syntax">, </span><span class="identifier-syntax">within</span><span class="plain-syntax">, </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-twot.html#SP1" class="function-link"><span class="function-syntax">TextWeaver::commentary_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">before</span><span class="plain-syntax">, </span><span class="identifier-syntax">within</span><span class="plain-syntax">, </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><a href="5-wt.html#SP5" class="function-link"><span class="function-syntax">WeaveTree::url</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">), </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><a href="5-wt.html#SP5" class="function-link"><span class="function-syntax">WeaveTree::url</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">), </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP1" class="function-link"><span class="function-syntax">TextWeaver::commentary_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">after</span><span class="plain-syntax">, </span><span class="identifier-syntax">within</span><span class="plain-syntax">, </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-twot.html#SP1" class="function-link"><span class="function-syntax">TextWeaver::commentary_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">after</span><span class="plain-syntax">, </span><span class="identifier-syntax">within</span><span class="plain-syntax">, </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">allow</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">allow</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
@ -249,16 +262,35 @@ as appropriate.
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</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">title</span><span class="plain-syntax">);</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-twot.html#SP1_5">&#167;1.5</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-twot.html#SP1_5">&#167;1.5</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b></p> <p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b>This tests whether a cross-reference is allowed to begin or end: it must
begin after and finish before a "boundary character".
</p>
<p class="commentary">Note the one-sided treatment of <span class="extract"><span class="extract-syntax">:</span></span>, which is a boundary after but not before,
so that <span class="extract"><span class="extract-syntax">http://</span></span> won't trigger a cross-reference with the standard <span class="extract"><span class="extract-syntax">//</span></span>
xref notation.
</p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TextWeaver::commentary_fragment</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">TextWeaver::commentary_fragment</span></span>:<br/><a href="3-twot.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">,</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">TextWeaver::boundary_character</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">TextWeaver::boundary_character</span></span>:<br/><a href="3-twot.html#SP1_2">&#167;1.2</a>, <a href="3-twot.html#SP1_5">&#167;1.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">before</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</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">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</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-chr.html#SP2" class="function-link"><span class="function-syntax">Characters::is_whitespace</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</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">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'.'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">','</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'!'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'?'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">';'</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'('</span><span class="plain-syntax">)|| (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">')'</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</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">before</span><span class="plain-syntax"> == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">':'</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TextWeaver::commentary_fragment</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">TextWeaver::commentary_fragment</span></span>:<br/><a href="3-twot.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fragment</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fragment</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">in_code</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#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">fragment</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</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">fragment</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><a href="5-wt.html#SP4" class="function-link"><span class="function-syntax">WeaveTree::commentary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">fragment</span><span class="plain-syntax">, </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">), </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><a href="5-wt.html#SP4" class="function-link"><span class="function-syntax">WeaveTree::commentary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">fragment</span><span class="plain-syntax">, </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">), </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TextWeaver::inline_code_fragment</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">TextWeaver::inline_code_fragment</span></span>:<br/><a href="3-twot.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fragment</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TextWeaver::inline_code_fragment</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">TextWeaver::inline_code_fragment</span></span>:<br/><a href="3-twot.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fragment</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP8" class="function-link"><span class="function-syntax">WeaveTree::inline</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP8" class="function-link"><span class="function-syntax">WeaveTree::inline</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">colouring</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">colouring</span><span class="plain-syntax">);</span>
@ -268,10 +300,10 @@ as appropriate.
<span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">SC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">SC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. Code text. </b></p> <p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. Code text. </b></p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TextWeaver::source_code</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">TextWeaver::source_code</span></span>:<br/>The Weaver - <a href="3-tw.html#SP2_7_2_3_1_4">&#167;2.7.2.3.1.4</a>, <a href="3-tw.html#SP2_7_2_3_2">&#167;2.7.2.3.2</a>, <a href="3-tw.html#SP2_7_2_3_2_6">&#167;2.7.2.3.2.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">,</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TextWeaver::source_code</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">TextWeaver::source_code</span></span>:<br/>The Weaver - <a href="3-tw.html#SP2_7_2_3_1_4">&#167;2.7.2.3.1.4</a>, <a href="3-tw.html#SP2_7_2_3_2">&#167;2.7.2.3.2</a>, <a href="3-tw.html#SP2_7_2_3_2_6">&#167;2.7.2.3.2.6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_document_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_weave_document_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">root</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">content</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">weave_document_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_weave_document_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">root</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">content</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">wv</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">wv</span><span class="plain-syntax">;</span>
@ -279,11 +311,11 @@ as appropriate.
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"> &lt; </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">matter</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"> &lt; </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">matter</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</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">linked</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">linked</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-twot.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Pick up hyperlinking at the eleventh hour</span><span class="named-paragraph-number">3.1</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-twot.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Pick up hyperlinking at the eleventh hour</span><span class="named-paragraph-number">4.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">xref_notation</span><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">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_web</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">,</span> <span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">xref_notation</span><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">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_web</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">,</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="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"Cross-References Notation"</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::ne</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">xref_notation</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="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::ne</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">xref_notation</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="named-paragraph-container code-font"><a href="3-twot.html#SP3_2" class="named-paragraph-link"><span class="named-paragraph">Pick up cross-references at the eleventh hour</span><span class="named-paragraph-number">3.2</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-twot.html#SP4_2" class="named-paragraph-link"><span class="named-paragraph">Pick up cross-references at the eleventh hour</span><span class="named-paragraph-number">4.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="constant-syntax">FUNCTION_COLOUR</span><span class="plain-syntax">) &amp;&amp;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="constant-syntax">FUNCTION_COLOUR</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">current_weave_line</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">category</span><span class="plain-syntax"> != </span><span class="constant-syntax">TEXT_EXTRACT_LCAT</span><span class="plain-syntax">)) {</span> <span class="plain-syntax"> (</span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">current_weave_line</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">category</span><span class="plain-syntax"> != </span><span class="constant-syntax">TEXT_EXTRACT_LCAT</span><span class="plain-syntax">)) {</span>
@ -293,16 +325,16 @@ as appropriate.
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">fname</span><span class="plain-syntax">, </span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">++));</span> <span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">fname</span><span class="plain-syntax">, </span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">++));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-ta.html#SP10" class="function-link"><span class="function-syntax">Analyser::is_reserved_word_for_section</span></a><span class="plain-syntax">(</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-ta.html#SP10" class="function-link"><span class="function-syntax">Analyser::is_reserved_word_for_section</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">current_weave_line</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_section</span><span class="plain-syntax">, </span><span class="identifier-syntax">fname</span><span class="plain-syntax">, </span><span class="constant-syntax">FUNCTION_COLOUR</span><span class="plain-syntax">))</span> <span class="plain-syntax"> </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">current_weave_line</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_section</span><span class="plain-syntax">, </span><span class="identifier-syntax">fname</span><span class="plain-syntax">, </span><span class="constant-syntax">FUNCTION_COLOUR</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-twot.html#SP3_3" class="named-paragraph-link"><span class="named-paragraph">Spot the function</span><span class="named-paragraph-number">3.3</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-twot.html#SP4_3" class="named-paragraph-link"><span class="named-paragraph">Spot the function</span><span class="named-paragraph-number">4.3</span></a></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">fname</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">fname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">from</span><span class="plain-syntax"> &lt; </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">matter</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">from</span><span class="plain-syntax"> &lt; </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">matter</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP4" class="function-link"><span class="function-syntax">TextWeaver::source_code_piece</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</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">matter</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><a href="3-twot.html#SP5" class="function-link"><span class="function-syntax">TextWeaver::source_code_piece</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</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">matter</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<p class="commentary firstcommentary"><a id="SP3_1"></a><b>&#167;3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Pick up hyperlinking at the eleventh hour</span><span class="named-paragraph-number">3.1</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP4_1"></a><b>&#167;4.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Pick up hyperlinking at the eleventh hour</span><span class="named-paragraph-number">4.1</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -313,7 +345,7 @@ as appropriate.
<span class="plain-syntax"> </span><span class="reserved-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::create_mr</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><span class="reserved-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::create_mr</span></a><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-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">after</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(https*://%C+)(%c*)"</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-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">after</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(https*://%C+)(%c*)"</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">U</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP5" class="function-link"><span class="function-syntax">WeaveTree::url</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">U</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP5" class="function-link"><span class="function-syntax">WeaveTree::url</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP4" class="function-link"><span class="function-syntax">TextWeaver::source_code_piece</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-twot.html#SP5" class="function-link"><span class="function-syntax">TextWeaver::source_code_piece</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">U</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">U</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i</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">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0]);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">i</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">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0]);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
@ -321,8 +353,8 @@ as appropriate.
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">after</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">after</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-twot.html#SP3">&#167;3</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-twot.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_2"></a><b>&#167;3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Pick up cross-references at the eleventh hour</span><span class="named-paragraph-number">3.2</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP4_2"></a><b>&#167;4.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Pick up cross-references at the eleventh hour</span><span class="named-paragraph-number">4.2</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -333,7 +365,7 @@ as appropriate.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP26" class="function-link"><span class="function-syntax">Str::includes_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">, </span><span class="identifier-syntax">xref_notation</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#SP26" class="function-link"><span class="function-syntax">Str::includes_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">, </span><span class="identifier-syntax">xref_notation</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">reference</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">reference</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP26" class="function-link"><span class="function-syntax">Str::substr</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">reference</span><span class="plain-syntax">, </span><a href="../foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax"> + </span><span class="identifier-syntax">N</span><span class="plain-syntax">), </span><a href="../foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP26" class="function-link"><span class="function-syntax">Str::substr</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">reference</span><span class="plain-syntax">, </span><a href="../foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax"> + </span><span class="identifier-syntax">N</span><span class="plain-syntax">), </span><a href="../foundation-module/4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-twot.html#SP3_2_1" class="named-paragraph-link"><span class="named-paragraph">Attempt to resolve the cross-reference at the eleventh hour</span><span class="named-paragraph-number">3.2.1</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-twot.html#SP4_2_1" class="named-paragraph-link"><span class="named-paragraph">Attempt to resolve the cross-reference at the eleventh hour</span><span class="named-paragraph-number">4.2.1</span></a></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">reference</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">reference</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
@ -341,17 +373,18 @@ as appropriate.
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-twot.html#SP3">&#167;3</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-twot.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_2_1"></a><b>&#167;3.2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Attempt to resolve the cross-reference at the eleventh hour</span><span class="named-paragraph-number">3.2.1</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP4_2_1"></a><b>&#167;4.2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Attempt to resolve the cross-reference at the eleventh hour</span><span class="named-paragraph-number">4.2.1</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ext</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="6-cln.html#SP10" class="function-link"><span class="function-syntax">Colonies::resolve_reference_in_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">reference</span><span class="plain-syntax">,</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="6-cln.html#SP10" class="function-link"><span class="function-syntax">Colonies::resolve_reference_in_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">reference</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_web</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">current_weave_line</span><span class="plain-syntax">)) {</span> <span class="plain-syntax"> </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_web</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">md</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">current_weave_line</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">ext</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">U</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP5" class="function-link"><span class="function-syntax">WeaveTree::url</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</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">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">U</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP5" class="function-link"><span class="function-syntax">WeaveTree::url</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP4" class="function-link"><span class="function-syntax">TextWeaver::source_code_piece</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-twot.html#SP5" class="function-link"><span class="function-syntax">TextWeaver::source_code_piece</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">U</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">U</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">j</span><span class="plain-syntax"> + </span><span class="identifier-syntax">N</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">j</span><span class="plain-syntax"> + </span><span class="identifier-syntax">N</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
@ -359,8 +392,8 @@ as appropriate.
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</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">url</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">title</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">title</span><span class="plain-syntax">);</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-twot.html#SP3_2">&#167;3.2</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-twot.html#SP4_2">&#167;4.2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_3"></a><b>&#167;3.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Spot the function</span><span class="named-paragraph-number">3.3</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP4_3"></a><b>&#167;4.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Spot the function</span><span class="named-paragraph-number">4.3</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -370,7 +403,7 @@ as appropriate.
<span class="plain-syntax"> </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">defn_line</span><span class="plain-syntax"> = </span><span class="identifier-syntax">fn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">function_header_at</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">defn_line</span><span class="plain-syntax"> = </span><span class="identifier-syntax">fn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">function_header_at</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">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">current_weave_line</span><span class="plain-syntax"> == </span><span class="identifier-syntax">defn_line</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">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">current_weave_line</span><span class="plain-syntax"> == </span><span class="identifier-syntax">defn_line</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">fn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">usage_described</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><span class="identifier-syntax">fn</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">usage_described</span><span class="plain-syntax"> == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP4" class="function-link"><span class="function-syntax">TextWeaver::source_code_piece</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-twot.html#SP5" class="function-link"><span class="function-syntax">TextWeaver::source_code_piece</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">FD</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP6" class="function-link"><span class="function-syntax">WeaveTree::function_defn</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">FD</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP6" class="function-link"><span class="function-syntax">WeaveTree::function_defn</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FD</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP11" class="function-link"><span class="function-syntax">Trees::make_child</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FD</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-tw.html#SP4" class="function-link"><span class="function-syntax">Weaver::show_function_usage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">FD</span><span class="plain-syntax">,</span> <span class="plain-syntax"> </span><a href="3-tw.html#SP4" class="function-link"><span class="function-syntax">Weaver::show_function_usage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">FD</span><span class="plain-syntax">,</span>
@ -379,7 +412,7 @@ as appropriate.
<span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">+1;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">+1;</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span> <span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><a href="3-twot.html#SP4" class="function-link"><span class="function-syntax">TextWeaver::source_code_piece</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-twot.html#SP5" class="function-link"><span class="function-syntax">TextWeaver::source_code_piece</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">)</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="6-cln.html#SP11" class="function-link"><span class="function-syntax">Colonies::paragraph_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">defn_line</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_to</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="6-cln.html#SP11" class="function-link"><span class="function-syntax">Colonies::paragraph_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">defn_line</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weave_to</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">U</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP4" class="function-link"><span class="function-syntax">WeaveTree::function_usage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">U</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP4" class="function-link"><span class="function-syntax">WeaveTree::function_usage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span>
@ -389,11 +422,11 @@ as appropriate.
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-twot.html#SP3">&#167;3</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-twot.html#SP4">&#167;4</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b></p> <p class="commentary firstcommentary"><a id="SP5"></a><b>&#167;5. </b></p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TextWeaver::source_code_piece</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">TextWeaver::source_code_piece</span></span>:<br/><a href="3-twot.html#SP3">&#167;3</a>, <a href="3-twot.html#SP3_1">&#167;3.1</a>, <a href="3-twot.html#SP3_2_1">&#167;3.2.1</a>, <a href="3-twot.html#SP3_3">&#167;3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">,</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TextWeaver::source_code_piece</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">TextWeaver::source_code_piece</span></span>:<br/><a href="3-twot.html#SP4">&#167;4</a>, <a href="3-twot.html#SP4_1">&#167;4.1</a>, <a href="3-twot.html#SP4_2_1">&#167;4.2.1</a>, <a href="3-twot.html#SP4_3">&#167;4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ap</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">colouring</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</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">to</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">from</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">to</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">m</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">m</span><span class="plain-syntax">);</span>

View file

@ -632,7 +632,7 @@ information.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP4" class="function-link"><span class="function-syntax">Trees::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">weave_code_line_node_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_weave_code_line_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP4" class="function-link"><span class="function-syntax">Trees::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">weave_code_line_node_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_weave_code_line_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::function_usage</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::function_usage</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP3_3">&#167;3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">,</span> <span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::function_usage</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::function_usage</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP4_3">&#167;4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="reserved-syntax">language_function</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fn</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="reserved-syntax">language_function</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_function_usage_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_function_usage_node</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">weave_function_usage_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_function_usage_node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">url</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">url</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">url</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">url</span><span class="plain-syntax">);</span>
@ -640,7 +640,7 @@ information.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP4" class="function-link"><span class="function-syntax">Trees::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">weave_function_usage_node_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_weave_function_usage_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP4" class="function-link"><span class="function-syntax">Trees::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">weave_function_usage_node_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_weave_function_usage_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::commentary</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::commentary</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::commentary</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::commentary</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_commentary_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_commentary_node</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">weave_commentary_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_commentary_node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">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">text</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">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">text</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">in_code</span><span class="plain-syntax"> = </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">in_code</span><span class="plain-syntax"> = </span><span class="identifier-syntax">in_code</span><span class="plain-syntax">;</span>
@ -685,7 +685,7 @@ been syntax-coloured.
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::source_code</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::source_code</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP2">&#167;2</a>, <a href="3-twot.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">,</span> <span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::source_code</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::source_code</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP3">&#167;3</a>, <a href="3-twot.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">colouring</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">colouring</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#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">colouring</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">matter</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bad source segment"</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#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">colouring</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">matter</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bad source segment"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</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">colouring</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span> <span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</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">colouring</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
@ -696,7 +696,7 @@ been syntax-coloured.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP4" class="function-link"><span class="function-syntax">Trees::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">weave_source_code_node_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_weave_source_code_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP4" class="function-link"><span class="function-syntax">Trees::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">weave_source_code_node_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_weave_source_code_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::url</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::url</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP1_2">&#167;1.2</a>, <a href="3-twot.html#SP1_5_1">&#167;1.5.1</a>, <a href="3-twot.html#SP3_1">&#167;3.1</a>, <a href="3-twot.html#SP3_2_1">&#167;3.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">url</span><span class="plain-syntax">,</span> <span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::url</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::url</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP1_2">&#167;1.2</a>, <a href="3-twot.html#SP1_5_1">&#167;1.5.1</a>, <a href="3-twot.html#SP4_1">&#167;4.1</a>, <a href="3-twot.html#SP4_2_1">&#167;4.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">url</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">content</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">external</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">content</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">external</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_url_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_url_node</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">weave_url_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_url_node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">url</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">url</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">url</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">url</span><span class="plain-syntax">);</span>
@ -722,7 +722,7 @@ definition has just occurred.
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::function_defn</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::function_defn</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP3_3">&#167;3.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">language_function</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fn</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::function_defn</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::function_defn</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP4_3">&#167;4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="reserved-syntax">language_function</span><span class="plain-syntax"> *</span><span class="identifier-syntax">fn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_function_defn_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_function_defn_node</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">weave_function_defn_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_function_defn_node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">fn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">fn</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">fn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">fn</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP4" class="function-link"><span class="function-syntax">Trees::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">weave_function_defn_node_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_weave_function_defn_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP4" class="function-link"><span class="function-syntax">Trees::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">weave_function_defn_node_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_weave_function_defn_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span>
@ -766,7 +766,7 @@ indentation but not weave any bracketed marker.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP4" class="function-link"><span class="function-syntax">Trees::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">weave_grammar_index_node_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_weave_grammar_index_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP4" class="function-link"><span class="function-syntax">Trees::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">weave_grammar_index_node_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_weave_grammar_index_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::inline</span><button class="popup" onclick="togglePopup('usagePopup41')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup41">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::inline</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::inline</span><button class="popup" onclick="togglePopup('usagePopup41')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup41">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::inline</span></span>:<br/>The Weaver of Text - <a href="3-twot.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tree</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_inline_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_inline_node</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">weave_inline_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_inline_node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP4" class="function-link"><span class="function-syntax">Trees::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">weave_inline_node_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_weave_inline_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP4" class="function-link"><span class="function-syntax">Trees::new_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">weave_inline_node_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_weave_inline_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>

View file

@ -296,7 +296,7 @@ first we find.
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">colony_member</span><span class="plain-syntax"> *</span><span class="function-syntax">Colonies::find</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Colonies::find</span></span>:<br/><a href="6-cln.html#SP10_1">&#167;10.1</a>, <a href="6-cln.html#SP10_2">&#167;10.2</a>, <a href="6-cln.html#SP11">&#167;11</a><br/>Configuration - <a href="1-cnf.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">colony_member</span><span class="plain-syntax"> *</span><span class="function-syntax">Colonies::find</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Colonies::find</span></span>:<br/><a href="6-cln.html#SP10_2">&#167;10.2</a>, <a href="6-cln.html#SP10_3">&#167;10.3</a>, <a href="6-cln.html#SP11">&#167;11</a><br/>Configuration - <a href="1-cnf.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">colony</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">colony</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">colony</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">colony</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">colony_member</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CM</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">colony_member</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CM</span><span class="plain-syntax">;</span>
@ -315,7 +315,7 @@ the data we already have; but if not, we read it in.
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">module</span><span class="plain-syntax"> *</span><span class="function-syntax">Colonies::as_module</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Colonies::as_module</span></span>:<br/><a href="6-cln.html#SP10_1">&#167;10.1</a>, <a href="6-cln.html#SP10_2">&#167;10.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">colony_member</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CM</span><span class="plain-syntax">, </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="reserved-syntax">web_md</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Wm</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">module</span><span class="plain-syntax"> *</span><span class="function-syntax">Colonies::as_module</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Colonies::as_module</span></span>:<br/><a href="6-cln.html#SP10_2">&#167;10.2</a>, <a href="6-cln.html#SP10_3">&#167;10.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">colony_member</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CM</span><span class="plain-syntax">, </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="reserved-syntax">web_md</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Wm</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">CM</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">loaded</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP8_1" class="named-paragraph-link"><span class="named-paragraph">Perhaps the web being woven</span><span class="named-paragraph-number">8.1</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CM</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">loaded</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP8_1" class="named-paragraph-link"><span class="named-paragraph">Perhaps the web being woven</span><span class="named-paragraph-number">8.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CM</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">loaded</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Perhaps a module imported by the web being woven</span><span class="named-paragraph-number">8.2</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CM</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">loaded</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Perhaps a module imported by the web being woven</span><span class="named-paragraph-number">8.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CM</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">loaded</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Perhaps a module not yet seen</span><span class="named-paragraph-number">8.3</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CM</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">loaded</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP8_3" class="named-paragraph-link"><span class="named-paragraph">Perhaps a module not yet seen</span><span class="named-paragraph-number">8.3</span></a></span><span class="plain-syntax">;</span>
@ -412,30 +412,33 @@ is where the reference is made from.
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Colonies::resolve_reference_in_weave</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Colonies::resolve_reference_in_weave</span></span>:<br/><a href="6-cln.html#SP11">&#167;11</a><br/>The Weaver of Text - <a href="3-twot.html#SP1_5_1">&#167;1.5.1</a>, <a href="3-twot.html#SP3_2_1">&#167;3.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">title</span><span class="plain-syntax">,</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Colonies::resolve_reference_in_weave</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Colonies::resolve_reference_in_weave</span></span>:<br/><a href="6-cln.html#SP11">&#167;11</a><br/>The Weaver of Text - <a href="3-twot.html#SP1_5_1">&#167;1.5.1</a>, <a href="3-twot.html#SP4_2_1">&#167;4.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">title</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">for_HTML_file</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="reserved-syntax">web_md</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Wm</span><span class="plain-syntax">, </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">for_HTML_file</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="reserved-syntax">web_md</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Wm</span><span class="plain-syntax">, </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ext</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</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">ext</span><span class="plain-syntax">) *</span><span class="identifier-syntax">ext</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">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::create_mr</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><span class="reserved-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::create_mr</span></a><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-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c+?) -&gt; (%c+)"</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-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c+?) -&gt; (%c+)"</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax"> = </span><a href="6-cln.html#SP10" class="function-link"><span class="function-syntax">Colonies::resolve_reference_in_weave_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</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">r</span><span class="plain-syntax"> = </span><a href="6-cln.html#SP10" class="function-link"><span class="function-syntax">Colonies::resolve_reference_in_weave_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</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">for_HTML_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">Wm</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">for_HTML_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">Wm</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span> <span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax"> = </span><a href="6-cln.html#SP10" class="function-link"><span class="function-syntax">Colonies::resolve_reference_in_weave_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">,</span> <span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax"> = </span><a href="6-cln.html#SP10" class="function-link"><span class="function-syntax">Colonies::resolve_reference_in_weave_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">for_HTML_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wm</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">for_HTML_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wm</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::dispose_of</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::dispose_of</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Colonies::resolve_reference_in_weave_inner</span><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">title</span><span class="plain-syntax">,</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Colonies::resolve_reference_in_weave_inner</span><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">title</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">for_HTML_file</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="reserved-syntax">web_md</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Wm</span><span class="plain-syntax">, </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">for_HTML_file</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="reserved-syntax">web_md</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Wm</span><span class="plain-syntax">, </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ext</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">module</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from_M</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">Wm</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">Wm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_module</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">module</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from_M</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">Wm</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">Wm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">as_module</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">module</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_M</span><span class="plain-syntax"> = </span><span class="identifier-syntax">from_M</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">module</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_M</span><span class="plain-syntax"> = </span><span class="identifier-syntax">from_M</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">colony_member</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_CM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">colony_member</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_CM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">external</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">external</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Is it the name of a member of our colony?</span><span class="named-paragraph-number">10.1</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Is it an explicit URL?</span><span class="named-paragraph-number">10.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_2" class="named-paragraph-link"><span class="named-paragraph">If it contains a colon, does this indicate a section in a colony member?</span><span class="named-paragraph-number">10.2</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_2" class="named-paragraph-link"><span class="named-paragraph">Is it the name of a member of our colony?</span><span class="named-paragraph-number">10.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_3" class="named-paragraph-link"><span class="named-paragraph">If it contains a colon, does this indicate a section in a colony member?</span><span class="named-paragraph-number">10.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">module</span><span class="plain-syntax"> *</span><span class="identifier-syntax">found_M</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">module</span><span class="plain-syntax"> *</span><span class="identifier-syntax">found_M</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">section_md</span><span class="plain-syntax"> *</span><span class="identifier-syntax">found_Sm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">section_md</span><span class="plain-syntax"> *</span><span class="identifier-syntax">found_Sm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
@ -444,8 +447,8 @@ is where the reference is made from.
<span class="plain-syntax"> </span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_M</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</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">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_M</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</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><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</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">N</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">L</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">external</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><span class="identifier-syntax">L</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">external</span><span class="plain-syntax"> == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_3" class="named-paragraph-link"><span class="named-paragraph">Is it the name of a function in the current web?</span><span class="named-paragraph-number">10.3</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_4" class="named-paragraph-link"><span class="named-paragraph">Is it the name of a function in the current web?</span><span class="named-paragraph-number">10.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_4" class="named-paragraph-link"><span class="named-paragraph">Is it the name of a type in the current web?</span><span class="named-paragraph-number">10.4</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_5" class="named-paragraph-link"><span class="named-paragraph">Is it the name of a type in the current web?</span><span class="named-paragraph-number">10.5</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="string-syntax">"Can't find the cross-reference '%S'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="string-syntax">"Can't find the cross-reference '%S'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
@ -458,12 +461,27 @@ is where the reference is made from.
<span class="plain-syntax"> </span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_M</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</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">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_M</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">return</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">else</span><span class="plain-syntax"> {</span> <span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_5" class="named-paragraph-link"><span class="named-paragraph">It refers unambiguously to a single section</span><span class="named-paragraph-number">10.5</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_6" class="named-paragraph-link"><span class="named-paragraph">It refers unambiguously to a single section</span><span class="named-paragraph-number">10.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<p class="commentary firstcommentary"><a id="SP10_1"></a><b>&#167;10.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Is it the name of a member of our colony?</span><span class="named-paragraph-number">10.1</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP10_1"></a><b>&#167;10.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Is it an explicit URL?</span><span class="named-paragraph-number">10.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::create_mr</span></a><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-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"https*://%c*"</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::dispose_of</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</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">ext</span><span class="plain-syntax">) *</span><span class="identifier-syntax">ext</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::dispose_of</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-cln.html#SP10">&#167;10</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP10_2"></a><b>&#167;10.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Is it the name of a member of our colony?</span><span class="named-paragraph-number">10.2</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -473,11 +491,11 @@ is where the reference is made from.
<span class="plain-syntax"> </span><span class="reserved-syntax">section_md</span><span class="plain-syntax"> *</span><span class="identifier-syntax">found_Sm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FIRST_IN_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">section_md</span><span class="plain-syntax">, </span><span class="identifier-syntax">found_M</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sections_md</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">section_md</span><span class="plain-syntax"> *</span><span class="identifier-syntax">found_Sm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FIRST_IN_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">section_md</span><span class="plain-syntax">, </span><span class="identifier-syntax">found_M</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sections_md</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">bare_module_name</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">bare_module_name</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">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_CM</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_CM</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_5" class="named-paragraph-link"><span class="named-paragraph">It refers unambiguously to a single section</span><span class="named-paragraph-number">10.5</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_6" class="named-paragraph-link"><span class="named-paragraph">It refers unambiguously to a single section</span><span class="named-paragraph-number">10.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-cln.html#SP10">&#167;10</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="6-cln.html#SP10">&#167;10</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP10_2"></a><b>&#167;10.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">If it contains a colon, does this indicate a section in a colony member?</span><span class="named-paragraph-number">10.2</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP10_3"></a><b>&#167;10.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">If it contains a colon, does this indicate a section in a colony member?</span><span class="named-paragraph-number">10.3</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -496,7 +514,7 @@ is where the reference is made from.
<span class="plain-syntax"> </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::dispose_of</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::dispose_of</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-cln.html#SP10">&#167;10</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="6-cln.html#SP10">&#167;10</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP10_3"></a><b>&#167;10.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Is it the name of a function in the current web?</span><span class="named-paragraph-number">10.3</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP10_4"></a><b>&#167;10.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Is it the name of a function in the current web?</span><span class="named-paragraph-number">10.4</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -511,7 +529,7 @@ is where the reference is made from.
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-cln.html#SP10">&#167;10</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="6-cln.html#SP10">&#167;10</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP10_4"></a><b>&#167;10.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Is it the name of a type in the current web?</span><span class="named-paragraph-number">10.4</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP10_5"></a><b>&#167;10.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Is it the name of a type in the current web?</span><span class="named-paragraph-number">10.5</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -526,17 +544,17 @@ is where the reference is made from.
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-cln.html#SP10">&#167;10</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="6-cln.html#SP10">&#167;10</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP10_5"></a><b>&#167;10.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">It refers unambiguously to a single section</span><span class="named-paragraph-number">10.5</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP10_6"></a><b>&#167;10.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">It refers unambiguously to a single section</span><span class="named-paragraph-number">10.6</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">found_M</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"could not locate M"</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">found_M</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"could not locate M"</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">search_CM</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_5_1" class="named-paragraph-link"><span class="named-paragraph">The section is a known colony member</span><span class="named-paragraph-number">10.5.1</span></a></span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">search_CM</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_6_1" class="named-paragraph-link"><span class="named-paragraph">The section is a known colony member</span><span class="named-paragraph-number">10.6.1</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_5_2" class="named-paragraph-link"><span class="named-paragraph">The section is not in a known colony member</span><span class="named-paragraph-number">10.5.2</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-cln.html#SP10_6_2" class="named-paragraph-link"><span class="named-paragraph">The section is not in a known colony member</span><span class="named-paragraph-number">10.6.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-cln.html#SP10">&#167;10</a>, <a href="6-cln.html#SP10_1">&#167;10.1</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="6-cln.html#SP10">&#167;10</a>, <a href="6-cln.html#SP10_2">&#167;10.2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP10_5_1"></a><b>&#167;10.5.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The section is a known colony member</span><span class="named-paragraph-number">10.5.1</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP10_6_1"></a><b>&#167;10.6.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The section is a known colony member</span><span class="named-paragraph-number">10.6.1</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -548,13 +566,13 @@ is where the reference is made from.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bare_module_name</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><span class="identifier-syntax">bare_module_name</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">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="string-syntax">" (in %S)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_CM</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="string-syntax">" (in %S)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_CM</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-cln.html#SP10_5">&#167;10.5</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="6-cln.html#SP10_6">&#167;10.6</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP10_5_2"></a><b>&#167;10.5.2. </b>In the absence of a colony file, Inweb can really only guess, and the <p class="commentary firstcommentary"><a id="SP10_6_2"></a><b>&#167;10.6.2. </b>In the absence of a colony file, Inweb can really only guess, and the
guess it makes is that modules of the current web will be woven alongside guess it makes is that modules of the current web will be woven alongside
the main one, and suffixed by <span class="extract"><span class="extract-syntax">-module</span></span>. the main one, and suffixed by <span class="extract"><span class="extract-syntax">-module</span></span>.
</p> </p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The section is not in a known colony member</span><span class="named-paragraph-number">10.5.2</span></span><span class="comment-syntax"> =</span> <p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The section is not in a known colony member</span><span class="named-paragraph-number">10.6.2</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -567,7 +585,7 @@ the main one, and suffixed by <span class="extract"><span class="extract-syntax"
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="string-syntax">" (in %S)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">found_M</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">module_name</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="string-syntax">" (in %S)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">found_M</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">module_name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-cln.html#SP10_5">&#167;10.5</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="6-cln.html#SP10_6">&#167;10.6</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11"></a><b>&#167;11. URL management. </b></p> <p class="commentary firstcommentary"><a id="SP11"></a><b>&#167;11. URL management. </b></p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -583,7 +601,7 @@ the main one, and suffixed by <span class="extract"><span class="extract-syntax"
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Colonies::reference_URL</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Colonies::reference_URL</span></span>:<br/>The Collater - <a href="3-tc.html#SP5_1_8_11">&#167;5.1.8.11</a>, <a href="3-tc.html#SP5_1_8_14">&#167;5.1.8.14</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">link_text</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Colonies::reference_URL</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Colonies::reference_URL</span></span>:<br/>The Collater - <a href="3-tc.html#SP5_1_8_11">&#167;5.1.8.11</a>, <a href="3-tc.html#SP5_1_8_14">&#167;5.1.8.14</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">link_text</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="6-cln.html#SP10" class="function-link"><span class="function-syntax">Colonies::resolve_reference_in_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">link_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">))</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="6-cln.html#SP10" class="function-link"><span class="function-syntax">Colonies::resolve_reference_in_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">link_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span> <span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"Warning: unable to resolve reference '%S' in navigation\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">link_text</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"Warning: unable to resolve reference '%S' in navigation\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">link_text</span><span class="plain-syntax">);</span>
@ -591,7 +609,7 @@ the main one, and suffixed by <span class="extract"><span class="extract-syntax"
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</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">url</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Colonies::section_URL</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Colonies::section_URL</span></span>:<br/><a href="6-cln.html#SP10_5_1">&#167;10.5.1</a>, <a href="6-cln.html#SP10_5_2">&#167;10.5.2</a><br/>The Collater - <a href="3-tc.html#SP5_1_8_8_1">&#167;5.1.8.8.1</a><br/>HTML Formats - <a href="5-hf.html#SP5_3">&#167;5.3</a>, <a href="5-hf.html#SP5_3_1">&#167;5.3.1</a>, <a href="5-hf.html#SP5_3_2">&#167;5.3.2</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">section_md</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Sm</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Colonies::section_URL</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Colonies::section_URL</span></span>:<br/><a href="6-cln.html#SP10_6_1">&#167;10.6.1</a>, <a href="6-cln.html#SP10_6_2">&#167;10.6.2</a><br/>The Collater - <a href="3-tc.html#SP5_1_8_8_1">&#167;5.1.8.8.1</a><br/>HTML Formats - <a href="5-hf.html#SP5_3">&#167;5.3</a>, <a href="5-hf.html#SP5_3_1">&#167;5.3.1</a>, <a href="5-hf.html#SP5_3_2">&#167;5.3.2</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">section_md</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Sm</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">Sm</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unwoven section"</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">Sm</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unwoven section"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">Sm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_range</span><span class="plain-syntax">)</span> <span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">, </span><span class="identifier-syntax">Sm</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">sect_range</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#SP13" class="function-link"><span class="function-syntax">Str::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">) == </span><span class="character-syntax">'/'</span><span class="plain-syntax">) || (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">) == </span><span class="character-syntax">' '</span><span class="plain-syntax">))</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">) == </span><span class="character-syntax">'/'</span><span class="plain-syntax">) || (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">) == </span><span class="character-syntax">' '</span><span class="plain-syntax">))</span>
@ -601,7 +619,7 @@ the main one, and suffixed by <span class="extract"><span class="extract-syntax"
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">".html"</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">".html"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Colonies::paragraph_URL</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Colonies::paragraph_URL</span></span>:<br/><a href="6-cln.html#SP10_3">&#167;10.3</a>, <a href="6-cln.html#SP10_4">&#167;10.4</a><br/>The Weaver of Text - <a href="3-twot.html#SP3_3">&#167;3.3</a><br/>HTML Formats - <a href="5-hf.html#SP5_15">&#167;5.15</a>, <a href="5-hf.html#SP5_23">&#167;5.23</a>, <a href="5-hf.html#SP5_34">&#167;5.34</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Colonies::paragraph_URL</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Colonies::paragraph_URL</span></span>:<br/><a href="6-cln.html#SP10_4">&#167;10.4</a>, <a href="6-cln.html#SP10_5">&#167;10.5</a><br/>The Weaver of Text - <a href="3-twot.html#SP4_3">&#167;4.3</a><br/>HTML Formats - <a href="5-hf.html#SP5_15">&#167;5.15</a>, <a href="5-hf.html#SP5_23">&#167;5.23</a>, <a href="5-hf.html#SP5_34">&#167;5.34</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</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">from</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no from file"</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">from</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no from file"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no para"</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no para"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">section</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">under_section</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">section</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to_S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">under_section</span><span class="plain-syntax">;</span>

View file

@ -62,7 +62,7 @@ MathJax = {
<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></div> <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></div>
<p class="purpose">How to mark up code for literate programming.</p> <p class="purpose">How to mark up code for literate programming.</p>
<ul class="toc"><li><a href="M-htwaw.html#SP1">&#167;1. The title of a section</a></li><li><a href="M-htwaw.html#SP2">&#167;2. Paragraphing</a></li><li><a href="M-htwaw.html#SP6">&#167;6. Conditional compilation</a></li><li><a href="M-htwaw.html#SP7">&#167;7. Commentary</a></li><li><a href="M-htwaw.html#SP12">&#167;12. Code samples and other extraneous matter</a></li><li><a href="M-htwaw.html#SP13">&#167;13. Links</a></li><li><a href="M-htwaw.html#SP14">&#167;14. Cross-references</a></li><li><a href="M-htwaw.html#SP18">&#167;18. Figures</a></li><li><a href="M-htwaw.html#SP19">&#167;19. Carousels</a></li><li><a href="M-htwaw.html#SP20">&#167;20. Video and audio</a></li><li><a href="M-htwaw.html#SP21">&#167;21. Embedded video and audio</a></li><li><a href="M-htwaw.html#SP23">&#167;23. Mathematics notation</a></li><li><a href="M-htwaw.html#SP24">&#167;24. Footnotes</a></li></ul><hr class="tocbar"> <ul class="toc"><li><a href="M-htwaw.html#SP1">&#167;1. The title of a section</a></li><li><a href="M-htwaw.html#SP2">&#167;2. Paragraphing</a></li><li><a href="M-htwaw.html#SP6">&#167;6. Conditional compilation</a></li><li><a href="M-htwaw.html#SP7">&#167;7. Commentary</a></li><li><a href="M-htwaw.html#SP12">&#167;12. Code samples and other extraneous matter</a></li><li><a href="M-htwaw.html#SP13">&#167;13. Links</a></li><li><a href="M-htwaw.html#SP14">&#167;14. Cross-references</a></li><li><a href="M-htwaw.html#SP19">&#167;19. Figures</a></li><li><a href="M-htwaw.html#SP20">&#167;20. Carousels</a></li><li><a href="M-htwaw.html#SP21">&#167;21. Video and audio</a></li><li><a href="M-htwaw.html#SP22">&#167;22. Embedded video and audio</a></li><li><a href="M-htwaw.html#SP24">&#167;24. Mathematics notation</a></li><li><a href="M-htwaw.html#SP25">&#167;25. Footnotes</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. The title of a section. </b>In any section file, there will be a few lines at the top which occur before <p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;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 the first paragraph of code begins. (The first paragraph begins on the first
@ -516,13 +516,15 @@ make them into links. For example:
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> For further reading, see: https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships</span> <span class="plain-syntax"> For further reading, see: https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships.</span>
</pre> </pre>
<p class="commentary">For further reading, see: <a href="https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships" class="external">https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships</a> <p class="commentary">For further reading, see: <a href="https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships" class="external">https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships</a>.
</p> </p>
<p class="commentary">Note that URLs are considered to continue to the next white space, so don't <p class="commentary">Note that URLs are considered to continue to the next white space, except
end them with full stops or commas. that any final full stops, question or exclamation marks, commas, brackets,
semicolons, or colons are disregarded. (This is why the above sentence ended
with a full stop and yet the full stop wasn't part of the reference URL.)
</p> </p>
<p class="commentary">URLs will also be recognised in any text extract marked as <span class="extract"><span class="extract-syntax">hyperlinked</span></span>. <p class="commentary">URLs will also be recognised in any text extract marked as <span class="extract"><span class="extract-syntax">hyperlinked</span></span>.
@ -530,15 +532,15 @@ For example,
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> Compare: https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes</span> <span class="plain-syntax"> Compare: https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes!</span>
</pre> </pre>
<p class="commentary">produces: <p class="commentary">produces:
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> Compare: </span><a href="https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes" class="external">https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes</a> <span class="plain-syntax"> Compare: </span><a href="https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes!" class="external">https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes!</a>
</pre> </pre>
<p class="commentary firstcommentary"><a id="SP14"></a><b>&#167;14. Cross-references. </b>These are like links, but internal. These are normally written within <span class="extract"><span class="extract-syntax">//</span></span> <p class="commentary firstcommentary"><a id="SP14"></a><b>&#167;14. Cross-references. </b>These are like links, but are internal. These are normally written within <span class="extract"><span class="extract-syntax">//</span></span>
signs and are only available in the commentary of a web. They allow us to signs and are only available in the commentary of a web. They allow us to
place cross-references like so: place cross-references like so:
</p> </p>
@ -576,6 +578,14 @@ This is simple: for example,
</pre> </pre>
<p class="commentary">produces: "First <a href="1-cnf.html" class="internal">the program has to configure itself</a>, <p class="commentary">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>. then..."; the text "the program has to configure itself" links to <a href="1-cnf.html" class="internal">Configuration</a>.
This is especially useful if the destination is given as an explicit URL, which
is also allowed:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> See //this biographical note -&gt; http://mathshistory.st-andrews.ac.uk/Biographies/Gauss.html//.</span>
</pre>
<p class="commentary">See <a href="http://mathshistory.st-andrews.ac.uk/Biographies/Gauss.html" class="external">this biographical note</a>.
</p> </p>
<p class="commentary firstcommentary"><a id="SP16"></a><b>&#167;16. </b>It's also possible to reference function names and type names, provided that <p class="commentary firstcommentary"><a id="SP16"></a><b>&#167;16. </b>It's also possible to reference function names and type names, provided that
@ -611,7 +621,11 @@ See <a href="M-mwiw.html" class="internal">Making Weaves into Websites</a>.
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> See the </span><a href="M-iti.html" class="internal">Manual</a><span class="plain-syntax"> for more on this.</span> <span class="plain-syntax"> See the </span><a href="M-iti.html" class="internal">Manual</a><span class="plain-syntax"> for more on this.</span>
</pre> </pre>
<p class="commentary">This notation may be inconvenient if you need <span class="extract"><span class="extract-syntax">//</span></span> for something else, but it <p class="commentary firstcommentary"><a id="SP18"></a><b>&#167;18. </b>Cross-references must begin after white space, or a punctuation mark (other
than a colon), and must end to be followed by more white space or another
punctuation mark (this time allowing a colon). In practice, that reduces
the risk of misunderstanding a <span class="extract"><span class="extract-syntax">//</span></span> occurring in the commentary for some
other reason. All the same, you might want a different notation, so this
can be configured in the Contents page of a web, say like so: can be configured in the Contents page of a web, say like so:
</p> </p>
@ -624,7 +638,7 @@ can be configured in the Contents page of a web, say like so:
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="element-syntax">Cross-References Notation</span><span class="plain-syntax">:</span><span class="string-syntax"> Off</span> <span class="element-syntax">Cross-References Notation</span><span class="plain-syntax">:</span><span class="string-syntax"> Off</span>
</pre> </pre>
<p class="commentary firstcommentary"><a id="SP18"></a><b>&#167;18. Figures. </b>Images to be included in weaves of a web are called "Figures", as they <p class="commentary firstcommentary"><a id="SP19"></a><b>&#167;19. 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 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 <span class="extract"><span class="extract-syntax">Figures</span></span>: for instance, format and placed in a subdirectory of the web called <span class="extract"><span class="extract-syntax">Figures</span></span>: for instance,
the weaver would seek <span class="extract"><span class="extract-syntax">Fig_2_3.pdf</span></span> at pathname <span class="extract"><span class="extract-syntax">Figures/Fig_2_3.pdf</span></span>. the weaver would seek <span class="extract"><span class="extract-syntax">Fig_2_3.pdf</span></span> at pathname <span class="extract"><span class="extract-syntax">Figures/Fig_2_3.pdf</span></span>.
@ -657,7 +671,7 @@ correspond. If you really want to monkey with the aspect ratio,
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> = (figure Whatever.jpg at 20 by 100)</span> <span class="plain-syntax"> = (figure Whatever.jpg at 20 by 100)</span>
</pre> </pre>
<p class="commentary firstcommentary"><a id="SP19"></a><b>&#167;19. Carousels. </b>A carousel is a slide-show of (usually but not always) figures; there's a <p class="commentary firstcommentary"><a id="SP20"></a><b>&#167;20. Carousels. </b>A carousel is a slide-show of (usually but not always) figures; there's a
set of slides with captions, only one of which is visible at a time. set of slides with captions, only one of which is visible at a time.
</p> </p>
@ -770,7 +784,7 @@ it can also be <span class="extract"><span class="extract-syntax">above</span></
<span class="plain-syntax"> = (figure furtive.jpg)</span> <span class="plain-syntax"> = (figure furtive.jpg)</span>
<span class="plain-syntax"> = (carousel end)</span> <span class="plain-syntax"> = (carousel end)</span>
</pre> </pre>
<p class="commentary firstcommentary"><a id="SP20"></a><b>&#167;20. Video and audio. </b>To include audio samples, place them as MP3 files in the subdirectory <span class="extract"><span class="extract-syntax">Audio</span></span> <p class="commentary firstcommentary"><a id="SP21"></a><b>&#167;21. Video and audio. </b>To include audio samples, place them as MP3 files in the subdirectory <span class="extract"><span class="extract-syntax">Audio</span></span>
of the web. For example, in the present web, of the web. For example, in the present web,
</p> </p>
@ -796,7 +810,7 @@ Your browser does not support the audio element.
takes up space, so for economy's sake a demonstration is omitted from this manual. takes up space, so for economy's sake a demonstration is omitted from this manual.
</p> </p>
<p class="commentary firstcommentary"><a id="SP21"></a><b>&#167;21. Embedded video and audio. </b>One way to get around such space limitations is to embed players for video or <p class="commentary firstcommentary"><a id="SP22"></a><b>&#167;22. Embedded video and audio. </b>One way to get around such space limitations is to embed players for video or
audio hosted on some external service. For example: audio hosted on some external service. For example:
</p> </p>
@ -839,7 +853,7 @@ this case was <span class="extract"><span class="extract-syntax">https://youtu.b
<p class="center-p"><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> <p class="center-p"><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>
</p> </p>
<p class="commentary firstcommentary"><a id="SP22"></a><b>&#167;22. </b>Adding width and height is straightforward; by default the dimensions are <p class="commentary firstcommentary"><a id="SP23"></a><b>&#167;23. </b>Adding width and height is straightforward; by default the dimensions are
720 by 405. 720 by 405.
</p> </p>
@ -851,7 +865,7 @@ this case was <span class="extract"><span class="extract-syntax">https://youtu.b
arguably music has width and not height, but SoundCloud thinks otherwise). arguably music has width and not height, but SoundCloud thinks otherwise).
</p> </p>
<p class="commentary firstcommentary"><a id="SP23"></a><b>&#167;23. Mathematics notation. </b>Literate programming is a good technique to justify code which hangs on <p class="commentary firstcommentary"><a id="SP24"></a><b>&#167;24. 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 unobvious pieces of mathematics or computer science, and which must therefore
be explained carefully. Formulae or equations are a real convenience for that. be explained carefully. Formulae or equations are a real convenience for that.
</p> </p>
@ -890,7 +904,7 @@ changed. The defaults are:
treat it as any other text would be treated. treat it as any other text would be treated.
</p> </p>
<p class="commentary firstcommentary"><a id="SP24"></a><b>&#167;24. 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="commentary firstcommentary"><a id="SP25"></a><b>&#167;25. 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> references.<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup>
</p> </p>
@ -899,7 +913,7 @@ University Press, 1999).
<a href="#fnref:1" title="return to text"> &#x21A9;</a></p></li><li class="footnote" id="fn:2"><p class="inwebfootnote"><sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> For example, to cite Donald Knuth, "Evaluation of Porter's constant", <a href="#fnref:1" title="return to text"> &#x21A9;</a></p></li><li class="footnote" id="fn:2"><p class="inwebfootnote"><sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup> For example, to cite Donald Knuth, "Evaluation of Porter's constant",
Computers &amp; Mathematics with Applications, 2, 137-39 (1976). Computers &amp; Mathematics with Applications, 2, 137-39 (1976).
<a href="#fnref:2" title="return to text"> &#x21A9;</a></p></li></ul> <a href="#fnref:2" title="return to text"> &#x21A9;</a></p></li></ul>
<p class="commentary firstcommentary"><a id="SP25"></a><b>&#167;25. </b>The content of that sentence was typed as follows: <p class="commentary firstcommentary"><a id="SP26"></a><b>&#167;26. </b>The content of that sentence was typed as follows:
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">