Added -sequential section range option

This commit is contained in:
Graham Nelson 2020-04-03 16:29:03 +01:00
parent 42dd3daf62
commit 97e7ee892c
19 changed files with 646 additions and 533 deletions

View file

@ -29,6 +29,7 @@ typedef struct inweb_instructions {
int scan_switch; /* |-scan|: simply show the syntactic scan of the source */
struct filename *weave_to_setting; /* |-weave-to X|: the pathname X, if supplied */
struct pathname *weave_into_setting; /* |-weave-into X|: the pathname X, if supplied */
int sequential; /* give the sections sequential sigils */
struct filename *tangle_setting; /* |-tangle-to X|: the pathname X, if supplied */
struct filename *makefile_setting; /* |-makefile X|: the filename X, if supplied */
struct filename *gitignore_setting; /* |-gitignore X|: the filename X, if supplied */
@ -89,6 +90,7 @@ inweb_instructions Configuration::read(int argc, char **argv) {
args.tangle_setting = NULL;
args.weave_to_setting = NULL;
args.weave_into_setting = NULL;
args.sequential = FALSE;
args.makefile_setting = NULL;
args.gitignore_setting = NULL;
args.advance_setting = NULL;
@ -123,6 +125,7 @@ provides automatically.
@e WEAVE_CLSW
@e WEAVE_INTO_CLSW
@e WEAVE_TO_CLSW
@e SEQUENTIAL_CLSW
@e OPEN_CLSW
@e WEAVE_AS_CLSW
@e WEAVE_TAG_CLSW
@ -183,6 +186,8 @@ provides automatically.
L"weave, but into directory X");
CommandLine::declare_switch(WEAVE_TO_CLSW, L"weave-to", 2,
L"weave, but to filename X (for single files only)");
CommandLine::declare_boolean_switch(SEQUENTIAL_CLSW, L"sequential", 1,
L"name woven leaves with sequential numbering", FALSE);
CommandLine::declare_switch(OPEN_CLSW, L"open", 1,
L"weave then open woven file");
CommandLine::declare_switch(WEAVE_AS_CLSW, L"weave-as", 2,
@ -258,6 +263,8 @@ void Configuration::switch(int id, int val, text_stream *arg, void *state) {
case WEAVE_TO_CLSW:
args->weave_to_setting = Filenames::from_text(arg);
Configuration::set_fundamental_mode(args, WEAVE_MODE); break;
case SEQUENTIAL_CLSW:
args->sequential = val; break;
case OPEN_CLSW:
args->open_pdf_switch = TRUE;
Configuration::set_fundamental_mode(args, WEAVE_MODE); break;

View file

@ -96,7 +96,7 @@ void Main::follow_instructions(inweb_instructions *ins) {
TRUE);
W->redirect_weaves_to = ins->weave_into_setting;
Reader::read_web(W, ins->verbose_switch);
Parser::parse_web(W, ins->inweb_mode);
Parser::parse_web(W, ins->inweb_mode, ins->sequential);
}
if (no_inweb_errors == 0) {
if (ins->inweb_mode == TRANSLATE_MODE) @<Translate a makefile@>
@ -228,7 +228,6 @@ which for many small webs will be the entire thing.
if (Str::len(pattern->open_command) > 0) shall_we_open = TRUE;
else shall_we_open = FALSE;
}
if (tag) PRINT("Tag!\n");
Swarm::weave_subset(W, ins->chosen_range, shall_we_open, tag, pattern,
ins->weave_to_setting, ins->weave_into_setting, ins->weave_docs,
ins->breadcrumb_setting, ins->navigation_setting);

View file

@ -14,12 +14,16 @@ function definitions are recognised in C programs.) There is no requirement
for it to do anything.
=
void Parser::parse_web(web *W, int inweb_mode) {
void Parser::parse_web(web *W, int inweb_mode, int sequential) {
chapter *C;
section *S;
LOOP_OVER_LINKED_LIST(C, chapter, W->chapters)
LOOP_OVER_LINKED_LIST(S, section, C->sections)
LOOP_OVER_LINKED_LIST(C, chapter, W->chapters) {
int section_counter = 1;
LOOP_OVER_LINKED_LIST(S, section, C->sections) {
@<Parse a section@>;
section_counter++;
}
}
Languages::further_parsing(W, W->main_language);
}
@ -196,18 +200,23 @@ also give the namespace for its functions.
@ If no range is supplied, we make one ourselves.
@<Set the range to an automatic abbreviation of the relative pathname@> =
S->sect_range = Str::new();
if (Str::len(S->sect_range) == 0) {
if (sequential) {
WRITE_TO(S->sect_range, "%S/", C->md->ch_range);
WRITE_TO(S->sect_range, "s%d", section_counter);
} else {
text_stream *from = S->md->sect_title;
int letters_from_each_word = 5;
do {
Str::clear(S->sect_range);
WRITE_TO(S->sect_range, "%S/", C->md->ch_range);
@<Make the tail using this many consonants from each word@>;
if (--letters_from_each_word == 0) break;
} while (Str::len(S->sect_range) > 5);
text_stream *from = S->md->sect_title;
int letters_from_each_word = 5;
do {
Str::clear(S->sect_range);
WRITE_TO(S->sect_range, "%S/", C->md->ch_range);
@<Make the tail using this many consonants from each word@>;
if (--letters_from_each_word == 0) break;
} while (Str::len(S->sect_range) > 5);
@<Terminate with disambiguating numbers in case of collisions@>;
@<Terminate with disambiguating numbers in case of collisions@>;
}
}
@ We collapse words to an initial letter plus consonants: thus "electricity"
would be "elctrcty", since we don't count "y" as a vowel here.

View file

@ -188,6 +188,7 @@ web *Reader::load_web(pathname *P, filename *alt_F, module_search *I, int verbos
S->tag_with = NULL;
if (Str::len(Sm->tag_name) > 0)
S->tag_with = Tags::add_by_name(NULL, Sm->tag_name);
S->sect_range = Str::new();
@<Add the imported headers@> =
filename *HF;

View file

@ -244,9 +244,11 @@ void HTMLFormat::paragraph_heading(weave_format *self, text_stream *OUT,
}
HTML_OPEN_WITH("ul", "class=\"crumbs\"");
HTMLFormat::drop_initial_breadcrumbs(OUT, wv->breadcrumbs, wv->docs_mode);
HTMLFormat::breadcrumb(OUT,
Bibliographic::get_datum(wv->weave_web->md, I"Title"), I"index.html");
text_stream *bct = Bibliographic::get_datum(wv->weave_web->md, I"Title");
if (Str::len(Bibliographic::get_datum(wv->weave_web->md, I"Short Title")) > 0) {
bct = Bibliographic::get_datum(wv->weave_web->md, I"Short Title");
}
HTMLFormat::breadcrumb(OUT, bct, I"index.html");
if (wv->weave_web->md->chaptered) {
TEMPORARY_TEXT(chapter_link);

View file

@ -90,27 +90,21 @@ void Makefiles::scan_makefile_line(text_stream *line, text_file_position *tfp, v
}
@<Begin a repeat tool block@> =
if (MS->inside_block) Errors::in_text_file("nested repeat blocks are not allowed", tfp);
MS->inside_block = TRUE;
MS->repeat_scope = MAKEFILE_TOOL_MOM;
MS->repeat_tag = Str::duplicate(mr.exp[0]);
Str::clear(MS->repeat_block);
Regexp::dispose_of(&mr);
return;
int marker = MAKEFILE_TOOL_MOM;
@<Begin a repeat block@>;
@<Begin a repeat web block@> =
if (MS->inside_block) Errors::in_text_file("nested repeat blocks are not allowed", tfp);
MS->inside_block = TRUE;
MS->repeat_scope = MAKEFILE_WEB_MOM;
MS->repeat_tag = Str::duplicate(mr.exp[0]);
Str::clear(MS->repeat_block);
Regexp::dispose_of(&mr);
return;
int marker = MAKEFILE_WEB_MOM;
@<Begin a repeat block@>;
@<Begin a repeat module block@> =
int marker = MAKEFILE_MODULE_MOM;
@<Begin a repeat block@>;
@<Begin a repeat block@> =
if (MS->inside_block) Errors::in_text_file("nested repeat blocks are not allowed", tfp);
MS->inside_block = TRUE;
MS->repeat_scope = MAKEFILE_MODULE_MOM;
MS->repeat_scope = marker;
MS->repeat_tag = Str::duplicate(mr.exp[0]);
Str::clear(MS->repeat_block);
Regexp::dispose_of(&mr);
@ -130,24 +124,20 @@ void Makefiles::scan_makefile_line(text_stream *line, text_file_position *tfp, v
return;
@<Deal with a repeat span@> =
WRITE("%S", mr.exp[0]);
Makefiles::repeat(OUT, I" ", FALSE, mr.exp[1], FALSE, NULL, tfp, MS, MAKEFILE_TOOL_MOM, I"all");
WRITE("%S\n", mr.exp[2]);
MS->last_line_was_blank = FALSE;
Regexp::dispose_of(&mr);
return;
int marker = MAKEFILE_TOOL_MOM;
@<Begin a repeat span@>;
@<Deal with a repeat web span@> =
WRITE("%S", mr.exp[0]);
Makefiles::repeat(OUT, I" ", FALSE, mr.exp[1], FALSE, NULL, tfp, MS, MAKEFILE_WEB_MOM, I"all");
WRITE("%S\n", mr.exp[2]);
MS->last_line_was_blank = FALSE;
Regexp::dispose_of(&mr);
return;
int marker = MAKEFILE_WEB_MOM;
@<Begin a repeat span@>;
@<Deal with a repeat module span@> =
int marker = MAKEFILE_MODULE_MOM;
@<Begin a repeat span@>;
@<Begin a repeat span@> =
WRITE("%S", mr.exp[0]);
Makefiles::repeat(OUT, I" ", FALSE, mr.exp[1], FALSE, NULL, tfp, MS, MAKEFILE_MODULE_MOM, I"all");
Makefiles::repeat(OUT, I" ", FALSE, mr.exp[1], FALSE, NULL, tfp, MS, marker, I"all");
WRITE("%S\n", mr.exp[2]);
MS->last_line_was_blank = FALSE;
Regexp::dispose_of(&mr);
@ -176,21 +166,18 @@ void Makefiles::scan_makefile_line(text_stream *line, text_file_position *tfp, v
return;
@<Declare a tool@> =
WRITE("%SLEAF = %S\n", mr.exp[0], mr.exp[1]);
WRITE("%SWEB = %S\n", mr.exp[0], mr.exp[2]);
WRITE("%SMAKER = $(%SWEB)/%S.mk\n", mr.exp[0], mr.exp[0], mr.exp[1]);
WRITE("%SX = $(%SWEB)/Tangled/%S\n", mr.exp[0], mr.exp[0], mr.exp[1]);
MS->last_line_was_blank = FALSE;
web_md *Wm = Reader::load_web_md(Pathnames::from_text(mr.exp[2]), NULL, MS->search_path, FALSE, TRUE);
Wm->as_module->module_name = Str::duplicate(mr.exp[0]);
Wm->as_module->module_tag = Str::duplicate(mr.exp[3]);
Wm->as_module->origin_marker = MAKEFILE_TOOL_MOM;
Dictionaries::create(MS->tools_dictionary, mr.exp[0]);
Dictionaries::write_value(MS->tools_dictionary, mr.exp[0], Wm);
Regexp::dispose_of(&mr);
return;
int marker = MAKEFILE_TOOL_MOM;
@<Declare something@>;
@<Declare a web@> =
int marker = MAKEFILE_WEB_MOM;
@<Declare something@>;
@<Declare a module@> =
int marker = MAKEFILE_MODULE_MOM;
@<Declare something@>;
@<Declare something@> =
WRITE("%SLEAF = %S\n", mr.exp[0], mr.exp[1]);
WRITE("%SWEB = %S\n", mr.exp[0], mr.exp[2]);
WRITE("%SMAKER = $(%SWEB)/%S.mk\n", mr.exp[0], mr.exp[0], mr.exp[1]);
@ -199,22 +186,9 @@ void Makefiles::scan_makefile_line(text_stream *line, text_file_position *tfp, v
web_md *Wm = Reader::load_web_md(Pathnames::from_text(mr.exp[2]), NULL, MS->search_path, FALSE, TRUE);
Wm->as_module->module_name = Str::duplicate(mr.exp[0]);
Wm->as_module->module_tag = Str::duplicate(mr.exp[3]);
Wm->as_module->origin_marker = MAKEFILE_WEB_MOM;
Dictionaries::create(MS->webs_dictionary, mr.exp[0]);
Dictionaries::write_value(MS->webs_dictionary, mr.exp[0], Wm);
Regexp::dispose_of(&mr);
return;
@<Declare a module@> =
WRITE("%SLEAF = %S\n", mr.exp[0], mr.exp[1]);
WRITE("%SWEB = %S\n", mr.exp[0], mr.exp[2]);
MS->last_line_was_blank = FALSE;
web_md *Wm = Reader::load_web_md(Pathnames::from_text(mr.exp[2]), NULL, MS->search_path, FALSE, FALSE);
Wm->as_module->module_name = Str::duplicate(mr.exp[0]);
Wm->as_module->origin_marker = MAKEFILE_MODULE_MOM;
Wm->as_module->module_tag = Str::duplicate(mr.exp[3]);
Dictionaries::create(MS->modules_dictionary, mr.exp[0]);
Dictionaries::write_value(MS->modules_dictionary, mr.exp[0], Wm);
Wm->as_module->origin_marker = marker;
Dictionaries::create(MS->tools_dictionary, mr.exp[0]);
Dictionaries::write_value(MS->tools_dictionary, mr.exp[0], Wm);
Regexp::dispose_of(&mr);
return;

View file

@ -28,6 +28,7 @@ You can also, or instead, specify:
-open weave then open woven file
-prototype X translate makefile from prototype X
-scan scan the web
-sequential name woven leaves with sequential numbering (default is -no-sequential)
-structures catalogue the structures in the web
-tangle tangle the web into machine-compilable form
-tangle-to X tangle, but to filename X

View file

@ -368,7 +368,9 @@ quite the same as |all|: the cover sheet (a sort of title page) is omitted.
example, |S/tgc| and |S/tsoe| in the Goldbach web example, or |2/ec| for
the "Enumerated Constants" section of Chapter 2 of Inweb itself. Note that
running Inweb with |-catalogue| shows all the sections of a web, and their
abbreviations.
abbreviations. If it's a nuisance that these section ranges are hard to
predict, run with |-sequential| to have them simply be |X/s1|, |X/s2|, ...,
within each chapter, where |X| is the chapter range.
@h Weave tags.
An alternative to a range is to specify a tag. Rather than weaving contiguous

View file

@ -1,6 +1,6 @@
# Inweb 7
v7 'Escape to Danger' (2 April 2020)
v7 'Escape to Danger' (3 April 2020)
## About Inweb

File diff suppressed because it is too large Load diff

View file

@ -1,3 +1,3 @@
Prerelease: alpha.1
Build Date: 2 April 2020
Build Number: 1A08
Build Date: 3 April 2020
Build Number: 1A09

View file

@ -55,6 +55,7 @@ command line: there will only ever be one of these.
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">scan_switch</span><span class="plain">; </span> <span class="comment"><code class="display"><span class="extract">-scan</span></code>: simply show the syntactic scan of the source</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">weave_to_setting</span><span class="plain">; </span> <span class="comment"><code class="display"><span class="extract">-weave-to X</span></code>: the pathname X, if supplied</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">pathname</span><span class="plain"> *</span><span class="identifier">weave_into_setting</span><span class="plain">; </span> <span class="comment"><code class="display"><span class="extract">-weave-into X</span></code>: the pathname X, if supplied</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">sequential</span><span class="plain">; </span> <span class="comment">give the sections sequential sigils</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">tangle_setting</span><span class="plain">; </span> <span class="comment"><code class="display"><span class="extract">-tangle-to X</span></code>: the pathname X, if supplied</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">makefile_setting</span><span class="plain">; </span> <span class="comment"><code class="display"><span class="extract">-makefile X</span></code>: the filename X, if supplied</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">filename</span><span class="plain"> *</span><span class="identifier">gitignore_setting</span><span class="plain">; </span> <span class="comment"><code class="display"><span class="extract">-gitignore X</span></code>: the filename X, if supplied</span>
@ -133,6 +134,7 @@ then declare them.
<span class="identifier">args</span><span class="element">.tangle_setting</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">args</span><span class="element">.weave_to_setting</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">args</span><span class="element">.weave_into_setting</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">args</span><span class="element">.sequential</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="identifier">args</span><span class="element">.makefile_setting</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">args</span><span class="element">.gitignore_setting</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">args</span><span class="element">.advance_setting</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
@ -173,6 +175,7 @@ provides automatically.
<span class="definitionkeyword">enum</span> <span class="constant">WEAVE_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">WEAVE_INTO_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">WEAVE_TO_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">SEQUENTIAL_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">OPEN_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">WEAVE_AS_CLSW</span>
<span class="definitionkeyword">enum</span> <span class="constant">WEAVE_TAG_CLSW</span>
@ -238,6 +241,8 @@ provides automatically.
<span class="identifier">L</span><span class="string">"weave, but into directory X"</span><span class="plain">);</span>
<span class="functiontext">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">WEAVE_TO_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"weave-to"</span><span class="plain">, 2,</span>
<span class="identifier">L</span><span class="string">"weave, but to filename X (for single files only)"</span><span class="plain">);</span>
<span class="functiontext">CommandLine::declare_boolean_switch</span><span class="plain">(</span><span class="constant">SEQUENTIAL_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"sequential"</span><span class="plain">, 1,</span>
<span class="identifier">L</span><span class="string">"name woven leaves with sequential numbering"</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">);</span>
<span class="functiontext">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">OPEN_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"open"</span><span class="plain">, 1,</span>
<span class="identifier">L</span><span class="string">"weave then open woven file"</span><span class="plain">);</span>
<span class="functiontext">CommandLine::declare_switch</span><span class="plain">(</span><span class="constant">WEAVE_AS_CLSW</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"weave-as"</span><span class="plain">, 2,</span>
@ -320,6 +325,8 @@ provides automatically.
<span class="reserved">case</span><span class="plain"> </span><span class="constant">WEAVE_TO_CLSW</span><span class="plain">:</span>
<span class="identifier">args</span><span class="plain">-</span><span class="element">&gt;weave_to_setting</span><span class="plain"> = </span><span class="functiontext">Filenames::from_text</span><span class="plain">(</span><span class="identifier">arg</span><span class="plain">);</span>
<span class="functiontext">Configuration::set_fundamental_mode</span><span class="plain">(</span><span class="identifier">args</span><span class="plain">, </span><span class="constant">WEAVE_MODE</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">SEQUENTIAL_CLSW</span><span class="plain">:</span>
<span class="identifier">args</span><span class="plain">-</span><span class="element">&gt;sequential</span><span class="plain"> = </span><span class="identifier">val</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">OPEN_CLSW</span><span class="plain">:</span>
<span class="identifier">args</span><span class="plain">-</span><span class="element">&gt;open_pdf_switch</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
<span class="functiontext">Configuration::set_fundamental_mode</span><span class="plain">(</span><span class="identifier">args</span><span class="plain">, </span><span class="constant">WEAVE_MODE</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>

View file

@ -174,7 +174,7 @@ program: some input, some thinking, a choice of three forms of output.
<span class="constant">TRUE</span><span class="plain">);</span>
<span class="identifier">W</span><span class="plain">-</span><span class="element">&gt;redirect_weaves_to</span><span class="plain"> = </span><span class="identifier">ins</span><span class="plain">-</span><span class="element">&gt;weave_into_setting</span><span class="plain">;</span>
<span class="functiontext">Reader::read_web</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">ins</span><span class="plain">-</span><span class="element">&gt;verbose_switch</span><span class="plain">);</span>
<span class="functiontext">Parser::parse_web</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">ins</span><span class="plain">-</span><span class="element">&gt;inweb_mode</span><span class="plain">);</span>
<span class="functiontext">Parser::parse_web</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">ins</span><span class="plain">-</span><span class="element">&gt;inweb_mode</span><span class="plain">, </span><span class="identifier">ins</span><span class="plain">-</span><span class="element">&gt;sequential</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">no_inweb_errors</span><span class="plain"> == 0) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ins</span><span class="plain">-</span><span class="element">&gt;inweb_mode</span><span class="plain"> == </span><span class="constant">TRANSLATE_MODE</span><span class="plain">) </span>&lt;<span class="cwebmacro">Translate a makefile</span> <span class="cwebmacronumber">7.1</span>&gt;
@ -391,7 +391,6 @@ which for many small webs will be the entire thing.
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">pattern</span><span class="plain">-</span><span class="element">&gt;open_command</span><span class="plain">) &gt; 0) </span><span class="identifier">shall_we_open</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">shall_we_open</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">tag</span><span class="plain">) </span><span class="identifier">PRINT</span><span class="plain">(</span><span class="string">"Tag!\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
<span class="functiontext">Swarm::weave_subset</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">ins</span><span class="plain">-</span><span class="element">&gt;chosen_range</span><span class="plain">, </span><span class="identifier">shall_we_open</span><span class="plain">, </span><span class="identifier">tag</span><span class="plain">, </span><span class="identifier">pattern</span><span class="plain">,</span>
<span class="identifier">ins</span><span class="plain">-</span><span class="element">&gt;weave_to_setting</span><span class="plain">, </span><span class="identifier">ins</span><span class="plain">-</span><span class="element">&gt;weave_into_setting</span><span class="plain">, </span><span class="identifier">ins</span><span class="plain">-</span><span class="element">&gt;weave_docs</span><span class="plain">,</span>
<span class="identifier">ins</span><span class="plain">-</span><span class="element">&gt;breadcrumb_setting</span><span class="plain">, </span><span class="identifier">ins</span><span class="plain">-</span><span class="element">&gt;navigation_setting</span><span class="plain">);</span>

View file

@ -41,12 +41,16 @@ for it to do anything.
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Parser::parse_web</span><span class="plain">(</span><span class="reserved">web</span><span class="plain"> *</span><span class="identifier">W</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">inweb_mode</span><span class="plain">) {</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Parser::parse_web</span><span class="plain">(</span><span class="reserved">web</span><span class="plain"> *</span><span class="identifier">W</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">inweb_mode</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">sequential</span><span class="plain">) {</span>
<span class="reserved">chapter</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">;</span>
<span class="reserved">section</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">chapter</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">-</span><span class="element">&gt;chapters</span><span class="plain">)</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="reserved">section</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-</span><span class="element">&gt;sections</span><span class="plain">)</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">chapter</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">-</span><span class="element">&gt;chapters</span><span class="plain">) {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">section_counter</span><span class="plain"> = 1;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">, </span><span class="reserved">section</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-</span><span class="element">&gt;sections</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Parse a section</span> <span class="cwebmacronumber">1.1</span>&gt;<span class="plain">;</span>
<span class="identifier">section_counter</span><span class="plain">++;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="functiontext">Languages::further_parsing</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">-</span><span class="element">&gt;main_language</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
@ -352,18 +356,23 @@ also give the namespace for its functions.
<pre class="displaydefn">
<span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;sect_range</span><span class="plain"> = </span><span class="functiontext">Str::new</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;sect_range</span><span class="plain">) == 0) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">sequential</span><span class="plain">) {</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;sect_range</span><span class="plain">, </span><span class="string">"%S/"</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-</span><span class="element">&gt;md</span><span class="plain">-</span><span class="element">&gt;ch_range</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;sect_range</span><span class="plain">, </span><span class="string">"s%d"</span><span class="plain">, </span><span class="identifier">section_counter</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;md</span><span class="plain">-</span><span class="element">&gt;sect_title</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">letters_from_each_word</span><span class="plain"> = 5;</span>
<span class="reserved">do</span><span class="plain"> {</span>
<span class="functiontext">Str::clear</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;sect_range</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;sect_range</span><span class="plain">, </span><span class="string">"%S/"</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-</span><span class="element">&gt;md</span><span class="plain">-</span><span class="element">&gt;ch_range</span><span class="plain">);</span>
&lt;<span class="cwebmacro">Make the tail using this many consonants from each word</span> <span class="cwebmacronumber">1.1.6.2.1.1</span>&gt;<span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (--</span><span class="identifier">letters_from_each_word</span><span class="plain"> == 0) </span><span class="reserved">break</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">while</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;sect_range</span><span class="plain">) &gt; 5);</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;md</span><span class="plain">-</span><span class="element">&gt;sect_title</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">letters_from_each_word</span><span class="plain"> = 5;</span>
<span class="reserved">do</span><span class="plain"> {</span>
<span class="functiontext">Str::clear</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;sect_range</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;sect_range</span><span class="plain">, </span><span class="string">"%S/"</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-</span><span class="element">&gt;md</span><span class="plain">-</span><span class="element">&gt;ch_range</span><span class="plain">);</span>
&lt;<span class="cwebmacro">Make the tail using this many consonants from each word</span> <span class="cwebmacronumber">1.1.6.2.1.1</span>&gt;<span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (--</span><span class="identifier">letters_from_each_word</span><span class="plain"> == 0) </span><span class="reserved">break</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">while</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;sect_range</span><span class="plain">) &gt; 5);</span>
&lt;<span class="cwebmacro">Terminate with disambiguating numbers in case of collisions</span> <span class="cwebmacronumber">1.1.6.2.1.2</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Terminate with disambiguating numbers in case of collisions</span> <span class="cwebmacronumber">1.1.6.2.1.2</span>&gt;<span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>

View file

@ -184,7 +184,7 @@ each of which has a list of <code class="display"><span class="extract">section<
<p class="inwebparagraph"></p>
<p class="endnote">The function Reader::load_web_md is used in 6/mkf (<a href="6-mkf.html#SP2_11">&#167;2.11</a>, <a href="6-mkf.html#SP2_12">&#167;2.12</a>, <a href="6-mkf.html#SP2_13">&#167;2.13</a>).</p>
<p class="endnote">The function Reader::load_web_md is used in 6/mkf (<a href="6-mkf.html#SP2_11_1">&#167;2.11.1</a>).</p>
<p class="endnote">The function Reader::load_web is used in 1/pc (<a href="1-pc.html#SP7">&#167;7</a>).</p>
@ -280,6 +280,7 @@ each of which has a list of <code class="display"><span class="extract">section<
<span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;tag_with</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">Sm</span><span class="plain">-</span><span class="element">&gt;tag_name</span><span class="plain">) &gt; 0)</span>
<span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;tag_with</span><span class="plain"> = </span><span class="functiontext">Tags::add_by_name</span><span class="plain">(</span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">Sm</span><span class="plain">-</span><span class="element">&gt;tag_name</span><span class="plain">);</span>
<span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;sect_range</span><span class="plain"> = </span><span class="functiontext">Str::new</span><span class="plain">();</span>
</pre>
<p class="inwebparagraph"></p>

View file

@ -370,9 +370,11 @@ the page, and this drops one.
<span class="plain">}</span>
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"ul"</span><span class="plain">, </span><span class="string">"class=\</span><span class="plain">"</span><span class="string">crumbs\</span><span class="plain">"</span><span class="string">"</span><span class="plain">);</span>
<span class="functiontext">HTMLFormat::drop_initial_breadcrumbs</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-</span><span class="element">&gt;breadcrumbs</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">-</span><span class="element">&gt;docs_mode</span><span class="plain">);</span>
<span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">,</span>
<span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-</span><span class="element">&gt;weave_web</span><span class="plain">-</span><span class="element">&gt;md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Title"</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"index.html"</span><span class="plain">);</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">bct</span><span class="plain"> = </span><span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-</span><span class="element">&gt;weave_web</span><span class="plain">-</span><span class="element">&gt;md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Title"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-</span><span class="element">&gt;weave_web</span><span class="plain">-</span><span class="element">&gt;md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Short Title"</span><span class="plain">)) &gt; 0) {</span>
<span class="identifier">bct</span><span class="plain"> = </span><span class="functiontext">Bibliographic::get_datum</span><span class="plain">(</span><span class="identifier">wv</span><span class="plain">-</span><span class="element">&gt;weave_web</span><span class="plain">-</span><span class="element">&gt;md</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Short Title"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="functiontext">HTMLFormat::breadcrumb</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">bct</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"index.html"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">wv</span><span class="plain">-</span><span class="element">&gt;weave_web</span><span class="plain">-</span><span class="element">&gt;md</span><span class="plain">-</span><span class="element">&gt;chaptered</span><span class="plain">) {</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">chapter_link</span><span class="plain">);</span>

View file

@ -136,13 +136,8 @@ following a "prototype".
<pre class="displaydefn">
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;inside_block</span><span class="plain">) </span><span class="functiontext">Errors::in_text_file</span><span class="plain">(</span><span class="string">"nested repeat blocks are not allowed"</span><span class="plain">, </span><span class="identifier">tfp</span><span class="plain">);</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;inside_block</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;repeat_scope</span><span class="plain"> = </span><span class="constant">MAKEFILE_TOOL_MOM</span><span class="plain">;</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;repeat_tag</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0]);</span>
<span class="functiontext">Str::clear</span><span class="plain">(</span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;repeat_block</span><span class="plain">);</span>
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> = </span><span class="constant">MAKEFILE_TOOL_MOM</span><span class="plain">;</span>
&lt;<span class="cwebmacro">Begin a repeat block</span> <span class="cwebmacronumber">2.1.1</span>&gt;<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
@ -155,13 +150,8 @@ following a "prototype".
<pre class="displaydefn">
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;inside_block</span><span class="plain">) </span><span class="functiontext">Errors::in_text_file</span><span class="plain">(</span><span class="string">"nested repeat blocks are not allowed"</span><span class="plain">, </span><span class="identifier">tfp</span><span class="plain">);</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;inside_block</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;repeat_scope</span><span class="plain"> = </span><span class="constant">MAKEFILE_WEB_MOM</span><span class="plain">;</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;repeat_tag</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0]);</span>
<span class="functiontext">Str::clear</span><span class="plain">(</span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;repeat_block</span><span class="plain">);</span>
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> = </span><span class="constant">MAKEFILE_WEB_MOM</span><span class="plain">;</span>
&lt;<span class="cwebmacro">Begin a repeat block</span> <span class="cwebmacronumber">2.1.1</span>&gt;<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
@ -173,10 +163,24 @@ following a "prototype".
</code></p>
<pre class="displaydefn">
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> = </span><span class="constant">MAKEFILE_MODULE_MOM</span><span class="plain">;</span>
&lt;<span class="cwebmacro">Begin a repeat block</span> <span class="cwebmacronumber">2.1.1</span>&gt;<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="inwebparagraph"><a id="SP2_1_1"></a><b>&#167;2.1.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Begin a repeat block</span> <span class="cwebmacronumber">2.1.1</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;inside_block</span><span class="plain">) </span><span class="functiontext">Errors::in_text_file</span><span class="plain">(</span><span class="string">"nested repeat blocks are not allowed"</span><span class="plain">, </span><span class="identifier">tfp</span><span class="plain">);</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;inside_block</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;repeat_scope</span><span class="plain"> = </span><span class="constant">MAKEFILE_MODULE_MOM</span><span class="plain">;</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;repeat_scope</span><span class="plain"> = </span><span class="identifier">marker</span><span class="plain">;</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;repeat_tag</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0]);</span>
<span class="functiontext">Str::clear</span><span class="plain">(</span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;repeat_block</span><span class="plain">);</span>
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
@ -185,7 +189,7 @@ following a "prototype".
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="endnote">This code is used in <a href="#SP2_1">&#167;2.1</a>, <a href="#SP2_2">&#167;2.2</a>, <a href="#SP2_3">&#167;2.3</a>.</p>
<p class="inwebparagraph"><a id="SP2_4"></a><b>&#167;2.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Deal with a line in a repeat block</span> <span class="cwebmacronumber">2.4</span>&gt; =
@ -226,12 +230,8 @@ following a "prototype".
<pre class="displaydefn">
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0]);</span>
<span class="functiontext">Makefiles::repeat</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">" "</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[1], </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">tfp</span><span class="plain">, </span><span class="identifier">MS</span><span class="plain">, </span><span class="constant">MAKEFILE_TOOL_MOM</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"all"</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[2]);</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;last_line_was_blank</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> = </span><span class="constant">MAKEFILE_TOOL_MOM</span><span class="plain">;</span>
&lt;<span class="cwebmacro">Begin a repeat span</span> <span class="cwebmacronumber">2.6.1</span>&gt;<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
@ -244,12 +244,8 @@ following a "prototype".
<pre class="displaydefn">
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0]);</span>
<span class="functiontext">Makefiles::repeat</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">" "</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[1], </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">tfp</span><span class="plain">, </span><span class="identifier">MS</span><span class="plain">, </span><span class="constant">MAKEFILE_WEB_MOM</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"all"</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[2]);</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;last_line_was_blank</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> = </span><span class="constant">MAKEFILE_WEB_MOM</span><span class="plain">;</span>
&lt;<span class="cwebmacro">Begin a repeat span</span> <span class="cwebmacronumber">2.6.1</span>&gt;<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
@ -261,9 +257,23 @@ following a "prototype".
</code></p>
<pre class="displaydefn">
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> = </span><span class="constant">MAKEFILE_MODULE_MOM</span><span class="plain">;</span>
&lt;<span class="cwebmacro">Begin a repeat span</span> <span class="cwebmacronumber">2.6.1</span>&gt;<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="inwebparagraph"><a id="SP2_6_1"></a><b>&#167;2.6.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Begin a repeat span</span> <span class="cwebmacronumber">2.6.1</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0]);</span>
<span class="functiontext">Makefiles::repeat</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">" "</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[1], </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">tfp</span><span class="plain">, </span><span class="identifier">MS</span><span class="plain">, </span><span class="constant">MAKEFILE_MODULE_MOM</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"all"</span><span class="plain">);</span>
<span class="functiontext">Makefiles::repeat</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">I</span><span class="string">" "</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[1], </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">tfp</span><span class="plain">, </span><span class="identifier">MS</span><span class="plain">, </span><span class="identifier">marker</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"all"</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[2]);</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;last_line_was_blank</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
@ -272,7 +282,7 @@ following a "prototype".
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="endnote">This code is used in <a href="#SP2_6">&#167;2.6</a>, <a href="#SP2_7">&#167;2.7</a>, <a href="#SP2_8">&#167;2.8</a>.</p>
<p class="inwebparagraph"><a id="SP2_9"></a><b>&#167;2.9. </b><code class="display">
&lt;<span class="cwebmacrodefn">Expand platform-settings</span> <span class="cwebmacronumber">2.9</span>&gt; =
@ -322,19 +332,8 @@ following a "prototype".
<pre class="displaydefn">
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%SLEAF = %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[1]);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%SWEB = %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[2]);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%SMAKER = $(%SWEB)/%S.mk\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[1]);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%SX = $(%SWEB)/Tangled/%S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[1]);</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;last_line_was_blank</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="reserved">web_md</span><span class="plain"> *</span><span class="identifier">Wm</span><span class="plain"> = </span><span class="functiontext">Reader::load_web_md</span><span class="plain">(</span><span class="functiontext">Pathnames::from_text</span><span class="plain">(</span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[2]), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;search_path</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
<span class="identifier">Wm</span><span class="plain">-</span><span class="element">&gt;as_module</span><span class="plain">-</span><span class="element">&gt;module_name</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0]);</span>
<span class="identifier">Wm</span><span class="plain">-</span><span class="element">&gt;as_module</span><span class="plain">-</span><span class="element">&gt;module_tag</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[3]);</span>
<span class="identifier">Wm</span><span class="plain">-</span><span class="element">&gt;as_module</span><span class="plain">-</span><span class="element">&gt;origin_marker</span><span class="plain"> = </span><span class="constant">MAKEFILE_TOOL_MOM</span><span class="plain">;</span>
<span class="functiontext">Dictionaries::create</span><span class="plain">(</span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;tools_dictionary</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0]);</span>
<span class="functiontext">Dictionaries::write_value</span><span class="plain">(</span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;tools_dictionary</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">Wm</span><span class="plain">);</span>
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> = </span><span class="constant">MAKEFILE_TOOL_MOM</span><span class="plain">;</span>
&lt;<span class="cwebmacro">Declare something</span> <span class="cwebmacronumber">2.11.1</span>&gt;<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
@ -347,19 +346,8 @@ following a "prototype".
<pre class="displaydefn">
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%SLEAF = %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[1]);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%SWEB = %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[2]);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%SMAKER = $(%SWEB)/%S.mk\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[1]);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%SX = $(%SWEB)/Tangled/%S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[1]);</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;last_line_was_blank</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="reserved">web_md</span><span class="plain"> *</span><span class="identifier">Wm</span><span class="plain"> = </span><span class="functiontext">Reader::load_web_md</span><span class="plain">(</span><span class="functiontext">Pathnames::from_text</span><span class="plain">(</span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[2]), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;search_path</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
<span class="identifier">Wm</span><span class="plain">-</span><span class="element">&gt;as_module</span><span class="plain">-</span><span class="element">&gt;module_name</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0]);</span>
<span class="identifier">Wm</span><span class="plain">-</span><span class="element">&gt;as_module</span><span class="plain">-</span><span class="element">&gt;module_tag</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[3]);</span>
<span class="identifier">Wm</span><span class="plain">-</span><span class="element">&gt;as_module</span><span class="plain">-</span><span class="element">&gt;origin_marker</span><span class="plain"> = </span><span class="constant">MAKEFILE_WEB_MOM</span><span class="plain">;</span>
<span class="functiontext">Dictionaries::create</span><span class="plain">(</span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;webs_dictionary</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0]);</span>
<span class="functiontext">Dictionaries::write_value</span><span class="plain">(</span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;webs_dictionary</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">Wm</span><span class="plain">);</span>
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> = </span><span class="constant">MAKEFILE_WEB_MOM</span><span class="plain">;</span>
&lt;<span class="cwebmacro">Declare something</span> <span class="cwebmacronumber">2.11.1</span>&gt;<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
@ -371,23 +359,39 @@ following a "prototype".
</code></p>
<pre class="displaydefn">
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain"> = </span><span class="constant">MAKEFILE_MODULE_MOM</span><span class="plain">;</span>
&lt;<span class="cwebmacro">Declare something</span> <span class="cwebmacronumber">2.11.1</span>&gt;<span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="inwebparagraph"><a id="SP2_11_1"></a><b>&#167;2.11.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Declare something</span> <span class="cwebmacronumber">2.11.1</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%SLEAF = %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[1]);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%SWEB = %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[2]);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%SMAKER = $(%SWEB)/%S.mk\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[1]);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%SX = $(%SWEB)/Tangled/%S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[1]);</span>
<span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;last_line_was_blank</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
<span class="reserved">web_md</span><span class="plain"> *</span><span class="identifier">Wm</span><span class="plain"> = </span><span class="functiontext">Reader::load_web_md</span><span class="plain">(</span><span class="functiontext">Pathnames::from_text</span><span class="plain">(</span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[2]), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;search_path</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">);</span>
<span class="reserved">web_md</span><span class="plain"> *</span><span class="identifier">Wm</span><span class="plain"> = </span><span class="functiontext">Reader::load_web_md</span><span class="plain">(</span><span class="functiontext">Pathnames::from_text</span><span class="plain">(</span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[2]), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;search_path</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
<span class="identifier">Wm</span><span class="plain">-</span><span class="element">&gt;as_module</span><span class="plain">-</span><span class="element">&gt;module_name</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0]);</span>
<span class="identifier">Wm</span><span class="plain">-</span><span class="element">&gt;as_module</span><span class="plain">-</span><span class="element">&gt;origin_marker</span><span class="plain"> = </span><span class="constant">MAKEFILE_MODULE_MOM</span><span class="plain">;</span>
<span class="identifier">Wm</span><span class="plain">-</span><span class="element">&gt;as_module</span><span class="plain">-</span><span class="element">&gt;module_tag</span><span class="plain"> = </span><span class="functiontext">Str::duplicate</span><span class="plain">(</span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[3]);</span>
<span class="functiontext">Dictionaries::create</span><span class="plain">(</span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;modules_dictionary</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0]);</span>
<span class="functiontext">Dictionaries::write_value</span><span class="plain">(</span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;modules_dictionary</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">Wm</span><span class="plain">);</span>
<span class="identifier">Wm</span><span class="plain">-</span><span class="element">&gt;as_module</span><span class="plain">-</span><span class="element">&gt;origin_marker</span><span class="plain"> = </span><span class="identifier">marker</span><span class="plain">;</span>
<span class="functiontext">Dictionaries::create</span><span class="plain">(</span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;tools_dictionary</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0]);</span>
<span class="functiontext">Dictionaries::write_value</span><span class="plain">(</span><span class="identifier">MS</span><span class="plain">-</span><span class="element">&gt;tools_dictionary</span><span class="plain">, </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0], </span><span class="identifier">Wm</span><span class="plain">);</span>
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="endnote">This code is used in <a href="#SP2_11">&#167;2.11</a>, <a href="#SP2_12">&#167;2.12</a>, <a href="#SP2_13">&#167;2.13</a>.</p>
<p class="inwebparagraph"><a id="SP2_14"></a><b>&#167;2.14. </b><code class="display">
&lt;<span class="cwebmacrodefn">Expand dependent-files</span> <span class="cwebmacronumber">2.14</span>&gt; =
@ -611,7 +615,7 @@ following a "prototype".
<p class="inwebparagraph"></p>
<p class="endnote">The function Makefiles::repeat is used in <a href="#SP2_5">&#167;2.5</a>, <a href="#SP2_6">&#167;2.6</a>, <a href="#SP2_7">&#167;2.7</a>, <a href="#SP2_8">&#167;2.8</a>.</p>
<p class="endnote">The function Makefiles::repeat is used in <a href="#SP2_5">&#167;2.5</a>, <a href="#SP2_6_1">&#167;2.6.1</a>.</p>
<hr class="tocbar">
<ul class="toc"><li><i>(This section begins Chapter 6: Extras.)</i></li><li><a href="6-gs.html">Continue with 'Git Support'</a></li></ul><hr class="tocbar">

