Added feature for extract files
This commit is contained in:
parent
796d71d80d
commit
7875f3e7e6
28 changed files with 2041 additions and 1635 deletions
|
@ -28,6 +28,7 @@ typedef struct source_line {
|
|||
int plainer; /* used only for |BEGIN_CODE_LCAT| lines: suppresses box */
|
||||
int enable_hyperlinks; /* used only for |CODE_BODY_LCAT| lines: link URLs in weave */
|
||||
struct programming_language *colour_as; /* used only for |TEXT_EXTRACT_LCAT| lines */
|
||||
struct text_stream *extract_to; /* used only for |TEXT_EXTRACT_LCAT| lines */
|
||||
int is_commentary; /* flag */
|
||||
struct language_function *function_defined; /* if any C-like function is defined on this line */
|
||||
struct preform_nonterminal *preform_nonterminal_defined; /* similarly */
|
||||
|
@ -56,6 +57,7 @@ source_line *Lines::new_source_line_in(text_stream *line, text_file_position *tf
|
|||
sl->plainer = FALSE;
|
||||
sl->enable_hyperlinks = FALSE;
|
||||
sl->colour_as = NULL;
|
||||
sl->extract_to = NULL;
|
||||
sl->is_commentary = FALSE;
|
||||
sl->function_defined = NULL;
|
||||
sl->preform_nonterminal_defined = NULL;
|
||||
|
|
|
@ -36,6 +36,7 @@ markup syntax, and trying to detect incorrect uses of one within the other.
|
|||
code_plainness_for_body = FALSE,
|
||||
hyperlink_body = FALSE;
|
||||
programming_language *code_pl_for_body = NULL;
|
||||
text_stream *code_destination = NULL;
|
||||
int before_bar = TRUE;
|
||||
int next_par_number = 1;
|
||||
paragraph *current_paragraph = NULL;
|
||||
|
@ -325,6 +326,7 @@ division in the current section.
|
|||
L->category = BEGIN_CODE_LCAT;
|
||||
L->plainer = FALSE;
|
||||
code_lcat_for_body = CODE_BODY_LCAT;
|
||||
code_destination = NULL;
|
||||
code_pl_for_body = NULL;
|
||||
comment_mode = FALSE;
|
||||
match_results mr = Regexp::create_mr();
|
||||
|
@ -338,18 +340,28 @@ division in the current section.
|
|||
(Regexp::match(&mr2, mr.exp[0], L"%((%c*?) *text%)"))) {
|
||||
@<Make plainer@>;
|
||||
code_lcat_for_body = TEXT_EXTRACT_LCAT;
|
||||
code_destination = NULL;
|
||||
code_pl_for_body = NULL;
|
||||
extract_mode = TRUE;
|
||||
} else if ((current_paragraph) &&
|
||||
(Regexp::match(&mr2, mr.exp[0], L"%((%c*?) *text to *(%c+)%)"))) {
|
||||
@<Make plainer@>;
|
||||
code_lcat_for_body = TEXT_EXTRACT_LCAT;
|
||||
code_destination = Str::duplicate(mr2.exp[1]);
|
||||
code_pl_for_body = Languages::find_by_name(I"Extracts", W, TRUE);
|
||||
extract_mode = TRUE;
|
||||
} else if ((current_paragraph) &&
|
||||
(Regexp::match(&mr2, mr.exp[0], L"%((%c*?) *text as code%)"))) {
|
||||
@<Make plainer@>;
|
||||
code_lcat_for_body = TEXT_EXTRACT_LCAT;
|
||||
code_destination = NULL;
|
||||
code_pl_for_body = S->sect_language;
|
||||
extract_mode = TRUE;
|
||||
} else if ((current_paragraph) &&
|
||||
(Regexp::match(&mr2, mr.exp[0], L"%((%c*?) *text as (%c+)%)"))) {
|
||||
@<Make plainer@>;
|
||||
code_lcat_for_body = TEXT_EXTRACT_LCAT;
|
||||
code_destination = NULL;
|
||||
code_pl_for_body = Languages::find_by_name(mr2.exp[1], W, TRUE);
|
||||
extract_mode = TRUE;
|
||||
} else if ((current_paragraph) &&
|
||||
|
@ -811,7 +823,10 @@ CWEB, but is needed for languages which don't allow multi-line definitions.)
|
|||
L->category = code_lcat_for_body;
|
||||
L->plainer = code_plainness_for_body;
|
||||
L->enable_hyperlinks = hyperlink_body;
|
||||
if (L->category == TEXT_EXTRACT_LCAT) L->colour_as = code_pl_for_body;
|
||||
if (L->category == TEXT_EXTRACT_LCAT) {
|
||||
L->colour_as = code_pl_for_body;
|
||||
if (code_destination) L->extract_to = Str::duplicate(code_destination);
|
||||
}
|
||||
}
|
||||
|
||||
if ((L->category == CONT_DEFINITION_LCAT) && (Regexp::string_is_white_space(L->text))) {
|
||||
|
|
|
@ -23,6 +23,7 @@ void Tangler::tangle(web *W, tangle_target *target, filename *dest_file) {
|
|||
STREAM_CLOSE(OUT);
|
||||
|
||||
@<Tangle any imported headers@>;
|
||||
@<Tangle any extract files not part of the target itself@>;
|
||||
LanguageMethods::additional_tangling(lang, W, target);
|
||||
}
|
||||
|
||||
|
@ -101,6 +102,37 @@ extend across multiple lines.
|
|||
LOOP_OVER_LINKED_LIST(F, filename, W->headers)
|
||||
Shell::copy(F, Reader::tangled_folder(W), "");
|
||||
|
||||
@ The following simple implementation splices raw lines from text (probably
|
||||
code, or configuration gobbledegook) marked as "to ...", giving a leafname.
|
||||
We place files of those leafnames in the same directory as the tangle target.
|
||||
|
||||
@d MAX_EXTRACT_FILES 10
|
||||
|
||||
@<Tangle any extract files not part of the target itself@> =
|
||||
text_stream *extract_names[MAX_EXTRACT_FILES];
|
||||
text_stream extract_files[MAX_EXTRACT_FILES];
|
||||
int no_extract_files = 0;
|
||||
chapter *C; section *S; paragraph *P;
|
||||
LOOP_OVER_PARAGRAPHS(C, S, target, P)
|
||||
for (source_line *L = P->first_line_in_paragraph;
|
||||
((L) && (L->owning_paragraph == P)); L = L->next_line)
|
||||
if (Str::len(L->extract_to) > 0) {
|
||||
int j = no_extract_files;
|
||||
for (int i=0; i<no_extract_files; i++)
|
||||
if (Str::eq(L->extract_to, extract_names[i])) j = i;
|
||||
if (j == no_extract_files) {
|
||||
if (j == MAX_EXTRACT_FILES)
|
||||
Errors::fatal("too many extract files in tangle");
|
||||
extract_names[j] = Str::duplicate(L->extract_to);
|
||||
filename *F = Filenames::in(Filenames::up(dest_file), L->extract_to);
|
||||
if (STREAM_OPEN_TO_FILE(&(extract_files[j]), F, UTF8_ENC) == FALSE)
|
||||
Errors::fatal_with_file("unable to write extract file", F);
|
||||
no_extract_files++;
|
||||
}
|
||||
WRITE_TO(&(extract_files[j]), "%S\n", L->text);
|
||||
}
|
||||
for (int i=0; i<no_extract_files; i++) STREAM_CLOSE(&(extract_files[i]));
|
||||
|
||||
@ So here is the main tangler for a single paragraph. We basically expect to
|
||||
act only on |CODE_BODY_LCAT| lines (those containing actual code), unless
|
||||
something quirky has been done to support a language feature.
|
||||
|
|
|
@ -211,7 +211,7 @@ typedef struct weaver_state {
|
|||
}
|
||||
}
|
||||
L = NULL;
|
||||
Weaver::change_material(tree, state, ENDNOTES_MATERIAL, FALSE, NULL);
|
||||
Weaver::change_material(tree, state, ENDNOTES_MATERIAL, FALSE, NULL, NULL);
|
||||
Weaver::show_endnotes_on_previous_paragraph(tree, wv, state->ap, current_P);
|
||||
|
||||
@h How paragraphs begin.
|
||||
|
@ -260,7 +260,7 @@ about breaking pages at chapters and sections fail to work. So:
|
|||
}
|
||||
|
||||
if (L->category == END_EXTRACT_LCAT) {
|
||||
Weaver::change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL);
|
||||
Weaver::change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, NULL);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -369,19 +369,19 @@ add a vertical skip between them to show the division more clearly.
|
|||
@<Weave bracketed list indications at start of line into items@> =
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, matter, L"%(-...%) (%c*)")) { /* continue double */
|
||||
Weaver::change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL);
|
||||
Weaver::change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, NULL);
|
||||
Trees::make_child(WeaveTree::weave_item_node(tree, 2, I""), state->ap);
|
||||
Str::copy(matter, mr.exp[0]);
|
||||
} else if (Regexp::match(&mr, matter, L"%(...%) (%c*)")) { /* continue single */
|
||||
Weaver::change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL);
|
||||
Weaver::change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, NULL);
|
||||
Trees::make_child(WeaveTree::weave_item_node(tree, 1, I""), state->ap);
|
||||
Str::copy(matter, mr.exp[0]);
|
||||
} else if (Regexp::match(&mr, matter, L"%(-([a-zA-Z0-9*]+)%) (%c*)")) { /* begin double */
|
||||
Weaver::change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL);
|
||||
Weaver::change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, NULL);
|
||||
Trees::make_child(WeaveTree::weave_item_node(tree, 2, mr.exp[0]), state->ap);
|
||||
Str::copy(matter, mr.exp[1]);
|
||||
} else if (Regexp::match(&mr, matter, L"%(([a-zA-Z0-9*]+)%) (%c*)")) { /* begin single */
|
||||
Weaver::change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL);
|
||||
Weaver::change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, NULL);
|
||||
Trees::make_child(WeaveTree::weave_item_node(tree, 1, mr.exp[0]), state->ap);
|
||||
Str::copy(matter, mr.exp[1]);
|
||||
}
|
||||
|
@ -394,7 +394,7 @@ in the source is set indented in code style.
|
|||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, matter, L"\t|(%c*)|(%c*?)")) {
|
||||
TEMPORARY_TEXT(original)
|
||||
Weaver::change_material(tree, state, CODE_MATERIAL, FALSE, NULL);
|
||||
Weaver::change_material(tree, state, CODE_MATERIAL, FALSE, NULL, NULL);
|
||||
Str::copy(original, mr.exp[0]);
|
||||
Str::copy(matter, mr.exp[1]);
|
||||
TEMPORARY_TEXT(colouring)
|
||||
|
@ -412,7 +412,7 @@ in the source is set indented in code style.
|
|||
|
||||
@<Weave footnotes@> =
|
||||
if (L->category == FOOTNOTE_TEXT_LCAT) {
|
||||
Weaver::change_material(tree, state, FOOTNOTES_MATERIAL, FALSE, NULL);
|
||||
Weaver::change_material(tree, state, FOOTNOTES_MATERIAL, FALSE, NULL, NULL);
|
||||
footnote *F = L->footnote_text;
|
||||
tree_node *FN = WeaveTree::footnote(tree, F->cue_text);
|
||||
Trees::make_child(FN, state->material_node);
|
||||
|
@ -480,7 +480,12 @@ and macro usage is rendered differently.
|
|||
Languages::find_by_name(I"Preform", wv->weave_web, FALSE);
|
||||
if (prepl) pl = prepl;
|
||||
}
|
||||
Weaver::change_material(tree, state, will_be, L->plainer, pl);
|
||||
text_stream *note = NULL;
|
||||
if (Str::len(L->extract_to) > 0) {
|
||||
note = Str::new();
|
||||
WRITE_TO(note, "This is part of the extract file %S.", L->extract_to);
|
||||
}
|
||||
Weaver::change_material(tree, state, will_be, L->plainer, pl, note);
|
||||
state->line_break_pending = FALSE;
|
||||
}
|
||||
|
||||
|
@ -753,9 +758,10 @@ void Weaver::weave_subheading(heterogeneous_tree *tree, weave_order *wv,
|
|||
}
|
||||
|
||||
void Weaver::change_material(heterogeneous_tree *tree,
|
||||
weaver_state *state, int new_material, int plainly, programming_language *pl) {
|
||||
weaver_state *state, int new_material, int plainly, programming_language *pl,
|
||||
text_stream *note) {
|
||||
if (state->kind_of_material != new_material) {
|
||||
tree_node *D = WeaveTree::material(tree, new_material, plainly, pl);
|
||||
tree_node *D = WeaveTree::material(tree, new_material, plainly, pl, note);
|
||||
if (state->carousel_node) Trees::make_child(D, state->carousel_node);
|
||||
else Trees::make_child(D, state->para_node);
|
||||
state->material_node = D;
|
||||
|
@ -765,7 +771,7 @@ void Weaver::change_material(heterogeneous_tree *tree,
|
|||
}
|
||||
|
||||
void Weaver::change_material_for_para(heterogeneous_tree *tree, weaver_state *state) {
|
||||
tree_node *D = WeaveTree::material(tree, COMMENTARY_MATERIAL, FALSE, NULL);
|
||||
tree_node *D = WeaveTree::material(tree, COMMENTARY_MATERIAL, FALSE, NULL, NULL);
|
||||
Trees::make_child(D, state->para_node);
|
||||
state->material_node = D;
|
||||
state->ap = D;
|
||||
|
|
|
@ -51,22 +51,24 @@ takes care of it automatically.
|
|||
chapter *C;
|
||||
section *S;
|
||||
LOOP_WITHIN_TANGLE(C, S, Tangler::primary_target(W)) {
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Str::len(L->extract_to) == 0) {
|
||||
match_results mr = Regexp::create_mr();
|
||||
|
||||
if (Regexp::match(&mr, L->text, L"typedef struct (%i+) %c*{%c*")) {
|
||||
current_str = Functions::new_struct(W, mr.exp[0], L);
|
||||
Tags::add_by_name(L->owning_paragraph, I"Structures");
|
||||
} else if ((Str::get_first_char(L->text) == '}') && (current_str)) {
|
||||
current_str->typedef_ends = L;
|
||||
current_str = NULL;
|
||||
} else if ((current_str) && (current_str->typedef_ends == NULL)) {
|
||||
@<Work through a line in the structure definition@>;
|
||||
} else if ((Regexp::match(&mr, L->text, L"typedef %c+")) &&
|
||||
(Regexp::match(&mr, L->text, L"%c+##%c+") == FALSE)) {
|
||||
if (L->owning_paragraph->placed_very_early == FALSE)
|
||||
L->category = TYPEDEF_LCAT;
|
||||
if (Regexp::match(&mr, L->text, L"typedef struct (%i+) %c*{%c*")) {
|
||||
current_str = Functions::new_struct(W, mr.exp[0], L);
|
||||
Tags::add_by_name(L->owning_paragraph, I"Structures");
|
||||
} else if ((Str::get_first_char(L->text) == '}') && (current_str)) {
|
||||
current_str->typedef_ends = L;
|
||||
current_str = NULL;
|
||||
} else if ((current_str) && (current_str->typedef_ends == NULL)) {
|
||||
@<Work through a line in the structure definition@>;
|
||||
} else if ((Regexp::match(&mr, L->text, L"typedef %c+")) &&
|
||||
(Regexp::match(&mr, L->text, L"%c+##%c+") == FALSE)) {
|
||||
if (L->owning_paragraph->placed_very_early == FALSE)
|
||||
L->category = TYPEDEF_LCAT;
|
||||
}
|
||||
Regexp::dispose_of(&mr);
|
||||
}
|
||||
Regexp::dispose_of(&mr);
|
||||
}
|
||||
|
||||
@ At this point we're reading a line within the structure's definition; for
|
||||
|
|
|
@ -500,6 +500,13 @@ int HTMLFormat::render_visit(tree_node *N, void *state, int L) {
|
|||
DISCARD_TEXT(cl)
|
||||
@<Recurse the renderer through children nodes@>;
|
||||
HTML_CLOSE("pre"); WRITE("\n");
|
||||
if (Str::len(C->endnote) > 0) {
|
||||
HTML_OPEN_WITH("ul", "class=\"endnotetexts\"");
|
||||
HTML_OPEN("li");
|
||||
HTMLFormat::escape_text(OUT, C->endnote);
|
||||
HTML_CLOSE("li");
|
||||
HTML_CLOSE("ul"); WRITE("\n");
|
||||
}
|
||||
|
||||
@<Deal with a footnotes material node@> =
|
||||
@<If no para number yet, render a p just to hold this@>;
|
||||
|
|
|
@ -104,6 +104,7 @@ typedef struct weave_material_node {
|
|||
int material_type;
|
||||
int plainly;
|
||||
struct programming_language *styling;
|
||||
struct text_stream *endnote;
|
||||
CLASS_DEFINITION
|
||||
} weave_material_node;
|
||||
|
||||
|
@ -544,11 +545,12 @@ tree_node *WeaveTree::download(heterogeneous_tree *tree,
|
|||
}
|
||||
|
||||
tree_node *WeaveTree::material(heterogeneous_tree *tree, int material_type, int plainly,
|
||||
programming_language *styling) {
|
||||
programming_language *styling, text_stream *endnote) {
|
||||
weave_material_node *C = CREATE(weave_material_node);
|
||||
C->material_type = material_type;
|
||||
C->plainly = plainly;
|
||||
C->styling = styling;
|
||||
C->endnote = Str::duplicate(endnote);
|
||||
return Trees::new_node(tree, weave_material_node_type, STORE_POINTER_weave_material_node(C));
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ C: The C programming language
|
|||
C++: The C++ programming language
|
||||
ConsoleText: For styling command line text in documentation
|
||||
Delia: For defining test recipes in Intest
|
||||
Extracts: For code extracts to be written to a configuration file
|
||||
ILDF: The Inweb Language Definition File format
|
||||
InC: The Inform-tools extension to the C programming language
|
||||
Indoc: The markup syntax for the Indoc documentation tool
|
||||
|
|
3
Languages/Extracts.ildf
Normal file
3
Languages/Extracts.ildf
Normal file
|
@ -0,0 +1,3 @@
|
|||
Name: "Extracts"
|
||||
Details: "For code extracts to be written to a configuration file"
|
||||
Extension: ".txt"
|
|
@ -372,6 +372,49 @@ For example,
|
|||
...which is essential in order to restore the state of
|
||||
=
|
||||
|
||||
@h Extract files.
|
||||
Many programs can only properly function if accompanied by a configuration file
|
||||
of some kind: a set of default preferences, for example, or some other associated
|
||||
data. This is not part of the program, and will instead be read in every time
|
||||
the program runs.
|
||||
|
||||
To explain such a program properly, one really needs to explain this sidekick
|
||||
file as well. So Inweb provides a feature for including these files inside the
|
||||
body of a web, as what are called "extracts". For example:
|
||||
= (text as Inweb)
|
||||
= (text to magic-settings.txt)
|
||||
top-hat-capacity = 6 rabbits
|
||||
cabinet-trapdoor = closed
|
||||
=
|
||||
=
|
||||
The result weaves like so:
|
||||
= (text to magic-settings.txt)
|
||||
top-hat-capacity = 6 rabbits
|
||||
cabinet-trapdoor = closed
|
||||
=
|
||||
When the web is tangled, the file |magic-settings.txt| will be created with these
|
||||
contents and placed alongside the main tangled output, i.e., usually in the web's
|
||||
|Tangled| directory.
|
||||
|
||||
There can be up to 10 differently-named extract files. If there are multiple
|
||||
extracts naming the same file -- for example, if we also have:
|
||||
= (text as Inweb)
|
||||
= (text to magic-settings.txt)
|
||||
marked-card = 6 of clubs
|
||||
=
|
||||
=
|
||||
which weaves like so:
|
||||
= (text to magic-settings.txt)
|
||||
marked-card = 6 of clubs
|
||||
=
|
||||
then the extracts are tangled together into one file. So the result of the two
|
||||
example extracts above, after tangling, would be a single file which reads:
|
||||
= (text)
|
||||
top-hat-capacity = 6 rabbits
|
||||
cabinet-trapdoor = closed
|
||||
marked-card = 6 of clubs
|
||||
=
|
||||
|
||||
@h Links.
|
||||
URLs in the web are automatically recognised and a weave to HTML will
|
||||
make them into links. For example:
|
||||
|
|
38
Patterns/HTML/Colouring/Extracts-Colours.css
Normal file
38
Patterns/HTML/Colouring/Extracts-Colours.css
Normal file
|
@ -0,0 +1,38 @@
|
|||
/* The following correspond to the Inweb colours !definition, ..., !comment: */
|
||||
|
||||
span.definition-syntax { color: #444444; }
|
||||
span.function-syntax { color: #C00000; }
|
||||
span.identifier-syntax { color: #4040ff; }
|
||||
span.element-syntax { color: #40407f; }
|
||||
span.reserved-syntax { color: #600000; }
|
||||
span.string-syntax { color: #408040; }
|
||||
span.character-syntax { color: #204020; }
|
||||
span.constant-syntax { color: #804020; }
|
||||
span.plain-syntax { color: #000000; }
|
||||
span.extract-syntax { color: #444444; }
|
||||
span.comment-syntax { color: #404040; font-style:italic; }
|
||||
|
||||
/* This is used for the "define" or "enum" keyword on Inweb-defined constants: */
|
||||
|
||||
span.definition-keyword { color:#801010; font-weight:bold; }
|
||||
|
||||
/* These are for the angle-bracketed paragraph names: */
|
||||
|
||||
span.named-paragraph, span.named-paragraph-defn { color: #000000; font-size: 90%; }
|
||||
span.named-paragraph-number { color: #000000; font-size: 70%; font-style:italic; }
|
||||
span.named-paragraph-container {
|
||||
background: #ececf8; border: 1px solid #888888;
|
||||
}
|
||||
a.named-paragraph-link:link, a.named-paragraph-link:visited {
|
||||
text-decoration: none;
|
||||
}
|
||||
a.named-paragraph-link:active, a.named-paragraph-link:hover {
|
||||
background: #c8c8e8;
|
||||
}
|
||||
|
||||
/* This is the box into which multi-line stretches of code are put: */
|
||||
|
||||
pre.displayed-code {
|
||||
background: #FFFFE0;
|
||||
border: 1px dashed #cccccc;
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
# Inweb 7
|
||||
|
||||
v7-alpha.1+1A74 'Escape to Danger' (7 July 2021)
|
||||
v7-alpha.1+1A75 'Escape to Danger' (10 August 2021)
|
||||
|
||||
## About Inweb
|
||||
|
||||
|
|
3193
Tangled/inweb.c
3193
Tangled/inweb.c
File diff suppressed because it is too large
Load diff
|
@ -1,3 +1,3 @@
|
|||
Prerelease: alpha.1
|
||||
Build Date: 7 July 2021
|
||||
Build Number: 1A74
|
||||
Build Date: 10 August 2021
|
||||
Build Number: 1A75
|
||||
|
|
39
docs/docs-assets/Extracts-Colours.css
Normal file
39
docs/docs-assets/Extracts-Colours.css
Normal file
|
@ -0,0 +1,39 @@
|
|||
/* The following correspond to the Inweb colours !definition, ..., !comment: */
|
||||
|
||||
span.Extracts-definition-syntax { color: #444444; }
|
||||
span.Extracts-function-syntax { color: #C00000; }
|
||||
span.Extracts-identifier-syntax { color: #4040ff; }
|
||||
span.Extracts-element-syntax { color: #40407f; }
|
||||
span.Extracts-reserved-syntax { color: #600000; }
|
||||
span.Extracts-string-syntax { color: #408040; }
|
||||
span.Extracts-character-syntax { color: #204020; }
|
||||
span.Extracts-constant-syntax { color: #804020; }
|
||||
span.Extracts-plain-syntax { color: #000000; }
|
||||
span.Extracts-extract-syntax { color: #444444; }
|
||||
span.Extracts-comment-syntax { color: #404040; font-style:italic; }
|
||||
|
||||
/* This is used for the "define" or "enum" keyword on Inweb-defined constants: */
|
||||
|
||||
span.Extracts-definition-keyword { color:#801010; font-weight:bold; }
|
||||
|
||||
/* These are for the angle-bracketed paragraph names: */
|
||||
|
||||
span.Extracts-named-paragraph, span.Extracts-named-paragraph-defn { color: #000000; font-size: 90%; }
|
||||
span.Extracts-named-paragraph-number { color: #000000; font-size: 70%; font-style:italic; }
|
||||
span.Extracts-named-paragraph-container {
|
||||
background: #ececf8; border: 1px solid #888888;
|
||||
}
|
||||
a.named-paragraph-link:link, a.named-paragraph-link:visited {
|
||||
text-decoration: none;
|
||||
}
|
||||
a.named-paragraph-link:active, a.named-paragraph-link:hover {
|
||||
background: #c8c8e8;
|
||||
}
|
||||
|
||||
/* This is the box into which multi-line stretches of code are put: */
|
||||
|
||||
pre.Extracts-displayed-code {
|
||||
background: #FFFFE0;
|
||||
border: 1px dashed #cccccc;
|
||||
}
|
||||
|
|
@ -55,14 +55,14 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Header and footer. </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">HTML::header</span><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">title</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">css</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">js</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTML::header</span><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">title</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">css</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">js</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">state</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="5-htm.html#SP3" class="function-link"><span class="function-syntax">HTML::declare_as_HTML</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-htm.html#SP9" class="function-link"><span class="function-syntax">HTML::begin_head</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-htm.html#SP10" class="function-link"><span class="function-syntax">HTML::title</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-htm.html#SP11" class="function-link"><span class="function-syntax">HTML::incorporate_CSS</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">css</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-htm.html#SP11" class="function-link"><span class="function-syntax">HTML::incorporate_javascript</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">js</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">ADDITIONAL_SCRIPTING_HTML_CALLBACK</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADDITIONAL_SCRIPTING_HTML_CALLBACK</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADDITIONAL_SCRIPTING_HTML_CALLBACK</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><a href="5-htm.html#SP9" class="function-link"><span class="function-syntax">HTML::end_head</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-htm.html#SP13" class="function-link"><span class="function-syntax">HTML::begin_body</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
|
|
Binary file not shown.
|
@ -78,6 +78,7 @@ correspond to one of these:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">plainer</span><span class="plain-syntax">; </span><span class="comment-syntax"> used only for </span><span class="extract"><span class="extract-syntax">BEGIN_CODE_LCAT</span></span><span class="comment-syntax"> lines: suppresses box</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">enable_hyperlinks</span><span class="plain-syntax">; </span><span class="comment-syntax"> used only for </span><span class="extract"><span class="extract-syntax">CODE_BODY_LCAT</span></span><span class="comment-syntax"> lines: link URLs in weave</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">colour_as</span><span class="plain-syntax">; </span><span class="comment-syntax"> used only for </span><span class="extract"><span class="extract-syntax">TEXT_EXTRACT_LCAT</span></span><span class="comment-syntax"> lines</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">extract_to</span><span class="plain-syntax">; </span><span class="comment-syntax"> used only for </span><span class="extract"><span class="extract-syntax">TEXT_EXTRACT_LCAT</span></span><span class="comment-syntax"> lines</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">is_commentary</span><span class="plain-syntax">; </span><span class="comment-syntax"> flag</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">language_function</span><span class="plain-syntax"> *</span><span class="identifier-syntax">function_defined</span><span class="plain-syntax">; </span><span class="comment-syntax"> if any C-like function is defined on this line</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">preform_nonterminal</span><span class="plain-syntax"> *</span><span class="identifier-syntax">preform_nonterminal_defined</span><span class="plain-syntax">; </span><span class="comment-syntax"> similarly</span>
|
||||
|
@ -109,6 +110,7 @@ correspond to one of these:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">plainer</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">sl</span><span class="plain-syntax">-></span><span class="element-syntax">enable_hyperlinks</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">sl</span><span class="plain-syntax">-></span><span class="element-syntax">colour_as</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">sl</span><span class="plain-syntax">-></span><span class="element-syntax">extract_to</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">sl</span><span class="plain-syntax">-></span><span class="element-syntax">is_commentary</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">sl</span><span class="plain-syntax">-></span><span class="element-syntax">function_defined</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">sl</span><span class="plain-syntax">-></span><span class="element-syntax">preform_nonterminal_defined</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -90,6 +90,7 @@ markup syntax, and trying to detect incorrect uses of one within the other.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">code_plainness_for_body</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">hyperlink_body</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">programming_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">code_pl_for_body</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">code_destination</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">before_bar</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">next_par_number</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">current_paragraph</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -452,6 +453,7 @@ division in the current section.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax"> = </span><span class="constant-syntax">BEGIN_CODE_LCAT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">plainer</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">code_lcat_for_body</span><span class="plain-syntax"> = </span><span class="constant-syntax">CODE_BODY_LCAT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">code_destination</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">code_pl_for_body</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">comment_mode</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>
|
||||
|
@ -465,18 +467,28 @@ division in the current section.
|
|||
<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">(&</span><span class="identifier-syntax">mr2</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">L</span><span class="string-syntax">"%((%c*?) *text%)"</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tp.html#SP1_1_7_7_1" class="named-paragraph-link"><span class="named-paragraph">Make plainer</span><span class="named-paragraph-number">1.1.7.7.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">code_lcat_for_body</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">code_destination</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">code_pl_for_body</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">extract_mode</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">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">current_paragraph</span><span class="plain-syntax">) &&</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">(&</span><span class="identifier-syntax">mr2</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">L</span><span class="string-syntax">"%((%c*?) *text to *(%c+)%)"</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tp.html#SP1_1_7_7_1" class="named-paragraph-link"><span class="named-paragraph">Make plainer</span><span class="named-paragraph-number">1.1.7.7.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">code_lcat_for_body</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">code_destination</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">mr2</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">code_pl_for_body</span><span class="plain-syntax"> = </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Extracts"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</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">extract_mode</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">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">current_paragraph</span><span class="plain-syntax">) &&</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">(&</span><span class="identifier-syntax">mr2</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">L</span><span class="string-syntax">"%((%c*?) *text as code%)"</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tp.html#SP1_1_7_7_1" class="named-paragraph-link"><span class="named-paragraph">Make plainer</span><span class="named-paragraph-number">1.1.7.7.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">code_lcat_for_body</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">code_destination</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">code_pl_for_body</span><span class="plain-syntax"> = </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">sect_language</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">extract_mode</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">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">current_paragraph</span><span class="plain-syntax">) &&</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">(&</span><span class="identifier-syntax">mr2</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">L</span><span class="string-syntax">"%((%c*?) *text as (%c+)%)"</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tp.html#SP1_1_7_7_1" class="named-paragraph-link"><span class="named-paragraph">Make plainer</span><span class="named-paragraph-number">1.1.7.7.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">code_lcat_for_body</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">code_destination</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">code_pl_for_body</span><span class="plain-syntax"> = </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr2</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">W</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">extract_mode</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">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">current_paragraph</span><span class="plain-syntax">) &&</span>
|
||||
|
@ -617,7 +629,7 @@ division in the current section.
|
|||
<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">(&</span><span class="identifier-syntax">mr3</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tp.html#SP1_1_7_7">§1.1.7.7</a> (6 times).</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tp.html#SP1_1_7_7">§1.1.7.7</a> (7 times).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_7_7_2" class="paragraph-anchor"></a><b>§1.1.7.7.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Spool from file</span><span class="named-paragraph-number">1.1.7.7.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
|
@ -1010,7 +1022,10 @@ CWEB, but is needed for languages which don't allow multi-line definitions.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">category</span><span class="plain-syntax"> = </span><span class="identifier-syntax">code_lcat_for_body</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">plainer</span><span class="plain-syntax"> = </span><span class="identifier-syntax">code_plainness_for_body</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">enable_hyperlinks</span><span class="plain-syntax"> = </span><span class="identifier-syntax">hyperlink_body</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">-></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="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">colour_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">code_pl_for_body</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">-></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">L</span><span class="plain-syntax">-></span><span class="element-syntax">colour_as</span><span class="plain-syntax"> = </span><span class="identifier-syntax">code_pl_for_body</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">code_destination</span><span class="plain-syntax">) </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">extract_to</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">code_destination</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">L</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax"> == </span><span class="constant-syntax">CONT_DEFINITION_LCAT</span><span class="plain-syntax">) && (</span><a href="../foundation-module/4-pm.html#SP5" class="function-link"><span class="function-syntax">Regexp::string_is_white_space</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">))) {</span>
|
||||
|
|
|
@ -72,6 +72,7 @@ here for the tangling to begin...
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_CLOSE</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tt.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Tangle any imported headers</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-tt.html#SP1_3" class="named-paragraph-link"><span class="named-paragraph">Tangle any extract files not part of the target itself</span><span class="named-paragraph-number">1.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="4-lm.html#SP21" class="function-link"><span class="function-syntax">LanguageMethods::additional_tangling</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">lang</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">target</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -168,6 +169,42 @@ extend across multiple lines.
|
|||
<span class="plain-syntax"> </span><a href="../foundation-module/3-shl.html#SP3" class="function-link"><span class="function-syntax">Shell::copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><a href="2-tr.html#SP7" class="function-link"><span class="function-syntax">Reader::tangled_folder</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">), </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tt.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_3" class="paragraph-anchor"></a><b>§1.3. </b>The following simple implementation splices raw lines from text (probably
|
||||
code, or configuration gobbledegook) marked as "to ...", giving a leafname.
|
||||
We place files of those leafnames in the same directory as the tangle target.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAX_EXTRACT_FILES</span><span class="plain-syntax"> </span><span class="constant-syntax">10</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Tangle any extract files not part of the target itself</span><span class="named-paragraph-number">1.3</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">extract_names</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_EXTRACT_FILES</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">extract_files</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_EXTRACT_FILES</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">no_extract_files</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">chapter</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><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">paragraph</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_PARAGRAPHS</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">target</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</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">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">P</span><span class="plain-syntax">-></span><span class="identifier-syntax">first_line_in_paragraph</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">L</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax"> == </span><span class="identifier-syntax">P</span><span class="plain-syntax">)); </span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">next_line</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">L</span><span class="plain-syntax">-></span><span class="element-syntax">extract_to</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">j</span><span class="plain-syntax"> = </span><span class="identifier-syntax">no_extract_files</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"><</span><span class="identifier-syntax">no_extract_files</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><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">extract_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">extract_names</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">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">j</span><span class="plain-syntax"> == </span><span class="identifier-syntax">no_extract_files</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">j</span><span class="plain-syntax"> == </span><span class="constant-syntax">MAX_EXTRACT_FILES</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal</span></a><span class="plain-syntax">(</span><span class="string-syntax">"too many extract files in tangle"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">extract_names</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">] = </span><a href="../foundation-module/4-sm.html#SP3" class="function-link"><span class="function-syntax">Str::duplicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">extract_to</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">F</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-fln.html#SP2" class="function-link"><span class="function-syntax">Filenames::in</span></a><span class="plain-syntax">(</span><a href="../foundation-module/3-fln.html#SP6" class="function-link"><span class="function-syntax">Filenames::up</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dest_file</span><span class="plain-syntax">), </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">extract_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">STREAM_OPEN_TO_FILE</span><span class="plain-syntax">(&(</span><span class="identifier-syntax">extract_files</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">]), </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="constant-syntax">UTF8_ENC</span><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/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal_with_file</span></a><span class="plain-syntax">(</span><span class="string-syntax">"unable to write extract file"</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">no_extract_files</span><span class="plain-syntax">++;</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">extract_files</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span class="plain-syntax">]), </span><span class="string-syntax">"%S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">);</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"><</span><span class="identifier-syntax">no_extract_files</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">STREAM_CLOSE</span><span class="plain-syntax">(&(</span><span class="identifier-syntax">extract_files</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]));</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tt.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>So here is the main tangler for a single paragraph. We basically expect to
|
||||
act only on <span class="extract"><span class="extract-syntax">CODE_BODY_LCAT</span></span> lines (those containing actual code), unless
|
||||
something quirky has been done to support a language feature.
|
||||
|
|
|
@ -293,7 +293,7 @@ where to put the result: and so we arrive at the front door of the routine
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</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::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">ENDNOTES_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">ENDNOTES_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</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><a href="3-tw.html#SP3" class="function-link"><span class="function-syntax">Weaver::show_endnotes_on_previous_paragraph</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">-></span><span class="element-syntax">ap</span><span class="plain-syntax">, </span><span class="identifier-syntax">current_P</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tw.html#SP2_7">§2.7</a>.</li></ul>
|
||||
|
@ -358,7 +358,7 @@ about breaking pages at chapters and sections fail to work. So:
|
|||
<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">-></span><span class="identifier-syntax">category</span><span class="plain-syntax"> == </span><span class="constant-syntax">END_EXTRACT_LCAT</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::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">COMMENTARY_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">COMMENTARY_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</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">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
|
@ -519,19 +519,19 @@ add a vertical skip between them to show the division more clearly.
|
|||
<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">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"%(-...%) (%c*)"</span><span class="plain-syntax">)) { </span><span class="comment-syntax"> continue double</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tw.html#SP5" class="function-link"><span class="function-syntax">Weaver::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">COMMENTARY_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">COMMENTARY_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</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><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#SP8" class="function-link"><span class="function-syntax">WeaveTree::weave_item_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">), </span><span class="identifier-syntax">state</span><span class="plain-syntax">-></span><span class="element-syntax">ap</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="element-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="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">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"%(...%) (%c*)"</span><span class="plain-syntax">)) { </span><span class="comment-syntax"> continue single</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tw.html#SP5" class="function-link"><span class="function-syntax">Weaver::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">COMMENTARY_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">COMMENTARY_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</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><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#SP8" class="function-link"><span class="function-syntax">WeaveTree::weave_item_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">), </span><span class="identifier-syntax">state</span><span class="plain-syntax">-></span><span class="element-syntax">ap</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="element-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="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">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"%(-([a-zA-Z0-9*]+)%) (%c*)"</span><span class="plain-syntax">)) { </span><span class="comment-syntax"> begin double</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tw.html#SP5" class="function-link"><span class="function-syntax">Weaver::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">COMMENTARY_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">COMMENTARY_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</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><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#SP8" class="function-link"><span class="function-syntax">WeaveTree::weave_item_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="constant-syntax">2</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">state</span><span class="plain-syntax">-></span><span class="element-syntax">ap</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="element-syntax">exp</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</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">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"%(([a-zA-Z0-9*]+)%) (%c*)"</span><span class="plain-syntax">)) { </span><span class="comment-syntax"> begin single</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tw.html#SP5" class="function-link"><span class="function-syntax">Weaver::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">COMMENTARY_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">COMMENTARY_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</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><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#SP8" class="function-link"><span class="function-syntax">WeaveTree::weave_item_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="constant-syntax">1</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">state</span><span class="plain-syntax">-></span><span class="element-syntax">ap</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="element-syntax">exp</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -549,7 +549,7 @@ in the source is set indented in code style.
|
|||
<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">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">matter</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"\t|(%c*)|(%c*?)"</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">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::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">CODE_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">CODE_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</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><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">original</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="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="element-syntax">exp</span><span class="plain-syntax">[1]);</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>
|
||||
|
@ -571,7 +571,7 @@ in the source is set indented in code style.
|
|||
|
||||
<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">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">category</span><span class="plain-syntax"> == </span><span class="constant-syntax">FOOTNOTE_TEXT_LCAT</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::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">FOOTNOTES_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="constant-syntax">FOOTNOTES_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</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">footnote</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">footnote_text</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">FN</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP5" class="function-link"><span class="function-syntax">WeaveTree::footnote</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">-></span><span class="element-syntax">cue_text</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">FN</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">-></span><span class="element-syntax">material_node</span><span class="plain-syntax">);</span>
|
||||
|
@ -648,7 +648,12 @@ and macro usage is rendered differently.
|
|||
<span class="plain-syntax"> </span><a href="4-pl.html#SP2" class="function-link"><span class="function-syntax">Languages::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Preform"</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">weave_web</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">prepl</span><span class="plain-syntax">) </span><span class="identifier-syntax">pl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prepl</span><span class="plain-syntax">;</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::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="identifier-syntax">will_be</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">plainer</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl</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">note</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="../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">L</span><span class="plain-syntax">-></span><span class="element-syntax">extract_to</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">note</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-sm.html#SP2" class="function-link"><span class="function-syntax">Str::new</span></a><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">note</span><span class="plain-syntax">, </span><span class="string-syntax">"This is part of the extract file %S."</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">extract_to</span><span class="plain-syntax">);</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::change_material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="identifier-syntax">will_be</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">plainer</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="identifier-syntax">note</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">state</span><span class="plain-syntax">-></span><span class="element-syntax">line_break_pending</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
|
@ -967,9 +972,10 @@ structure usage, or how <span class="extract"><span class="extract-syntax">CWEB<
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Weaver::change_material</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">Weaver::change_material</span></span>:<br/><a href="3-tw.html#SP2_7_2">§2.7.2</a>, <a href="3-tw.html#SP2_7_2_3">§2.7.2.3</a>, <a href="3-tw.html#SP2_7_2_3_1_3">§2.7.2.3.1.3</a>, <a href="3-tw.html#SP2_7_2_3_1_4">§2.7.2.3.1.4</a>, <a href="3-tw.html#SP2_7_2_3_1_5">§2.7.2.3.1.5</a>, <a href="3-tw.html#SP2_7_2_3_2_1">§2.7.2.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="plain-syntax"> </span><span class="reserved-syntax">weaver_state</span><span class="plain-syntax"> *</span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">new_material</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">plainly</span><span class="plain-syntax">, </span><span class="reserved-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pl</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weaver_state</span><span class="plain-syntax"> *</span><span class="identifier-syntax">state</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">new_material</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">plainly</span><span class="plain-syntax">, </span><span class="reserved-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pl</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">note</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">state</span><span class="plain-syntax">-></span><span class="element-syntax">kind_of_material</span><span class="plain-syntax"> != </span><span class="identifier-syntax">new_material</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">D</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP2" class="function-link"><span class="function-syntax">WeaveTree::material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">new_material</span><span class="plain-syntax">, </span><span class="identifier-syntax">plainly</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl</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">D</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP2" class="function-link"><span class="function-syntax">WeaveTree::material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="identifier-syntax">new_material</span><span class="plain-syntax">, </span><span class="identifier-syntax">plainly</span><span class="plain-syntax">, </span><span class="identifier-syntax">pl</span><span class="plain-syntax">, </span><span class="identifier-syntax">note</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">state</span><span class="plain-syntax">-></span><span class="element-syntax">carousel_node</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">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">-></span><span class="element-syntax">carousel_node</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</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">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">-></span><span class="element-syntax">para_node</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">state</span><span class="plain-syntax">-></span><span class="element-syntax">material_node</span><span class="plain-syntax"> = </span><span class="identifier-syntax">D</span><span class="plain-syntax">;</span>
|
||||
|
@ -979,7 +985,7 @@ structure usage, or how <span class="extract"><span class="extract-syntax">CWEB<
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Weaver::change_material_for_para</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">Weaver::change_material_for_para</span></span>:<br/><a href="3-tw.html#SP2_7_2_1">§2.7.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">weaver_state</span><span class="plain-syntax"> *</span><span class="identifier-syntax">state</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">D</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP2" class="function-link"><span class="function-syntax">WeaveTree::material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="constant-syntax">COMMENTARY_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</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">tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><a href="5-wt.html#SP2" class="function-link"><span class="function-syntax">WeaveTree::material</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">, </span><span class="constant-syntax">COMMENTARY_MATERIAL</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</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><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">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">state</span><span class="plain-syntax">-></span><span class="element-syntax">para_node</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">state</span><span class="plain-syntax">-></span><span class="identifier-syntax">material_node</span><span class="plain-syntax"> = </span><span class="identifier-syntax">D</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">state</span><span class="plain-syntax">-></span><span class="identifier-syntax">ap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">D</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -109,22 +109,24 @@ takes care of it automatically.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">chapter</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">section</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_WITHIN_TANGLE</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><a href="3-tt.html#SP4" class="function-link"><span class="function-syntax">Tangler::primary_target</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</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">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">L</span><span class="plain-syntax">-></span><span class="element-syntax">extract_to</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">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">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"typedef struct (%i+) %c*{%c*"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_str</span><span class="plain-syntax"> = </span><a href="4-taf.html#SP2" class="function-link"><span class="function-syntax">Functions::new_struct</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</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">L</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tgs.html#SP4" class="function-link"><span class="function-syntax">Tags::add_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">owning_paragraph</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Structures"</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">if</span><span class="plain-syntax"> ((</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_first_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">) == </span><span class="character-syntax">'}'</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">current_str</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_str</span><span class="plain-syntax">-></span><span class="element-syntax">typedef_ends</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">current_str</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">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">current_str</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">current_str</span><span class="plain-syntax">-></span><span class="element-syntax">typedef_ends</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-cl.html#SP2_1_1" class="named-paragraph-link"><span class="named-paragraph">Work through a line in the structure definition</span><span class="named-paragraph-number">2.1.1</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="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">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"typedef %c+"</span><span class="plain-syntax">)) &&</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">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"%c+##%c+"</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">-></span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax">-></span><span class="element-syntax">placed_very_early</span><span class="plain-syntax"> == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax"> = </span><span class="constant-syntax">TYPEDEF_LCAT</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">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"typedef struct (%i+) %c*{%c*"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_str</span><span class="plain-syntax"> = </span><a href="4-taf.html#SP2" class="function-link"><span class="function-syntax">Functions::new_struct</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</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">L</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tgs.html#SP4" class="function-link"><span class="function-syntax">Tags::add_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Structures"</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">if</span><span class="plain-syntax"> ((</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_first_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">) == </span><span class="character-syntax">'}'</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">current_str</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_str</span><span class="plain-syntax">-></span><span class="element-syntax">typedef_ends</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">current_str</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">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">current_str</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">current_str</span><span class="plain-syntax">-></span><span class="element-syntax">typedef_ends</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-cl.html#SP2_1_1" class="named-paragraph-link"><span class="named-paragraph">Work through a line in the structure definition</span><span class="named-paragraph-number">2.1.1</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="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">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"typedef %c+"</span><span class="plain-syntax">)) &&</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">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"%c+##%c+"</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">-></span><span class="element-syntax">owning_paragraph</span><span class="plain-syntax">-></span><span class="element-syntax">placed_very_early</span><span class="plain-syntax"> == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">category</span><span class="plain-syntax"> = </span><span class="constant-syntax">TYPEDEF_LCAT</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">(&</span><span class="identifier-syntax">mr</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">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-cl.html#SP2">§2</a>.</li></ul>
|
||||
|
|
|
@ -645,6 +645,13 @@ ePub respectively:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">cl</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-hf.html#SP5_9_1" class="named-paragraph-link"><span class="named-paragraph">Recurse the renderer through children nodes</span><span class="named-paragraph-number">5.9.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"pre"</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</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">C</span><span class="plain-syntax">-></span><span class="element-syntax">endnote</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"ul"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"endnotetexts\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"li"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-hf.html#SP10" class="function-link"><span class="function-syntax">HTMLFormat::escape_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">endnote</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"li"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"ul"</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-hf.html#SP5_14">§5.14</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_14_3" class="paragraph-anchor"></a><b>§5.14.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Deal with a footnotes material node</span><span class="named-paragraph-number">5.14.3</span></span><span class="comment-syntax"> =</span>
|
||||
|
@ -1231,7 +1238,7 @@ which is itself inside a list entry"; and so on.
|
|||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </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">HTMLFormat::escape_text</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">HTMLFormat::escape_text</span></span>:<br/><a href="5-hf.html#SP5_5">§5.5</a>, <a href="5-hf.html#SP5_6">§5.6</a>, <a href="5-hf.html#SP5_16">§5.16</a>, <a href="5-hf.html#SP5_30">§5.30</a>, <a href="5-hf.html#SP5_36">§5.36</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">HTMLFormat::escape_text</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">HTMLFormat::escape_text</span></span>:<br/><a href="5-hf.html#SP5_5">§5.5</a>, <a href="5-hf.html#SP5_6">§5.6</a>, <a href="5-hf.html#SP5_14_2">§5.14.2</a>, <a href="5-hf.html#SP5_16">§5.16</a>, <a href="5-hf.html#SP5_30">§5.30</a>, <a href="5-hf.html#SP5_36">§5.36</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">id</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"> < </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">id</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><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">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">'&'</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&amp;"</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">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">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="character-syntax">'<'</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;"</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -154,6 +154,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">material_type</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">plainly</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">styling</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">endnote</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">weave_material_node</span><span class="plain-syntax">;</span>
|
||||
|
||||
|
@ -597,11 +598,12 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">WeaveTree::material</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">WeaveTree::material</span></span>:<br/>The Weaver - <a href="3-tw.html#SP5">§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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">material_type</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">plainly</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">styling</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">programming_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">styling</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">endnote</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_material_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_material_node</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">material_type</span><span class="plain-syntax"> = </span><span class="identifier-syntax">material_type</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">plainly</span><span class="plain-syntax"> = </span><span class="identifier-syntax">plainly</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">styling</span><span class="plain-syntax"> = </span><span class="identifier-syntax">styling</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">endnote</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">endnote</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_material_node_type</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_weave_material_node</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
|
|
@ -35,6 +35,7 @@ MathJax = {
|
|||
<script src="../docs-assets/Bigfoot.js"></script>
|
||||
<link href="../docs-assets/Bigfoot.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Extracts-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
|
@ -64,7 +65,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>
|
||||
<p class="purpose">How to mark up code for literate programming.</p>
|
||||
|
||||
<ul class="toc"><li><a href="M-htwaw.html#SP1">§1. The title of a section</a></li><li><a href="M-htwaw.html#SP2">§2. Paragraphing</a></li><li><a href="M-htwaw.html#SP6">§6. Conditional compilation</a></li><li><a href="M-htwaw.html#SP7">§7. Commentary</a></li><li><a href="M-htwaw.html#SP12">§12. Code samples and other extraneous matter</a></li><li><a href="M-htwaw.html#SP13">§13. Links</a></li><li><a href="M-htwaw.html#SP14">§14. Cross-references</a></li><li><a href="M-htwaw.html#SP19">§19. Figures</a></li><li><a href="M-htwaw.html#SP20">§20. Carousels</a></li><li><a href="M-htwaw.html#SP21">§21. Video and audio</a></li><li><a href="M-htwaw.html#SP22">§22. Embedded video and audio</a></li><li><a href="M-htwaw.html#SP24">§24. Downloads</a></li><li><a href="M-htwaw.html#SP25">§25. Mathematics notation</a></li><li><a href="M-htwaw.html#SP26">§26. Footnotes</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="M-htwaw.html#SP1">§1. The title of a section</a></li><li><a href="M-htwaw.html#SP2">§2. Paragraphing</a></li><li><a href="M-htwaw.html#SP6">§6. Conditional compilation</a></li><li><a href="M-htwaw.html#SP7">§7. Commentary</a></li><li><a href="M-htwaw.html#SP12">§12. Code samples and other extraneous matter</a></li><li><a href="M-htwaw.html#SP13">§13. Extract files</a></li><li><a href="M-htwaw.html#SP14">§14. Links</a></li><li><a href="M-htwaw.html#SP15">§15. Cross-references</a></li><li><a href="M-htwaw.html#SP20">§20. Figures</a></li><li><a href="M-htwaw.html#SP21">§21. Carousels</a></li><li><a href="M-htwaw.html#SP22">§22. Video and audio</a></li><li><a href="M-htwaw.html#SP23">§23. Embedded video and audio</a></li><li><a href="M-htwaw.html#SP25">§25. Downloads</a></li><li><a href="M-htwaw.html#SP26">§26. Mathematics notation</a></li><li><a href="M-htwaw.html#SP27">§27. Footnotes</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. The title of a section. </b>In any section file, there will be a few lines at the top which occur before
|
||||
the first paragraph of code begins. (The first paragraph begins on the first
|
||||
|
@ -528,7 +529,62 @@ For example,
|
|||
<span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> ...which is essential in order to restore the state of</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. Links. </b>URLs in the web are automatically recognised and a weave to HTML will
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. Extract files. </b>Many programs can only properly function if accompanied by a configuration file
|
||||
of some kind: a set of default preferences, for example, or some other associated
|
||||
data. This is not part of the program, and will instead be read in every time
|
||||
the program runs.
|
||||
</p>
|
||||
|
||||
<p class="commentary">To explain such a program properly, one really needs to explain this sidekick
|
||||
file as well. So Inweb provides a feature for including these files inside the
|
||||
body of a web, as what are called "extracts". For example:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> = (text to magic-settings.txt)</span>
|
||||
<span class="plain-syntax"> top-hat-capacity = 6 rabbits</span>
|
||||
<span class="plain-syntax"> cabinet-trapdoor = closed</span>
|
||||
<span class="plain-syntax"> =</span>
|
||||
</pre>
|
||||
<p class="commentary">The result weaves like so:
|
||||
</p>
|
||||
|
||||
<pre class="Extracts-displayed-code all-displayed-code code-font">
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">top</span><span class="Extracts-plain-syntax">-</span><span class="Extracts-identifier-syntax">hat</span><span class="Extracts-plain-syntax">-</span><span class="Extracts-identifier-syntax">capacity</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">6</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rabbits</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">cabinet</span><span class="Extracts-plain-syntax">-</span><span class="Extracts-identifier-syntax">trapdoor</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">closed</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file magic-settings.txt.</li></ul>
|
||||
<p class="commentary">When the web is tangled, the file <span class="extract"><span class="Extracts-extract-syntax">magic-settings.txt</span></span> will be created with these
|
||||
contents and placed alongside the main tangled output, i.e., usually in the web's
|
||||
<span class="extract"><span class="Extracts-extract-syntax">Tangled</span></span> directory.
|
||||
</p>
|
||||
|
||||
<p class="commentary">There can be up to 10 differently-named extract files. If there are multiple
|
||||
extracts naming the same file — for example, if we also have:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> = (text to magic-settings.txt)</span>
|
||||
<span class="plain-syntax"> marked-card = 6 of clubs</span>
|
||||
<span class="plain-syntax"> =</span>
|
||||
</pre>
|
||||
<p class="commentary">which weaves like so:
|
||||
</p>
|
||||
|
||||
<pre class="Extracts-displayed-code all-displayed-code code-font">
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">marked</span><span class="Extracts-plain-syntax">-</span><span class="Extracts-identifier-syntax">card</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">6</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">of</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">clubs</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file magic-settings.txt.</li></ul>
|
||||
<p class="commentary">then the extracts are tangled together into one file. So the result of the two
|
||||
example extracts above, after tangling, would be a single file which reads:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> top-hat-capacity = 6 rabbits</span>
|
||||
<span class="plain-syntax"> cabinet-trapdoor = closed</span>
|
||||
<span class="plain-syntax"> marked-card = 6 of clubs</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. Links. </b>URLs in the web are automatically recognised and a weave to HTML will
|
||||
make them into links. For example:
|
||||
</p>
|
||||
|
||||
|
@ -557,7 +613,7 @@ For example,
|
|||
<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>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§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>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. 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
|
||||
place cross-references like so:
|
||||
</p>
|
||||
|
@ -586,7 +642,7 @@ thrown if these references to sections are in any way ambiguous. They are not
|
|||
case sensitive.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>Sometimes we want to make a link without literally showing the destination.
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>Sometimes we want to make a link without literally showing the destination.
|
||||
This is simple: for example,
|
||||
</p>
|
||||
|
||||
|
@ -605,7 +661,7 @@ is also allowed:
|
|||
<p class="commentary">See <a href="http://mathshistory.st-andrews.ac.uk/Biographies/Gauss.html" class="external">this biographical note</a>.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>It's also possible to reference function names and type names, provided that
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>It's also possible to reference function names and type names, provided that
|
||||
the language definition supports these (see <a href="M-spl.html" class="internal">Supporting Programming Languages</a>):
|
||||
this is certainly the case for C-like languages. For example,
|
||||
</p>
|
||||
|
@ -624,7 +680,7 @@ current one, but this requires the use of a Colony file.
|
|||
See <a href="M-mwiw.html" class="internal">Making Weaves into Websites</a>.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>Cross-references also work inside text extracts marked as <span class="extract"><span class="extract-syntax">hyperlinked</span></span>.
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>Cross-references also work inside text extracts marked as <span class="extract"><span class="extract-syntax">hyperlinked</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -638,7 +694,7 @@ See <a href="M-mwiw.html" class="internal">Making Weaves into Websites</a>.
|
|||
<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>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>Cross-references must begin after white space, or a punctuation mark (other
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. </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
|
||||
|
@ -655,7 +711,7 @@ can be configured in the Contents page of a web, say like so:
|
|||
<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>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. Figures. </b>Images to be included in weaves of a web are called "Figures", as they
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. Figures. </b>Images to be included in weaves of a web are called "Figures", as they
|
||||
would be in a printed book. These images should ideally be in PNG, JPG or PDF
|
||||
format and placed in a subdirectory of the web called <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>.
|
||||
|
@ -688,7 +744,7 @@ correspond. If you really want to monkey with the aspect ratio,
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> = (figure Whatever.jpg at 20 by 100)</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. Carousels. </b>A carousel is a slide-show of (usually but not always) figures; there's a
|
||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. 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.
|
||||
</p>
|
||||
|
||||
|
@ -801,7 +857,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"> = (carousel end)</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§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>
|
||||
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. 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,
|
||||
</p>
|
||||
|
||||
|
@ -827,7 +883,7 @@ Your browser does not support the audio element.
|
|||
takes up space, so for economy's sake a demonstration is omitted from this manual.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. 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="SP23" class="paragraph-anchor"></a><b>§23. 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:
|
||||
</p>
|
||||
|
||||
|
@ -870,7 +926,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>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. </b>Adding width and height is straightforward; by default the dimensions are
|
||||
<p class="commentary firstcommentary"><a id="SP24" class="paragraph-anchor"></a><b>§24. </b>Adding width and height is straightforward; by default the dimensions are
|
||||
720 by 405.
|
||||
</p>
|
||||
|
||||
|
@ -882,7 +938,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).
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP24" class="paragraph-anchor"></a><b>§24. Downloads. </b>Occasional small downloads may be useful as a way to present examples to
|
||||
<p class="commentary firstcommentary"><a id="SP25" class="paragraph-anchor"></a><b>§25. Downloads. </b>Occasional small downloads may be useful as a way to present examples to
|
||||
try with a program being documented. These are very simple:
|
||||
</p>
|
||||
|
||||
|
@ -909,7 +965,7 @@ subdirectory of the web. The explanatory text — usually just an indication
|
|||
of what sort of file this is — is optional.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP25" class="paragraph-anchor"></a><b>§25. Mathematics notation. </b>Literate programming is a good technique to justify code which hangs on
|
||||
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. Mathematics notation. </b>Literate programming is a good technique to justify code which hangs on
|
||||
unobvious pieces of mathematics or computer science, and which must therefore
|
||||
be explained carefully. Formulae or equations are a real convenience for that.
|
||||
</p>
|
||||
|
@ -948,7 +1004,7 @@ changed. The defaults are:
|
|||
treat it as any other text would be treated.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. 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="SP27" class="paragraph-anchor"></a><b>§27. Footnotes. </b>Not everyone likes footnotes,<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> but sometimes they're a tidy way to make
|
||||
references.<sup id="fnref:2"><a href="#fn:2" rel="footnote">2</a></sup>
|
||||
</p>
|
||||
|
||||
|
@ -957,7 +1013,7 @@ University Press, 1999).
|
|||
<a href="#fnref:1" title="return to text"> ↩</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 & Mathematics with Applications, 2, 137-39 (1976).
|
||||
<a href="#fnref:2" title="return to text"> ↩</a></p></li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP27" class="paragraph-anchor"></a><b>§27. </b>The content of that sentence was typed as follows:
|
||||
<p class="commentary firstcommentary"><a id="SP28" class="paragraph-anchor"></a><b>§28. </b>The content of that sentence was typed as follows:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
|
|
@ -127,6 +127,7 @@ distribution:
|
|||
<span class="plain-syntax">C++: The C++ programming language</span>
|
||||
<span class="plain-syntax">ConsoleText: For styling command line text in documentation</span>
|
||||
<span class="plain-syntax">Delia: For defining test recipes in Intest</span>
|
||||
<span class="plain-syntax">Extracts: For code extracts to be written to a configuration file</span>
|
||||
<span class="plain-syntax">ILDF: The Inweb Language Definition File format</span>
|
||||
<span class="plain-syntax">InC: The Inform-tools extension to the C programming language</span>
|
||||
<span class="plain-syntax">Indoc: The markup syntax for the Indoc documentation tool</span>
|
||||
|
|
|
@ -70,6 +70,7 @@ installed Inweb replies like so:
|
|||
<span class="plain-syntax">C++: The C++ programming language</span>
|
||||
<span class="plain-syntax">ConsoleText: For styling command line text in documentation</span>
|
||||
<span class="plain-syntax">Delia: For defining test recipes in Intest</span>
|
||||
<span class="plain-syntax">Extracts: For code extracts to be written to a configuration file</span>
|
||||
<span class="plain-syntax">ILDF: The Inweb Language Definition File format</span>
|
||||
<span class="plain-syntax">InC: The Inform-tools extension to the C programming language</span>
|
||||
<span class="plain-syntax">Indoc: The markup syntax for the Indoc documentation tool</span>
|
||||
|
|
|
@ -5,14 +5,14 @@ Utility functions for writing HTML.
|
|||
@h Header and footer.
|
||||
|
||||
=
|
||||
void HTML::header(OUTPUT_STREAM, text_stream *title, filename *css, filename *js) {
|
||||
void HTML::header(OUTPUT_STREAM, text_stream *title, filename *css, filename *js, void *state) {
|
||||
HTML::declare_as_HTML(OUT, FALSE);
|
||||
HTML::begin_head(OUT, NULL);
|
||||
HTML::title(OUT, title);
|
||||
HTML::incorporate_CSS(OUT, css);
|
||||
HTML::incorporate_javascript(OUT, TRUE, js);
|
||||
#ifdef ADDITIONAL_SCRIPTING_HTML_CALLBACK
|
||||
ADDITIONAL_SCRIPTING_HTML_CALLBACK(OUT);
|
||||
ADDITIONAL_SCRIPTING_HTML_CALLBACK(OUT, state);
|
||||
#endif
|
||||
HTML::end_head(OUT);
|
||||
HTML::begin_body(OUT, NULL);
|
||||
|
@ -34,7 +34,7 @@ close the |b|: that would be wrongly nested. We want to throw errors like
|
|||
that into the debugging log, so:
|
||||
|
||||
@d tag_error(x) { LOG("Tag error: %s\n", x); }
|
||||
|
||||
|
||||
@ Any text stream can be declared as being HTML, and therefore subject to
|
||||
this auditing. To do that, we atach an |HTML_file_state| object to the
|
||||
text stream.
|
||||
|
|
Loading…
Reference in a new issue