View file

@ -60,6 +60,7 @@
-open weave then open woven file
-prototype X translate makefile from prototype X
-scan scan the web
-sequential name woven leaves with sequential numbering (default is -no-sequential)
-structures catalogue the structures in the web
-tangle tangle the web into machine-compilable form
-tangle-to X tangle, but to filename X

View file

@ -590,7 +590,9 @@ quite the same as <code class="display"><span class="extract">all</span></code>:
example, <code class="display"><span class="extract">S/tgc</span></code> and <code class="display"><span class="extract">S/tsoe</span></code> in the Goldbach web example, or <code class="display"><span class="extract">2/ec</span></code> for
the "Enumerated Constants" section of Chapter 2 of Inweb itself. Note that
running Inweb with <code class="display"><span class="extract">-catalogue</span></code> shows all the sections of a web, and their
abbreviations.
abbreviations. If it's a nuisance that these section ranges are hard to
predict, run with <code class="display"><span class="extract">-sequential</span></code> to have them simply be <code class="display"><span class="extract">X/s1</span></code>, <code class="display"><span class="extract">X/s2</span></code>, ...,
within each chapter, where <code class="display"><span class="extract">X</span></code> is the chapter range.
</li></ul>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. Weave tags. </b>An alternative to a range is to specify a tag. Rather than weaving contiguous
pieces of the web, this collates together all those paragraphs with a given