Completed rewrite of assets and plugins
This commit is contained in:
parent
be52c3913d
commit
e83191ab54
46 changed files with 3090 additions and 2521 deletions
373
Chapter 1/Assets, Plugins and Colour Schemes.w
Normal file
373
Chapter 1/Assets, Plugins and Colour Schemes.w
Normal file
|
@ -0,0 +1,373 @@
|
|||
[Assets::] Assets, Plugins and Colour Schemes.
|
||||
|
||||
Mainly for HTML, to add the necessary JavaScript for unusual requirements
|
||||
such as equations or footnotes.
|
||||
|
||||
@h Creation.
|
||||
At present, plugins are simply their names: Inweb knows as little as possible
|
||||
about what they do. The model is just that a file being woven either does or
|
||||
does not need a plugin of a given name.
|
||||
|
||||
=
|
||||
typedef struct weave_plugin {
|
||||
struct text_stream *plugin_name;
|
||||
int last_included_in_round;
|
||||
MEMORY_MANAGEMENT
|
||||
} weave_plugin;
|
||||
|
||||
@ =
|
||||
weave_plugin *Assets::new(text_stream *name) {
|
||||
weave_plugin *wp;
|
||||
LOOP_OVER(wp, weave_plugin)
|
||||
if (Str::eq_insensitive(wp->plugin_name, name))
|
||||
return wp;
|
||||
wp = CREATE(weave_plugin);
|
||||
wp->plugin_name = Str::duplicate(name);
|
||||
wp->last_included_in_round = 0;
|
||||
return wp;
|
||||
}
|
||||
|
||||
@ And almost the same can be said about colour schemes, except that these we
|
||||
actually look for: they will be available to some patterns and not others.
|
||||
|
||||
=
|
||||
typedef struct colour_scheme {
|
||||
struct text_stream *scheme_name;
|
||||
struct text_stream *prefix;
|
||||
struct filename *at;
|
||||
int last_included_in_round;
|
||||
MEMORY_MANAGEMENT
|
||||
} colour_scheme;
|
||||
|
||||
@ =
|
||||
colour_scheme *Assets::find_colour_scheme(weave_pattern *pattern,
|
||||
text_stream *name, text_stream *pre) {
|
||||
colour_scheme *cs;
|
||||
LOOP_OVER(cs, colour_scheme)
|
||||
if (Str::eq_insensitive(cs->scheme_name, name))
|
||||
return cs;
|
||||
TEMPORARY_TEXT(css);
|
||||
WRITE_TO(css, "%S.css", name);
|
||||
filename *F = Patterns::find_file_in_subdirectory(pattern, I"Colouring", css);
|
||||
if (F == NULL) F = Patterns::find_file_in_subdirectory(pattern, I"Coloring", css);
|
||||
DISCARD_TEXT(css);
|
||||
if (F == NULL) return NULL;
|
||||
cs = CREATE(colour_scheme);
|
||||
cs->scheme_name = Str::duplicate(name);
|
||||
cs->at = F;
|
||||
cs->prefix = Str::duplicate(pre);
|
||||
cs->last_included_in_round = 0;
|
||||
if (Str::len(pre) > 0) WRITE_TO(cs->prefix, "-");
|
||||
return cs;
|
||||
}
|
||||
|
||||
@h Plugin inclusion.
|
||||
Plugins are included both by the pattern, if they are needed for anything
|
||||
woven to that pattern, and by the individual weave order, if a particular
|
||||
need has arisen on a particular file.
|
||||
|
||||
=
|
||||
int current_inclusion_round = 0;
|
||||
void Assets::include_relevant_plugins(text_stream *OUT, weave_pattern *pattern,
|
||||
web *W, weave_order *wv, filename *from) {
|
||||
current_inclusion_round++;
|
||||
STREAM_INDENT(STDOUT);
|
||||
Patterns::include_plugins(OUT, W, pattern, from);
|
||||
if (wv) Swarm::include_plugins(OUT, W, wv, from);
|
||||
STREAM_OUTDENT(STDOUT);
|
||||
}
|
||||
|
||||
@ Those two functions both repeatedly call the functions //Assets::include_plugin//
|
||||
and //Assets::include_colour_scheme// as needed, so these are declared next.
|
||||
|
||||
A plugin can only be included once in each round, i.e., for each woven file,
|
||||
no matter how many times this is called.
|
||||
|
||||
To include a plugin is by definition to include its assets. These may be held
|
||||
either in the current pattern, or in the one it is based on, or the one
|
||||
that in turn is based on, and so forth. The first-discovered asset wins:
|
||||
i.e., if the current pattern's copy of the asset contains |MyAsset.png| then
|
||||
this prevails over any |MyAsset.png| held by patterns further down. To do
|
||||
this, we store the leafnames in a dictionary.
|
||||
|
||||
=
|
||||
void Assets::include_plugin(OUTPUT_STREAM, web *W, weave_plugin *wp,
|
||||
weave_pattern *pattern, filename *from) {
|
||||
if (wp->last_included_in_round == current_inclusion_round) return;
|
||||
wp->last_included_in_round = current_inclusion_round;
|
||||
if (verbose_mode) PRINT("Include plugin '%S'\n", wp->plugin_name);
|
||||
int finds = 0;
|
||||
dictionary *leaves_gathered = Dictionaries::new(128, TRUE);
|
||||
for (weave_pattern *p = pattern; p; p = p->based_on) {
|
||||
pathname *P = Pathnames::down(p->pattern_location, wp->plugin_name);
|
||||
scan_directory *D = Directories::open(P);
|
||||
if (D) {
|
||||
TEMPORARY_TEXT(leafname);
|
||||
while (Directories::next(D, leafname)) {
|
||||
if ((Str::get_last_char(leafname) != FOLDER_SEPARATOR) &&
|
||||
(Str::get_first_char(leafname) != '.')) {
|
||||
if (Dictionaries::find(leaves_gathered, leafname) == NULL) {
|
||||
WRITE_TO(Dictionaries::create_text(leaves_gathered, leafname), "y");
|
||||
filename *F = Filenames::in(P, leafname);
|
||||
Assets::include_asset(OUT, NULL, W, F, NULL, pattern, from);
|
||||
finds++;
|
||||
}
|
||||
}
|
||||
}
|
||||
DISCARD_TEXT(leafname);
|
||||
Directories::close(D);
|
||||
}
|
||||
}
|
||||
if (finds == 0) {
|
||||
TEMPORARY_TEXT(err);
|
||||
WRITE_TO(err, "The plugin '%S' is not supported", wp->plugin_name);
|
||||
Main::error_in_web(err, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
@ Colour schemes are CSS files held slightly differently, in the |Colouring|
|
||||
subdirectory of (presumably) an HTML-based pattern.
|
||||
|
||||
A colour scheme can only be included once in each round, i.e., for each woven
|
||||
file, no matter how many times this is called.
|
||||
|
||||
=
|
||||
void Assets::include_colour_scheme(OUTPUT_STREAM, web *W, colour_scheme *cs,
|
||||
weave_pattern *pattern, filename *from) {
|
||||
if (cs->last_included_in_round == current_inclusion_round) return;
|
||||
cs->last_included_in_round = current_inclusion_round;
|
||||
if (verbose_mode) PRINT("Include colour scheme '%S'\n", cs->scheme_name);
|
||||
TEMPORARY_TEXT(css);
|
||||
WRITE_TO(css, "%S.css", cs->scheme_name);
|
||||
filename *F = Patterns::find_file_in_subdirectory(pattern, I"Colouring", css);
|
||||
if (F == NULL) F = Patterns::find_file_in_subdirectory(pattern, I"Coloring", css);
|
||||
if (F == NULL) {
|
||||
TEMPORARY_TEXT(err);
|
||||
WRITE_TO(err, "No CSS file for the colour scheme '%S' can be found",
|
||||
cs->scheme_name);
|
||||
Main::error_in_web(err, NULL);
|
||||
DISCARD_TEXT(err);
|
||||
} else {
|
||||
Assets::include_asset(OUT, NULL, W, F, cs->prefix, pattern, from);
|
||||
}
|
||||
DISCARD_TEXT(css);
|
||||
}
|
||||
|
||||
@h Asset rules lists.
|
||||
The practical effect of the two function above, then, is to call
|
||||
//Assets::include_asset// on each asset needed. What that function does
|
||||
is highly configurable by the pattern, so we now have to show how. Each
|
||||
different filename extension, such as |.jpg|, has its own rule for what to do:
|
||||
|
||||
@e EMBED_ASSET_METHOD from 1
|
||||
@e COPY_ASSET_METHOD
|
||||
@e PRIVATE_COPY_ASSET_METHOD
|
||||
@e COLLATE_ASSET_METHOD
|
||||
|
||||
=
|
||||
typedef struct asset_rule {
|
||||
struct text_stream *applies_to;
|
||||
int method; /* one of the |*_ASSET_METHOD| values above */
|
||||
struct text_stream *pre;
|
||||
struct text_stream *post;
|
||||
int transform_names;
|
||||
MEMORY_MANAGEMENT
|
||||
} asset_rule;
|
||||
|
||||
@ A pattern has a list of such rules, as follows. In each list, exactly one
|
||||
rule has the empty text as its |applies_to|: that one is the default, for any
|
||||
file whose extension does not appear in the rules list.
|
||||
|
||||
(The default rule is to copy the file as a binary object, doing nothing fancy.)
|
||||
|
||||
=
|
||||
linked_list *Assets::new_asset_rules_list(void) {
|
||||
linked_list *L = NEW_LINKED_LIST(asset_rule);
|
||||
Assets::add_asset_rule(L, I"", I"copy", NULL);
|
||||
return L;
|
||||
}
|
||||
|
||||
@ This is called by //Patterns// in response to |assets: EXT CMD| commands. The
|
||||
|CMD| part is in |line|.
|
||||
|
||||
=
|
||||
void Assets::add_asset_rule(linked_list *L, text_stream *ext, text_stream *line,
|
||||
text_file_position *tfp) {
|
||||
asset_rule *R = Assets::new_rule(L, ext, line, tfp);
|
||||
ADD_TO_LINKED_LIST(R, asset_rule, L);
|
||||
}
|
||||
|
||||
asset_rule *Assets::new_rule(linked_list *L, text_stream *ext, text_stream *line,
|
||||
text_file_position *tfp) {
|
||||
asset_rule *R;
|
||||
if (L)
|
||||
LOOP_OVER_LINKED_LIST(R, asset_rule, L)
|
||||
if (Str::eq_insensitive(R->applies_to, ext)) {
|
||||
@<Use this R@>;
|
||||
return R;
|
||||
}
|
||||
R = CREATE(asset_rule);
|
||||
R->applies_to = Str::duplicate(ext);
|
||||
@<Set R to defaults@>;
|
||||
@<Use this R@>;
|
||||
return R;
|
||||
}
|
||||
|
||||
@<Set R to defaults@> =
|
||||
R->method = COPY_ASSET_METHOD;
|
||||
R->pre = Str::new();
|
||||
R->post = Str::new();
|
||||
R->transform_names = FALSE;
|
||||
|
||||
@<Use this R@> =
|
||||
text_stream *cmd = line;
|
||||
text_stream *detail = NULL;
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, line, L"(%c+?) *= *(%c*)")) {
|
||||
cmd = mr.exp[0];
|
||||
detail = mr.exp[1];
|
||||
}
|
||||
if (Str::eq(cmd, I"copy")) {
|
||||
@<Set R to defaults@>; R->method = COPY_ASSET_METHOD;
|
||||
} else if (Str::eq(cmd, I"private copy")) {
|
||||
@<Set R to defaults@>; R->method = PRIVATE_COPY_ASSET_METHOD;
|
||||
} else if (Str::eq(cmd, I"embed")) {
|
||||
@<Set R to defaults@>; R->method = EMBED_ASSET_METHOD;
|
||||
} else if (Str::eq(cmd, I"collate")) {
|
||||
@<Set R to defaults@>; R->method = COLLATE_ASSET_METHOD;
|
||||
} else if (Str::eq(cmd, I"prefix")) {
|
||||
R->pre = Str::duplicate(detail);
|
||||
} else if (Str::eq(cmd, I"suffix")) {
|
||||
R->post = Str::duplicate(detail);
|
||||
} else if (Str::eq(cmd, I"transform names")) {
|
||||
R->transform_names = TRUE;
|
||||
} else Errors::in_text_file("no such asset command", tfp);
|
||||
Regexp::dispose_of(&mr);
|
||||
|
||||
@ Given a filename |F| for some asset, which rule applies to it? The answer
|
||||
is that if the current pattern, or any pattern it is based on, defines a rule,
|
||||
then the topmost one applies; and otherwise the default rule applies.
|
||||
|
||||
=
|
||||
asset_rule *Assets::applicable_rule(weave_pattern *pattern, filename *F) {
|
||||
TEMPORARY_TEXT(ext);
|
||||
Filenames::write_extension(ext, F);
|
||||
for (weave_pattern *p = pattern; p; p = p->based_on) {
|
||||
asset_rule *R;
|
||||
LOOP_OVER_LINKED_LIST(R, asset_rule, p->asset_rules)
|
||||
if (Str::eq_insensitive(R->applies_to, ext))
|
||||
return R;
|
||||
}
|
||||
asset_rule *R;
|
||||
LOOP_OVER_LINKED_LIST(R, asset_rule, pattern->asset_rules)
|
||||
if (Str::eq_insensitive(R->applies_to, I""))
|
||||
return R;
|
||||
internal_error("no default asset rule");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@h Inclusion of assets.
|
||||
Finally, then, we can include a single asset. This has already been located,
|
||||
at filename |F|, and we now know how to find the applicable rule.
|
||||
|
||||
=
|
||||
void Assets::include_asset(OUTPUT_STREAM, asset_rule *R, web *W, filename *F,
|
||||
text_stream *trans, weave_pattern *pattern, filename *from) {
|
||||
if (R == NULL) R = Assets::applicable_rule(pattern, F);
|
||||
TEMPORARY_TEXT(url);
|
||||
pathname *AP = Colonies::assets_path();
|
||||
if (AP) Pathnames::relative_URL(url, Filenames::up(from), AP);
|
||||
WRITE_TO(url, "%S", Filenames::get_leafname(F));
|
||||
if (R->transform_names == FALSE) trans = NULL;
|
||||
if (Str::len(R->pre) > 0) @<Embed the prefix, if any@>;
|
||||
switch (R->method) {
|
||||
case EMBED_ASSET_METHOD: @<Embed asset@>; break;
|
||||
case COPY_ASSET_METHOD: @<Copy asset@>; break;
|
||||
case PRIVATE_COPY_ASSET_METHOD: @<Copy asset@>; break;
|
||||
case COLLATE_ASSET_METHOD: @<Collate asset@>; break;
|
||||
}
|
||||
if (Str::len(R->post) > 0) @<Embed the suffix, if any@>;
|
||||
DISCARD_TEXT(url);
|
||||
}
|
||||
|
||||
@<Embed the prefix, if any@> =
|
||||
for (int i=0; i<Str::len(R->pre); i++) {
|
||||
if (Str::includes_at(R->pre, i, I"URL")) {
|
||||
WRITE("%S", url);
|
||||
i += 2;
|
||||
} else PUT(Str::get_at(R->pre, i));
|
||||
}
|
||||
WRITE("\n");
|
||||
|
||||
@<Embed asset@> =
|
||||
if (verbose_mode) PRINT("Embed asset %f\n", F);
|
||||
Assets::transform(OUT, F, trans);
|
||||
|
||||
@<Copy asset@> =
|
||||
if (verbose_mode) PRINT("Copy asset %f\n", F);
|
||||
pathname *H = W->redirect_weaves_to;
|
||||
if (H == NULL) H = Reader::woven_folder(W);
|
||||
if ((AP) && (R->method != PRIVATE_COPY_ASSET_METHOD)) H = AP;
|
||||
if (Str::len(trans) > 0) {
|
||||
text_stream css_S;
|
||||
filename *G = Filenames::in(H, Filenames::get_leafname(F));
|
||||
if (STREAM_OPEN_TO_FILE(&css_S, G, ISO_ENC) == FALSE)
|
||||
Errors::fatal_with_file("unable to write tangled file", F);
|
||||
Assets::transform(&css_S, F, trans);
|
||||
STREAM_CLOSE(&css_S);
|
||||
} else Shell::copy(F, H, "");
|
||||
if (W->as_ebook) {
|
||||
filename *rel = Filenames::in(NULL, Filenames::get_leafname(F));
|
||||
Epub::note_image(W->as_ebook, rel);
|
||||
}
|
||||
|
||||
@<Collate asset@> =
|
||||
if (verbose_mode) PRINT("Collate asset %f\n", F);
|
||||
Collater::for_web_and_pattern(OUT, W, pattern, F, from);
|
||||
|
||||
@<Embed the suffix, if any@> =
|
||||
for (int i=0; i<Str::len(R->post); i++) {
|
||||
if (Str::includes_at(R->post, i, I"URL")) {
|
||||
WRITE("%S", url);
|
||||
i += 2;
|
||||
} else PUT(Str::get_at(R->post, i));
|
||||
}
|
||||
WRITE("\n");
|
||||
|
||||
@ "Transforming" is what happens to a CSS file to change the class names of
|
||||
its |span| and |pre| styling rules, to add a prefix text. This is what changes
|
||||
the style names for colouring, say, COBOL source code from, e.g.,
|
||||
|span.identifier-syntax| to |span.ConsoleText-identifier-syntax|.
|
||||
|
||||
=
|
||||
typedef struct css_file_transformation {
|
||||
struct text_stream *OUT;
|
||||
struct text_stream *trans;
|
||||
} css_file_transformation;
|
||||
|
||||
void Assets::transform(text_stream *OUT, filename *F, text_stream *trans) {
|
||||
css_file_transformation cft;
|
||||
cft.OUT = OUT;
|
||||
cft.trans = trans;
|
||||
TextFiles::read(F, FALSE, "can't open file", TRUE,
|
||||
Assets::transformer, NULL, (void *) &cft);
|
||||
}
|
||||
|
||||
void Assets::transformer(text_stream *line, text_file_position *tfp, void *X) {
|
||||
css_file_transformation *cft = (css_file_transformation *) X;
|
||||
text_stream *OUT = cft->OUT;
|
||||
match_results mr = Regexp::create_mr();
|
||||
TEMPORARY_TEXT(spanned);
|
||||
while (Regexp::match(&mr, line, L"(%c*?span.)(%i+)(%c*?)")) {
|
||||
WRITE_TO(spanned, "%S%S%S", mr.exp[0], cft->trans, mr.exp[1]);
|
||||
Str::clear(line); Str::copy(line, mr.exp[2]);
|
||||
}
|
||||
WRITE_TO(spanned, "%S\n", line);
|
||||
while (Regexp::match(&mr, spanned, L"(%c*?pre.)(%i+)(%c*?)")) {
|
||||
WRITE("%S%S%S", mr.exp[0], cft->trans, mr.exp[1]);
|
||||
Str::clear(spanned); Str::copy(spanned, mr.exp[2]);
|
||||
}
|
||||
WRITE("%S", spanned);
|
||||
DISCARD_TEXT(spanned);
|
||||
Regexp::dispose_of(&mr);
|
||||
}
|
|
@ -10,6 +10,7 @@ module.
|
|||
@ We need to itemise the structures we'll want to allocate. For explanations,
|
||||
see //foundation: A Brief Guide to Foundation//.
|
||||
|
||||
@e asset_rule_MT
|
||||
@e breadcrumb_request_MT
|
||||
@e chapter_MT
|
||||
@e colony_MT
|
||||
|
@ -95,6 +96,7 @@ see //foundation: A Brief Guide to Foundation//.
|
|||
|
||||
=
|
||||
ALLOCATE_IN_ARRAYS(source_line, 1000)
|
||||
ALLOCATE_INDIVIDUALLY(asset_rule)
|
||||
ALLOCATE_INDIVIDUALLY(breadcrumb_request)
|
||||
ALLOCATE_INDIVIDUALLY(chapter)
|
||||
ALLOCATE_INDIVIDUALLY(colony)
|
||||
|
|
|
@ -23,7 +23,7 @@ typedef struct weave_pattern {
|
|||
struct text_stream *initial_extension; /* filename extension, that is */
|
||||
struct linked_list *post_commands; /* of |text_stream| */
|
||||
|
||||
int embed_CSS; /* embed CSS directly into any HTML files made? */
|
||||
struct linked_list *asset_rules; /* of |asset_rule| */
|
||||
int show_abbrevs; /* show section range abbreviations in the weave? */
|
||||
int number_sections; /* insert section numbers into the weave? */
|
||||
struct text_stream *default_range; /* for example, |sections| */
|
||||
|
@ -53,7 +53,7 @@ weave_pattern *Patterns::find(web *W, text_stream *name) {
|
|||
wp->plugins = NEW_LINKED_LIST(weave_plugin);
|
||||
wp->colour_schemes = NEW_LINKED_LIST(colour_scheme);
|
||||
wp->based_on = NULL;
|
||||
wp->embed_CSS = FALSE;
|
||||
wp->asset_rules = Assets::new_asset_rules_list();
|
||||
wp->patterned_for = W;
|
||||
wp->number_sections = FALSE;
|
||||
wp->footnotes_plugin = NULL;
|
||||
|
@ -120,7 +120,6 @@ void Patterns::scan_pattern_line(text_stream *line, text_file_position *tfp, voi
|
|||
}
|
||||
wp->based_on = Patterns::find(wp->patterned_for, mr2.exp[1]);
|
||||
wp->pattern_format = wp->based_on->pattern_format;
|
||||
wp->embed_CSS = wp->based_on->embed_CSS;
|
||||
wp->number_sections = wp->based_on->number_sections;
|
||||
wp->default_range = Str::duplicate(wp->based_on->default_range);
|
||||
wp->mathematics_plugin = Str::duplicate(wp->based_on->mathematics_plugin);
|
||||
|
@ -135,13 +134,11 @@ void Patterns::scan_pattern_line(text_stream *line, text_file_position *tfp, voi
|
|||
} else if (Str::eq_insensitive(key, I"plugin")) {
|
||||
text_stream *name = Patterns::plugin_name(value, tfp);
|
||||
if (Str::len(name) > 0) {
|
||||
weave_plugin *plugin = WeavePlugins::new(name);
|
||||
weave_plugin *plugin = Assets::new(name);
|
||||
ADD_TO_LINKED_LIST(plugin, weave_plugin, wp->plugins);
|
||||
}
|
||||
} else if (Str::eq_insensitive(key, I"format")) {
|
||||
wp->pattern_format = Formats::find_by_name(value);
|
||||
} else if (Str::eq_insensitive(key, I"embed CSS")) {
|
||||
wp->embed_CSS = Patterns::yes_or_no(value, tfp);
|
||||
} else if (Str::eq_insensitive(key, I"number sections")) {
|
||||
wp->number_sections = Patterns::yes_or_no(value, tfp);
|
||||
} else if (Str::eq_insensitive(key, I"default range")) {
|
||||
|
@ -162,6 +159,14 @@ void Patterns::scan_pattern_line(text_stream *line, text_file_position *tfp, voi
|
|||
Errors::in_text_file("syntax is 'bibliographic data: X = Y'", tfp);
|
||||
}
|
||||
Regexp::dispose_of(&mr2);
|
||||
} else if (Str::eq_insensitive(key, I"assets")) {
|
||||
match_results mr2 = Regexp::create_mr();
|
||||
if (Regexp::match(&mr2, value, L"(.%C+?) (%c+)")) {
|
||||
Assets::add_asset_rule(wp->asset_rules, mr2.exp[0], mr2.exp[1], tfp);
|
||||
} else {
|
||||
Errors::in_text_file("syntax is 'assets: .EXT COMMAND'", tfp);
|
||||
}
|
||||
Regexp::dispose_of(&mr2);
|
||||
} else {
|
||||
Errors::in_text_file("unrecognised pattern command", tfp);
|
||||
}
|
||||
|
@ -196,7 +201,7 @@ In effect, a pattern can hold a shell script to run after each weave (subset)
|
|||
completes.
|
||||
|
||||
=
|
||||
void Patterns::post_process(weave_pattern *pattern, weave_order *wv, int verbosely) {
|
||||
void Patterns::post_process(weave_pattern *pattern, weave_order *wv) {
|
||||
text_stream *T;
|
||||
LOOP_OVER_LINKED_LIST(T, text_stream, pattern->post_commands) {
|
||||
filename *last_F = NULL;
|
||||
|
@ -224,7 +229,7 @@ void Patterns::post_process(weave_pattern *pattern, weave_order *wv, int verbose
|
|||
if ((Str::includes_at(cmd, 0, I"PROCESS ")) && (last_F)) {
|
||||
TeXUtilities::post_process_weave(wv, last_F);
|
||||
} else {
|
||||
if (verbosely) PRINT("(%S)\n", cmd);
|
||||
if (verbose_mode) PRINT("(%S)\n", cmd);
|
||||
int rv = Shell::run(cmd);
|
||||
if (rv != 0) Errors::fatal("post-processing command failed");
|
||||
}
|
||||
|
@ -233,33 +238,26 @@ void Patterns::post_process(weave_pattern *pattern, weave_order *wv, int verbose
|
|||
}
|
||||
|
||||
@h Obtaining files.
|
||||
Patterns provide not merely some configuration settings (above): they also
|
||||
provide template or style files of various kinds. When Inweb wants to find
|
||||
a pattern file with a given leafname, it looks for it in the pattern
|
||||
directory. If that fails, it then looks in the directory of the pattern
|
||||
inherited from.
|
||||
Patterns provide place template files, such as |template-body.html|, in
|
||||
their root directories.
|
||||
|
||||
Note that if you're rash enough to set up a cycle of patterns inheriting
|
||||
from each other then this routine will lock up into an infinite loop.
|
||||
|
||||
=
|
||||
filename *Patterns::obtain_filename(weave_pattern *pattern, text_stream *leafname) {
|
||||
if (Str::prefix_eq(leafname, I"../", 3)) {
|
||||
Str::delete_first_character(leafname);
|
||||
Str::delete_first_character(leafname);
|
||||
Str::delete_first_character(leafname);
|
||||
filename *Patterns::find_template(weave_pattern *pattern, text_stream *leafname) {
|
||||
for (weave_pattern *wp = pattern; wp; wp = wp->based_on) {
|
||||
filename *F = Filenames::in(wp->pattern_location, leafname);
|
||||
if (TextFiles::exists(F)) return F;
|
||||
}
|
||||
filename *F = Filenames::in(pattern->pattern_location, leafname);
|
||||
if (TextFiles::exists(F)) return F;
|
||||
if (pattern->based_on) return Patterns::obtain_filename(pattern->based_on, leafname);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ And similarly, but with an intermediate directory:
|
||||
@ Similarly, but looking in an intermediate directory:
|
||||
|
||||
=
|
||||
filename *Patterns::find_asset(weave_pattern *pattern, text_stream *dirname,
|
||||
text_stream *leafname) {
|
||||
filename *Patterns::find_file_in_subdirectory(weave_pattern *pattern,
|
||||
text_stream *dirname, text_stream *leafname) {
|
||||
for (weave_pattern *wp = pattern; wp; wp = wp->based_on) {
|
||||
pathname *P = Pathnames::down(wp->pattern_location, dirname);
|
||||
filename *F = Filenames::in(P, leafname);
|
||||
|
@ -268,57 +266,14 @@ filename *Patterns::find_asset(weave_pattern *pattern, text_stream *dirname,
|
|||
return NULL;
|
||||
}
|
||||
|
||||
@ =
|
||||
typedef struct css_file_transformation {
|
||||
struct text_stream *OUT;
|
||||
struct text_stream *trans;
|
||||
} css_file_transformation;
|
||||
|
||||
void Patterns::copy_file_into_weave(web *W, filename *F, pathname *P, text_stream *trans) {
|
||||
pathname *H = W->redirect_weaves_to;
|
||||
if (H == NULL) H = Reader::woven_folder(W);
|
||||
if (P) H = P;
|
||||
if (Str::len(trans) > 0) {
|
||||
text_stream css_S;
|
||||
filename *G = Filenames::in(P, Filenames::get_leafname(F));
|
||||
if (STREAM_OPEN_TO_FILE(&css_S, G, ISO_ENC) == FALSE)
|
||||
Errors::fatal_with_file("unable to write tangled file", F);
|
||||
css_file_transformation cft;
|
||||
cft.OUT = &css_S;
|
||||
cft.trans = trans;
|
||||
TextFiles::read(F, FALSE, "can't open CSS file", TRUE,
|
||||
Patterns::transform_CSS, NULL, (void *) &cft);
|
||||
STREAM_CLOSE(cft.OUT);
|
||||
} else Shell::copy(F, H, "");
|
||||
}
|
||||
|
||||
void Patterns::transform_CSS(text_stream *line, text_file_position *tfp, void *X) {
|
||||
css_file_transformation *cft = (css_file_transformation *) X;
|
||||
text_stream *OUT = cft->OUT;
|
||||
match_results mr = Regexp::create_mr();
|
||||
TEMPORARY_TEXT(spanned);
|
||||
while (Regexp::match(&mr, line, L"(%c*?span.)(%i+)(%c*?)")) {
|
||||
WRITE_TO(spanned, "%S%S%S", mr.exp[0], cft->trans, mr.exp[1]);
|
||||
Str::clear(line); Str::copy(line, mr.exp[2]);
|
||||
}
|
||||
WRITE_TO(spanned, "%S\n", line);
|
||||
while (Regexp::match(&mr, spanned, L"(%c*?pre.)(%i+)(%c*?)")) {
|
||||
WRITE("%S%S%S", mr.exp[0], cft->trans, mr.exp[1]);
|
||||
Str::clear(spanned); Str::copy(spanned, mr.exp[2]);
|
||||
}
|
||||
WRITE("%S", spanned);
|
||||
DISCARD_TEXT(spanned);
|
||||
Regexp::dispose_of(&mr);
|
||||
}
|
||||
|
||||
@ =
|
||||
void Patterns::include_plugins(OUTPUT_STREAM, web *W, weave_pattern *pattern, filename *from) {
|
||||
for (weave_pattern *p = pattern; p; p = p->based_on) {
|
||||
weave_plugin *wp;
|
||||
LOOP_OVER_LINKED_LIST(wp, weave_plugin, p->plugins)
|
||||
WeavePlugins::include_plugin(OUT, W, wp, pattern, from);
|
||||
Assets::include_plugin(OUT, W, wp, pattern, from);
|
||||
colour_scheme *cs;
|
||||
LOOP_OVER_LINKED_LIST(cs, colour_scheme, p->colour_schemes)
|
||||
WeavePlugins::include_colour_scheme(OUT, W, cs, pattern, from);
|
||||
Assets::include_colour_scheme(OUT, W, cs, pattern, from);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -56,6 +56,7 @@ pathname *path_to_inweb_patterns = NULL; /* where built-in patterns are stored *
|
|||
|
||||
=
|
||||
int no_inweb_errors = 0;
|
||||
int verbose_mode = FALSE;
|
||||
|
||||
@h Main routine.
|
||||
|
||||
|
@ -63,9 +64,10 @@ int no_inweb_errors = 0;
|
|||
int main(int argc, char **argv) {
|
||||
@<Initialise inweb@>;
|
||||
inweb_instructions args = Configuration::read(argc, argv);
|
||||
verbose_mode = args.verbose_switch;
|
||||
fundamental_mode = args.inweb_mode;
|
||||
path_to_inweb = Pathnames::installation_path("INWEB_PATH", I"inweb");
|
||||
if (args.verbose_switch) PRINT("Installation path is %p\n", path_to_inweb);
|
||||
if (verbose_mode) PRINT("Installation path is %p\n", path_to_inweb);
|
||||
path_to_inweb_patterns = Pathnames::down(path_to_inweb, I"Patterns");
|
||||
path_to_inweb_materials = Pathnames::down(path_to_inweb, I"Materials");
|
||||
|
||||
|
@ -91,10 +93,9 @@ void Main::follow_instructions(inweb_instructions *ins) {
|
|||
web *W = NULL;
|
||||
if ((ins->chosen_web) || (ins->chosen_file)) {
|
||||
W = Reader::load_web(ins->chosen_web, ins->chosen_file,
|
||||
WebModules::make_search_path(ins->import_setting), ins->verbose_switch,
|
||||
TRUE);
|
||||
WebModules::make_search_path(ins->import_setting), TRUE);
|
||||
W->redirect_weaves_to = ins->weave_into_setting;
|
||||
Reader::read_web(W, ins->verbose_switch);
|
||||
Reader::read_web(W);
|
||||
Parser::parse_web(W, ins->inweb_mode);
|
||||
}
|
||||
if (no_inweb_errors == 0) {
|
||||
|
@ -247,11 +248,11 @@ which for many small webs will be the entire thing.
|
|||
if (ins->swarm_mode == SWARM_OFF_SWM) {
|
||||
Swarm::weave_subset(W, ins->chosen_range, FALSE, tag, pattern,
|
||||
ins->weave_to_setting, ins->weave_into_setting,
|
||||
ins->breadcrumb_setting, ins->navigation_setting, ins->verbose_switch);
|
||||
ins->breadcrumb_setting, ins->navigation_setting);
|
||||
} else {
|
||||
Swarm::weave(W, ins->chosen_range, ins->swarm_mode, tag, pattern,
|
||||
ins->weave_to_setting, ins->weave_into_setting,
|
||||
ins->breadcrumb_setting, ins->navigation_setting, ins->verbose_switch);
|
||||
ins->breadcrumb_setting, ins->navigation_setting);
|
||||
}
|
||||
Formats::end_weaving(W, pattern);
|
||||
|
||||
|
|
|
@ -19,7 +19,7 @@ weave_order *swarm_leader = NULL; /* the most inclusive one we weave */
|
|||
|
||||
void Swarm::weave(web *W, text_stream *range, int swarm_mode, theme_tag *tag,
|
||||
weave_pattern *pattern, filename *to, pathname *into,
|
||||
linked_list *breadcrumbs, filename *navigation, int verbosely) {
|
||||
linked_list *breadcrumbs, filename *navigation) {
|
||||
swarm_leader = NULL;
|
||||
chapter *C;
|
||||
section *S;
|
||||
|
@ -29,7 +29,7 @@ void Swarm::weave(web *W, text_stream *range, int swarm_mode, theme_tag *tag,
|
|||
if ((W->md->chaptered == TRUE) && (Reader::range_within(C->md->ch_range, range))) {
|
||||
C->ch_weave = Swarm::weave_subset(W,
|
||||
C->md->ch_range, FALSE, tag, pattern, to, into,
|
||||
breadcrumbs, navigation, verbosely);
|
||||
breadcrumbs, navigation);
|
||||
if (Str::len(range) > 0) swarm_leader = C->ch_weave;
|
||||
}
|
||||
if (swarm_mode == SWARM_SECTIONS_SWM)
|
||||
|
@ -37,7 +37,7 @@ void Swarm::weave(web *W, text_stream *range, int swarm_mode, theme_tag *tag,
|
|||
if (Reader::range_within(S->md->sect_range, range))
|
||||
S->sect_weave = Swarm::weave_subset(W,
|
||||
S->md->sect_range, FALSE, tag, pattern, to, into,
|
||||
breadcrumbs, navigation, verbosely);
|
||||
breadcrumbs, navigation);
|
||||
}
|
||||
|
||||
Swarm::weave_index_templates(W, range, pattern, into, navigation, breadcrumbs);
|
||||
|
@ -50,14 +50,14 @@ the call comes from Program Control).
|
|||
=
|
||||
weave_order *Swarm::weave_subset(web *W, text_stream *range, int open_afterwards,
|
||||
theme_tag *tag, weave_pattern *pattern, filename *to, pathname *into,
|
||||
linked_list *breadcrumbs, filename *navigation, int verbosely) {
|
||||
linked_list *breadcrumbs, filename *navigation) {
|
||||
weave_order *wv = NULL;
|
||||
if (no_inweb_errors == 0) {
|
||||
Analyser::analyse_code(W);
|
||||
@<Compile a set of instructions for the weaver@>;
|
||||
if (Weaver::weave(wv) == 0) /* i.e., the number of lines woven was zero */
|
||||
Errors::fatal("empty weave request");
|
||||
Patterns::post_process(wv->pattern, wv, verbosely);
|
||||
Patterns::post_process(wv->pattern, wv);
|
||||
Formats::post_process_weave(wv, open_afterwards);
|
||||
@<Report on the outcome of the weave to the console@>;
|
||||
}
|
||||
|
@ -191,7 +191,7 @@ void Swarm::ensure_plugin(weave_order *wv, text_stream *name) {
|
|||
LOOP_OVER_LINKED_LIST(existing, weave_plugin, wv->plugins)
|
||||
if (Str::eq_insensitive(name, existing->plugin_name))
|
||||
return;
|
||||
weave_plugin *wp = WeavePlugins::new(name);
|
||||
weave_plugin *wp = Assets::new(name);
|
||||
ADD_TO_LINKED_LIST(wp, weave_plugin, wv->plugins);
|
||||
}
|
||||
|
||||
|
@ -201,7 +201,7 @@ colour_scheme *Swarm::ensure_colour_scheme(weave_order *wv, text_stream *name,
|
|||
LOOP_OVER_LINKED_LIST(existing, colour_scheme, wv->colour_schemes)
|
||||
if (Str::eq_insensitive(name, existing->scheme_name))
|
||||
return existing;
|
||||
colour_scheme *cs = WeavePlugins::find_colour_scheme(wv->pattern, name, pre);
|
||||
colour_scheme *cs = Assets::find_colour_scheme(wv->pattern, name, pre);
|
||||
if (cs == NULL) {
|
||||
if (Str::eq(name, I"Colours")) {
|
||||
TEMPORARY_TEXT(err);
|
||||
|
@ -218,10 +218,10 @@ colour_scheme *Swarm::ensure_colour_scheme(weave_order *wv, text_stream *name,
|
|||
void Swarm::include_plugins(OUTPUT_STREAM, web *W, weave_order *wv, filename *from) {
|
||||
weave_plugin *wp;
|
||||
LOOP_OVER_LINKED_LIST(wp, weave_plugin, wv->plugins)
|
||||
WeavePlugins::include_plugin(OUT, W, wp, wv->pattern, from);
|
||||
Assets::include_plugin(OUT, W, wp, wv->pattern, from);
|
||||
colour_scheme *cs;
|
||||
LOOP_OVER_LINKED_LIST(cs, colour_scheme, wv->colour_schemes)
|
||||
WeavePlugins::include_colour_scheme(OUT, W, cs, wv->pattern, from);
|
||||
Assets::include_colour_scheme(OUT, W, cs, wv->pattern, from);
|
||||
}
|
||||
|
||||
@ After every swarm, we rebuild the index:
|
||||
|
@ -231,7 +231,7 @@ void Swarm::weave_index_templates(web *W, text_stream *range, weave_pattern *pat
|
|||
pathname *into, filename *nav, linked_list *crumbs) {
|
||||
if (!(Bibliographic::data_exists(W->md, I"Version Number")))
|
||||
Bibliographic::set_datum(W->md, I"Version Number", I" ");
|
||||
filename *INF = Patterns::obtain_filename(pattern, I"template-index.html");
|
||||
filename *INF = Patterns::find_template(pattern, I"template-index.html");
|
||||
if (INF) {
|
||||
pathname *H = W->redirect_weaves_to;
|
||||
if (H == NULL) H = Reader::woven_folder(W);
|
||||
|
|
|
@ -94,17 +94,17 @@ typedef struct section {
|
|||
|web_md|-|chapter_md|-|section_md| tree:
|
||||
|
||||
=
|
||||
web_md *Reader::load_web_md(pathname *P, filename *alt_F, module_search *I, int verbosely,
|
||||
web_md *Reader::load_web_md(pathname *P, filename *alt_F, module_search *I,
|
||||
int including_modules) {
|
||||
return WebMetadata::get(P, alt_F, default_inweb_syntax, I, verbosely,
|
||||
return WebMetadata::get(P, alt_F, default_inweb_syntax, I, verbose_mode,
|
||||
including_modules, path_to_inweb);
|
||||
}
|
||||
|
||||
web *Reader::load_web(pathname *P, filename *alt_F, module_search *I, int verbosely,
|
||||
web *Reader::load_web(pathname *P, filename *alt_F, module_search *I,
|
||||
int including_modules) {
|
||||
|
||||
web *W = CREATE(web);
|
||||
W->md = Reader::load_web_md(P, alt_F, I, verbosely, including_modules);
|
||||
W->md = Reader::load_web_md(P, alt_F, I, including_modules);
|
||||
tangle_target *main_target = NULL;
|
||||
|
||||
@<Write the Inweb Version bibliographic datum@>;
|
||||
|
@ -202,14 +202,14 @@ come straight from the source files, but a few chapter heading lines are
|
|||
inserted if this is a multi-chapter web.
|
||||
|
||||
=
|
||||
void Reader::read_web(web *W, int verbosely) {
|
||||
void Reader::read_web(web *W) {
|
||||
chapter *C;
|
||||
section *S;
|
||||
LOOP_OVER_LINKED_LIST(C, chapter, W->chapters)
|
||||
LOOP_OVER_LINKED_LIST(S, section, C->sections)
|
||||
Reader::read_file(W, C,
|
||||
S->md->source_file_for_section,
|
||||
S->md->titling_line_to_insert, S, verbosely,
|
||||
S->md->titling_line_to_insert, S,
|
||||
(W->md->single_file)?TRUE:FALSE);
|
||||
}
|
||||
|
||||
|
@ -217,7 +217,7 @@ void Reader::read_web(web *W, int verbosely) {
|
|||
|
||||
=
|
||||
void Reader::read_file(web *W, chapter *C, filename *F, text_stream *titling_line,
|
||||
section *S, int verbosely, int disregard_top) {
|
||||
section *S, int disregard_top) {
|
||||
S->owning_chapter = C;
|
||||
if (disregard_top)
|
||||
S->paused_until_at = TRUE;
|
||||
|
@ -233,8 +233,7 @@ void Reader::read_file(web *W, chapter *C, filename *F, text_stream *titling_lin
|
|||
|
||||
int cl = TextFiles::read(F, FALSE, "can't open section file", TRUE,
|
||||
Reader::scan_source_line, NULL, (void *) S);
|
||||
if (verbosely)
|
||||
PRINT("Read section: '%S' (%d lines)\n", S->md->sect_title, cl);
|
||||
if (verbose_mode) PRINT("Read section: '%S' (%d lines)\n", S->md->sect_title, cl);
|
||||
}
|
||||
|
||||
@<Insert an implied chapter heading@> =
|
||||
|
|
|
@ -108,7 +108,6 @@ void Collater::temp_line(text_stream *line, text_file_position *tfp, void *v_ies
|
|||
|
||||
=
|
||||
void Collater::process(text_stream *OUT, collater_state *cls) {
|
||||
STREAM_INDENT(STDOUT);
|
||||
int lpos = 0; /* This is our program counter: a line number in the template */
|
||||
while (lpos < cls->no_tlines) {
|
||||
match_results mr = Regexp::create_mr();
|
||||
|
@ -122,7 +121,6 @@ void Collater::process(text_stream *OUT, collater_state *cls) {
|
|||
}
|
||||
if (cls->inside_navigation_submenu) WRITE("</ul>");
|
||||
cls->inside_navigation_submenu = FALSE;
|
||||
STREAM_OUTDENT(STDOUT);
|
||||
}
|
||||
|
||||
@<Make any necessary substitutions to turn tl into final output@> =
|
||||
|
@ -139,9 +137,7 @@ void Collater::process(text_stream *OUT, collater_state *cls) {
|
|||
DISCARD_TEXT(command);
|
||||
}
|
||||
@<Skip line if inside an empty loop@>;
|
||||
STREAM_INDENT(STDOUT);
|
||||
@<Make substitutions of square-bracketed variables in line@>;
|
||||
STREAM_OUTDENT(STDOUT);
|
||||
|
||||
@h The repeat stack and loops.
|
||||
This is used only for debugging:
|
||||
|
@ -415,16 +411,9 @@ this will recursively call The Collater, in fact.
|
|||
Colonies::drop_initial_breadcrumbs(substituted, cls->into_file,
|
||||
cls->crumbs);
|
||||
|
||||
@ |[[Plugins]]| here expands to material needed by any plugins required
|
||||
by the weave cls->nav_pattern itself; it doesn't include optional extras for a
|
||||
specific page because, of course, The Collater is used for cover sheets and
|
||||
not pages. (Except for navigation purposes, and navigation files should never
|
||||
use this.)
|
||||
|
||||
@<Substitute Plugins@> =
|
||||
WeavePlugins::begin_inclusions();
|
||||
Patterns::include_plugins(OUT, cls->for_web, cls->nav_pattern, cls->into_file);
|
||||
if (cls->wv) Swarm::include_plugins(OUT, cls->for_web, cls->wv, cls->into_file);
|
||||
Assets::include_relevant_plugins(OUT, cls->nav_pattern, cls->for_web,
|
||||
cls->wv, cls->into_file);
|
||||
|
||||
@ A list of all modules in the current web.
|
||||
|
||||
|
|
|
@ -7,7 +7,7 @@ useful only for testing the weaver.
|
|||
|
||||
=
|
||||
void Debugging::create(void) {
|
||||
weave_format *wf = Formats::create_weave_format(I"debugging", I".txt");
|
||||
weave_format *wf = Formats::create_weave_format(I"TestingInweb", I".txt");
|
||||
METHOD_ADD(wf, RENDER_FOR_MTID, Debugging::render);
|
||||
}
|
||||
|
||||
|
|
|
@ -97,7 +97,7 @@ void Formats::render(text_stream *OUT, heterogeneous_tree *tree, filename *into)
|
|||
weave_format *wf = C->wv->format;
|
||||
TEMPORARY_TEXT(template);
|
||||
WRITE_TO(template, "template-body%S", wf->woven_extension);
|
||||
filename *F = Patterns::obtain_filename(C->wv->pattern, template);
|
||||
filename *F = Patterns::find_template(C->wv->pattern, template);
|
||||
TEMPORARY_TEXT(interior);
|
||||
VMETHOD_CALL(wf, RENDER_FOR_MTID, interior, tree);
|
||||
Bibliographic::set_datum(C->wv->weave_web->md, I"Weave Content", interior);
|
||||
|
|
|
@ -36,6 +36,7 @@ typedef struct HTML_render_state {
|
|||
int carousel_number;
|
||||
int slide_number;
|
||||
int slide_of;
|
||||
struct asset_rule *copy_rule;
|
||||
} HTML_render_state;
|
||||
|
||||
@ The initial state is as follows:
|
||||
|
@ -52,6 +53,7 @@ HTML_render_state HTMLFormat::initial_state(text_stream *OUT, weave_order *wv,
|
|||
hrs.carousel_number = 1;
|
||||
hrs.slide_number = -1;
|
||||
hrs.slide_of = -1;
|
||||
hrs.copy_rule = Assets::new_rule(NULL, I"", I"private copy", NULL);
|
||||
|
||||
Swarm::ensure_plugin(wv, I"Base");
|
||||
hrs.colours = Swarm::ensure_colour_scheme(wv, I"Colours", I"");
|
||||
|
@ -247,7 +249,8 @@ int HTMLFormat::render_visit(tree_node *N, void *state, int L) {
|
|||
filename *RF = Filenames::from_text(C->figname);
|
||||
HTML_OPEN("center");
|
||||
HTML::image_to_dimensions(OUT, RF, C->w, C->h);
|
||||
Patterns::copy_file_into_weave(hrs->wv->weave_web, F, NULL, NULL);
|
||||
Assets::include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL,
|
||||
hrs->wv->pattern, hrs->wv->weave_to);
|
||||
HTML_CLOSE("center");
|
||||
WRITE("\n");
|
||||
|
||||
|
@ -256,7 +259,8 @@ int HTMLFormat::render_visit(tree_node *N, void *state, int L) {
|
|||
filename *F = Filenames::in(
|
||||
Pathnames::down(hrs->wv->weave_web->md->path_to_web, I"Audio"),
|
||||
C->audio_name);
|
||||
Patterns::copy_file_into_weave(hrs->wv->weave_web, F, NULL, NULL);
|
||||
Assets::include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL,
|
||||
hrs->wv->pattern, hrs->wv->weave_to);
|
||||
HTML_OPEN("center");
|
||||
WRITE("<audio controls>\n");
|
||||
WRITE("<source src=\"%S\" type=\"audio/mpeg\">\n", C->audio_name);
|
||||
|
@ -395,7 +399,7 @@ that service uses to identify the video/audio in question.
|
|||
if (C->h > 0) { Str::clear(CH); WRITE_TO(CH, "%d", C->h); }
|
||||
TEMPORARY_TEXT(embed_leaf);
|
||||
WRITE_TO(embed_leaf, "%S.html", C->service);
|
||||
filename *F = Patterns::find_asset(hrs->wv->pattern, I"Embedding", embed_leaf);
|
||||
filename *F = Patterns::find_file_in_subdirectory(hrs->wv->pattern, I"Embedding", embed_leaf);
|
||||
DISCARD_TEXT(embed_leaf);
|
||||
if (F == NULL) {
|
||||
Main::error_in_web(I"This is not a supported service", hrs->wv->current_weave_line);
|
||||
|
@ -809,7 +813,7 @@ int HTMLFormat::begin_weaving_EPUB(weave_format *wf, web *W, weave_pattern *patt
|
|||
TEMPORARY_TEXT(T)
|
||||
WRITE_TO(T, "%S", Bibliographic::get_datum(W->md, I"Title"));
|
||||
W->as_ebook = Epub::new(T, "P");
|
||||
filename *CSS = Patterns::find_asset(pattern, I"Base", I"Base.css");
|
||||
filename *CSS = Patterns::find_file_in_subdirectory(pattern, I"Base", I"Base.css");
|
||||
Epub::use_CSS_throughout(W->as_ebook, CSS);
|
||||
Epub::attach_metadata(W->as_ebook, L"identifier", T);
|
||||
DISCARD_TEXT(T)
|
||||
|
|
|
@ -1,213 +0,0 @@
|
|||
[WeavePlugins::] Weave Plugins.
|
||||
|
||||
Mainly for HTML, to add the necessary JavaScript for unusual requirements
|
||||
such as equations or footnotes.
|
||||
|
||||
@h Creation.
|
||||
At present, plugins are simply their names: Inweb knows as little as possible
|
||||
about how they work. The model is just that a file being woven either does or
|
||||
does not need a plugin of a given name: for example, if it uses maths notation,
|
||||
it will likely need the |MathJax3| plugin.
|
||||
|
||||
=
|
||||
typedef struct weave_plugin {
|
||||
struct text_stream *plugin_name;
|
||||
int last_included_in_round;
|
||||
MEMORY_MANAGEMENT
|
||||
} weave_plugin;
|
||||
|
||||
@ =
|
||||
weave_plugin *WeavePlugins::new(text_stream *name) {
|
||||
weave_plugin *wp;
|
||||
LOOP_OVER(wp, weave_plugin)
|
||||
if (Str::eq_insensitive(wp->plugin_name, name))
|
||||
return wp;
|
||||
wp = CREATE(weave_plugin);
|
||||
wp->plugin_name = Str::duplicate(name);
|
||||
wp->last_included_in_round = 0;
|
||||
return wp;
|
||||
}
|
||||
|
||||
@ And almost the same can be said about colour schemes, except that these we
|
||||
actually look for: they will be available to some patterns and not others.
|
||||
|
||||
=
|
||||
typedef struct colour_scheme {
|
||||
struct text_stream *scheme_name;
|
||||
struct text_stream *prefix;
|
||||
struct filename *at;
|
||||
int last_included_in_round;
|
||||
MEMORY_MANAGEMENT
|
||||
} colour_scheme;
|
||||
|
||||
@ =
|
||||
colour_scheme *WeavePlugins::find_colour_scheme(weave_pattern *pattern,
|
||||
text_stream *name, text_stream *pre) {
|
||||
colour_scheme *cs;
|
||||
LOOP_OVER(cs, colour_scheme)
|
||||
if (Str::eq_insensitive(cs->scheme_name, name))
|
||||
return cs;
|
||||
TEMPORARY_TEXT(css);
|
||||
WRITE_TO(css, "%S.css", name);
|
||||
filename *F = Patterns::find_asset(pattern, I"Colouring", css);
|
||||
if (F == NULL) F = Patterns::find_asset(pattern, I"Coloring", css);
|
||||
DISCARD_TEXT(css);
|
||||
if (F == NULL) return NULL;
|
||||
cs = CREATE(colour_scheme);
|
||||
cs->scheme_name = Str::duplicate(name);
|
||||
cs->at = F;
|
||||
cs->prefix = Str::duplicate(pre);
|
||||
cs->last_included_in_round = 0;
|
||||
if (Str::len(pre) > 0) WRITE_TO(cs->prefix, "-");
|
||||
return cs;
|
||||
}
|
||||
|
||||
int current_inclusion_round = 0;
|
||||
void WeavePlugins::begin_inclusions(void) {
|
||||
current_inclusion_round++;
|
||||
}
|
||||
|
||||
@ When a file is woven, then, the following function can add the plugins
|
||||
necessary. If a plugin is called |X|, then we try to find |X.html| and
|
||||
weave that into the page header; and we try to find |X.css|, weave an
|
||||
inclusion of that, and also copy the file into the weave destination.
|
||||
|
||||
The fragment of HTML is compulsory; the CSS file, optional.
|
||||
|
||||
=
|
||||
void WeavePlugins::include_plugin(OUTPUT_STREAM, web *W, weave_plugin *wp,
|
||||
weave_pattern *pattern, filename *from) {
|
||||
if (wp->last_included_in_round == current_inclusion_round) return;
|
||||
wp->last_included_in_round = current_inclusion_round;
|
||||
pathname *AP = Colonies::assets_path();
|
||||
int html_mode = FALSE;
|
||||
if (Str::eq(pattern->pattern_format->format_name, I"HTML")) html_mode = TRUE;
|
||||
int finds = 0;
|
||||
TEMPORARY_TEXT(required);
|
||||
WRITE_TO(required, "%S.html", wp->plugin_name);
|
||||
dictionary *leaves_gathered = Dictionaries::new(128, TRUE);
|
||||
for (weave_pattern *p = pattern; p; p = p->based_on) {
|
||||
pathname *P = Pathnames::down(p->pattern_location, wp->plugin_name);
|
||||
scan_directory *D = Directories::open(P);
|
||||
if (D) {
|
||||
TEMPORARY_TEXT(leafname);
|
||||
while (Directories::next(D, leafname)) {
|
||||
if ((Str::get_last_char(leafname) != FOLDER_SEPARATOR) &&
|
||||
(Str::get_first_char(leafname) != '.')) {
|
||||
if (Dictionaries::find(leaves_gathered, leafname) == NULL) {
|
||||
WRITE_TO(Dictionaries::create_text(leaves_gathered, leafname), "got this");
|
||||
filename *F = Filenames::in(P, leafname);
|
||||
if (Str::eq_insensitive(leafname, required)) {
|
||||
if (html_mode) {
|
||||
Collater::for_web_and_pattern(OUT,
|
||||
W, pattern, F, from);
|
||||
} else {
|
||||
@<Use shell scripting to copy the file over@>;
|
||||
}
|
||||
} else {
|
||||
if (html_mode) {
|
||||
TEMPORARY_TEXT(ext);
|
||||
Filenames::write_extension(ext, F);
|
||||
if (Str::eq_insensitive(ext, I".css")) {
|
||||
WeavePlugins::include_CSS_file(OUT, W, F, leafname, NULL, pattern, from);
|
||||
} else if (Str::eq_insensitive(ext, I".js")) {
|
||||
TEMPORARY_TEXT(url);
|
||||
if (AP) Pathnames::relative_URL(url, Filenames::up(from), AP);
|
||||
WRITE_TO(url, "%S", leafname);
|
||||
WRITE("<script src=\"%S\"></script>\n", url);
|
||||
DISCARD_TEXT(url);
|
||||
@<Use shell scripting to copy the file over@>;
|
||||
} else {
|
||||
@<Use shell scripting to copy the file over@>;
|
||||
}
|
||||
DISCARD_TEXT(ext);
|
||||
} else {
|
||||
TEMPORARY_TEXT(ext);
|
||||
Filenames::write_extension(ext, F);
|
||||
if (Str::eq_insensitive(ext, I".tex")) {
|
||||
WeavePlugins::include_TeX_macros(OUT, W, F, leafname, NULL, pattern, from);
|
||||
} else {
|
||||
@<Use shell scripting to copy the file over@>;
|
||||
}
|
||||
DISCARD_TEXT(ext);
|
||||
}
|
||||
}
|
||||
finds++;
|
||||
}
|
||||
}
|
||||
}
|
||||
DISCARD_TEXT(leafname);
|
||||
Directories::close(D);
|
||||
}
|
||||
}
|
||||
if (finds == 0) {
|
||||
TEMPORARY_TEXT(err);
|
||||
WRITE_TO(err, "The plugin '%S' is not supported", wp->plugin_name);
|
||||
Main::error_in_web(err, NULL);
|
||||
}
|
||||
DISCARD_TEXT(required);
|
||||
}
|
||||
|
||||
@<Use shell scripting to copy the file over@> =
|
||||
Patterns::copy_file_into_weave(W, F, AP, NULL);
|
||||
if (W->as_ebook) {
|
||||
filename *rel = Filenames::in(NULL, leafname);
|
||||
Epub::note_image(W->as_ebook, rel);
|
||||
}
|
||||
|
||||
@ =
|
||||
void WeavePlugins::include_colour_scheme(OUTPUT_STREAM, web *W, colour_scheme *cs,
|
||||
weave_pattern *pattern, filename *from) {
|
||||
if (cs->last_included_in_round == current_inclusion_round) return;
|
||||
cs->last_included_in_round = current_inclusion_round;
|
||||
if (Str::eq(pattern->pattern_format->format_name, I"HTML")) {
|
||||
TEMPORARY_TEXT(css);
|
||||
WRITE_TO(css, "%S.css", cs->scheme_name);
|
||||
filename *F = Patterns::find_asset(pattern, I"Colouring", css);
|
||||
if (F == NULL) F = Patterns::find_asset(pattern, I"Coloring", css);
|
||||
if (F == NULL) {
|
||||
TEMPORARY_TEXT(err);
|
||||
WRITE_TO(err, "No CSS file for the colour scheme '%S' can be found",
|
||||
cs->scheme_name);
|
||||
Main::error_in_web(err, NULL);
|
||||
DISCARD_TEXT(err);
|
||||
} else {
|
||||
WeavePlugins::include_CSS_file(OUT, W, F, css, cs->prefix, pattern, from);
|
||||
}
|
||||
DISCARD_TEXT(css);
|
||||
}
|
||||
}
|
||||
|
||||
void WeavePlugins::include_CSS_file(OUTPUT_STREAM, web *W, filename *F, text_stream *css,
|
||||
text_stream *trans, weave_pattern *pattern, filename *from) {
|
||||
if (pattern->embed_CSS) {
|
||||
WRITE("<style type=\"text/css\">\n");
|
||||
css_file_transformation cft;
|
||||
cft.OUT = OUT;
|
||||
cft.trans = trans;
|
||||
TextFiles::read(F, FALSE, "can't open CSS file", TRUE,
|
||||
Patterns::transform_CSS, NULL, (void *) &cft);
|
||||
WRITE("</style>\n");
|
||||
} else {
|
||||
pathname *AP = Colonies::assets_path();
|
||||
TEMPORARY_TEXT(url);
|
||||
if (AP) Pathnames::relative_URL(url, Filenames::up(from), AP);
|
||||
WRITE_TO(url, "%S", css);
|
||||
WRITE("<link href=\"%S\" rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\">\n", url);
|
||||
DISCARD_TEXT(url);
|
||||
Patterns::copy_file_into_weave(W, F, AP, trans);
|
||||
if (W->as_ebook) {
|
||||
filename *rel = Filenames::in(NULL, css);
|
||||
Epub::note_image(W->as_ebook, rel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void WeavePlugins::include_TeX_macros(OUTPUT_STREAM, web *W, filename *F, text_stream *css,
|
||||
text_stream *trans, weave_pattern *pattern, filename *from) {
|
||||
css_file_transformation cft;
|
||||
cft.OUT = OUT;
|
||||
cft.trans = NULL;
|
||||
TextFiles::read(F, FALSE, "can't open TeX file", TRUE,
|
||||
Patterns::transform_CSS, NULL, (void *) &cft);
|
||||
}
|
|
@ -186,7 +186,7 @@ void Makefiles::scan_makefile_line(text_stream *line, text_file_position *tfp, v
|
|||
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);
|
||||
web_md *Wm = Reader::load_web_md(Pathnames::from_text(mr.exp[2]), NULL, MS->search_path, 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 = marker;
|
||||
|
|
|
@ -29,6 +29,7 @@ Chapter 1: Top Level
|
|||
Configuration
|
||||
The Swarm
|
||||
Patterns
|
||||
Assets, Plugins and Colour Schemes
|
||||
|
||||
Chapter 2: Parsing a Web
|
||||
"Reading in the entire text of the web, parsing its structure and looking for
|
||||
|
@ -70,7 +71,6 @@ Chapter 5: Formats
|
|||
TeX Format
|
||||
HTML Formats
|
||||
Debugging Format
|
||||
Weave Plugins
|
||||
TeX Utilities
|
||||
|
||||
Chapter 6: Extras
|
||||
|
|
|
@ -5,7 +5,7 @@ Extension: ".w"
|
|||
colouring {
|
||||
=> !plain
|
||||
# Detect Property: Value lines, not being fooled by a colon inside quotes
|
||||
brackets in /\s*([A-Z][^"]*):(.*)/ {
|
||||
brackets in /\s*([A-Za-z][^"]*):(.*)/ {
|
||||
number 1 => !element
|
||||
number 2 => !string
|
||||
}
|
||||
|
|
|
@ -70,7 +70,7 @@ set them ourselves.
|
|||
format: F
|
||||
=
|
||||
sets the format. At present, this must be |HTML|, |plain| (plain text),
|
||||
|ePub|, |TeX|, |DVI|, or |PDF|.
|
||||
|ePub|, |TeX|, or |TestingInweb|.
|
||||
|
||||
= (text as Inweb)
|
||||
number sections: yes
|
||||
|
@ -79,14 +79,6 @@ sets the format. At present, this must be |HTML|, |plain| (plain text),
|
|||
causes the weaver to apply numbers to section headings: the first included will
|
||||
be number 1, and so on. Default is |no|.
|
||||
|
||||
= (text as Inweb)
|
||||
embed CSS: yes
|
||||
embed CSS: no
|
||||
=
|
||||
causes the weaver to embed copies of CSS files into each HTML file it creates,
|
||||
rather than to link to them. Default is |no|, and there's no effect on non-HTML
|
||||
formats.
|
||||
|
||||
= (text as Inweb)
|
||||
default range: R
|
||||
=
|
||||
|
@ -131,7 +123,7 @@ make |Whatever.pdf| as expected.
|
|||
As soon as any command in the list fails, Inweb halts with an error. To see
|
||||
the exact shell commands being issued, run Inweb with |-verbose|.
|
||||
|
||||
@h Plugins.
|
||||
@h Plugins and assets.
|
||||
Plugins are named bundles of resources which are sometimes added to a weave,
|
||||
and sometimes not, depending on its needs; they are placed in the pattern's
|
||||
folder, and Inweb has access to the plugins not only for the current pattern,
|
||||
|
@ -172,8 +164,20 @@ but with your preferred plugin names:
|
|||
presently tread on the |MathJax3| plugin, so right now it's not possible to
|
||||
have mathematics in a footnote when |Bigfoot| is in use.
|
||||
|
||||
@ It's also possible to supply your own version of any plugin you would like
|
||||
to tinker with. If you want |Carousel| to have rather different CSS effects,
|
||||
@ So what's in a plugin? A plugin is simply a set of "assets", which are
|
||||
individual files stored in the plugin's directory. A typical asset might be
|
||||
a CSS file to help making web pages, or a file of TeX macros to help
|
||||
typeset a PDF.
|
||||
|
||||
Plugin inclusion happens like this:
|
||||
(a) for each file Inweb weaves, it includes only the plugins it needs;
|
||||
(b) if it needs |X|, Inweb includes every asset -- meaning, every file whose
|
||||
name does not begin with a |.| -- from the |X| subdirectory of the pattern,
|
||||
or from the |X| subdirectory of any pattern it is based on;
|
||||
(c) but it never includes the same-named asset twice.
|
||||
|
||||
@ This means it's possible to supply your own version of any plugin you would
|
||||
like to tinker with. If you want |Carousel| to have rather different CSS effects,
|
||||
for example, make your own copy of |Carousel| (copying it from the one in
|
||||
the Inweb distribution at |inweb/Patterns/HTML/Carousel|) and place it in your
|
||||
own pattern. Files in your version will prevail over files in the built-in one.
|
||||
|
@ -196,20 +200,58 @@ the |Base| plugin from |HTML|. (|MonoGitHub| is based on |GitHubPages|, but
|
|||
that in turn is based on |HTML|.) All the other files of |Base| remain as
|
||||
they were, and there's no need to provide duplicates here.
|
||||
|
||||
@ So what's in a plugin? There's not much to it. Every file in a plugin, whose
|
||||
name does not begin with a |.|, is copied into the weave: that means it either
|
||||
gets copied to the weave destination directory, or possibly to the |assets|
|
||||
directory specified in the colony file (if there is one). However:
|
||||
(a) If the format is HTML, and the filename ends |.css|, then a link to the
|
||||
CSS file is automatically included in the head of the file. If the pattern
|
||||
says to |embed CSS| (see above), then the file is spliced in rather than
|
||||
being copied.
|
||||
(b) If the format is HTML, and the filename ends |.js|, then a link to the
|
||||
Javascript file is automatically included in the head of the file.
|
||||
@ But wait, there's more. How is an asset actually "included"? The pattern
|
||||
gets to decide this, based on the file-type of the asset, as expressed by
|
||||
its filename extension. For example, the TeX pattern says:
|
||||
= (text)
|
||||
assets: .tex embed
|
||||
=
|
||||
This admittedly cryptic line tells Inweb that when it includes plugins for
|
||||
this pattern, any assets ending |.tex| should be "embedded", rather than
|
||||
copied. There are four things it can do:
|
||||
(1) |copy|. This is the default, and means that the file is simply copied
|
||||
into the weave directory, or into the |assets| directory specified in the
|
||||
colony file, if the user gave one with |-colony|.
|
||||
(2) |private copy|. The same, but this is never put into the shared |assets|
|
||||
directory: it's always copied alongside the woven files for the web.
|
||||
(3) |embed|. The file is not copied. Instead, its entire contents are
|
||||
pasted into the woven file itself, when the |[[Plugins]]| placeholder in
|
||||
the template is expanded (see below). Do not use this for binary files.
|
||||
(4) |collate|. The file is not copied. Instead, its entire contents are
|
||||
pasted into the woven file itself, when the |[[Plugins]]| placeholder in
|
||||
the template is expanded (see below); but this is done as a further collation,
|
||||
not a simple transcription, so any placeholders found in the file will
|
||||
themselves be expanded. Do not use this for binary files.
|
||||
|
||||
For example, the |Breadcrumbs| plugin contains an image file and a CSS file;
|
||||
both are copied across, but a link to the CSS file is also included in the
|
||||
woven file needing to use the plugin.
|
||||
@ In addition, the pattern can specify that some text referring to the
|
||||
asset file should be put into the woven file. For example, an HTML pattern
|
||||
might say this:
|
||||
= (text as Inweb)
|
||||
assets: .js copy
|
||||
assets: .js prefix = <script src="URL"></script>
|
||||
assets: .css copy
|
||||
assets: .css prefix = <link href="URL" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
assets: .css transform names
|
||||
=
|
||||
With that done, any Javascript or CSS files in its plugins will be copied over,
|
||||
but links to them will be placed into the header of the HTML file being woven.
|
||||
(The text |URL|, in a prefix or suffix, expands to the relative URL from the
|
||||
path being woven to the asset file.)
|
||||
|
||||
The unique command "transform names", which should be used only for CSS,
|
||||
enables the colour-scheme renaming business described below.
|
||||
|
||||
An alternative scheme would be to embed all CSS and Javascript, thus producing
|
||||
a stand-alone HTML file. This could be achieved by:
|
||||
= (text as Inweb)
|
||||
assets: .js embed
|
||||
assets: .js prefix = <script>
|
||||
assets: .js suffix = </script>
|
||||
assets: .css embed
|
||||
assets: .css prefix = <style type="text/css">
|
||||
assets: .css suffix = </style>
|
||||
assets: .css transform names
|
||||
=
|
||||
|
||||
@h Embeddings.
|
||||
Patterns with the HTML format may also want to provide "embeddings". These
|
||||
|
|
|
@ -4,3 +4,9 @@ default range: sections
|
|||
plugin: Base
|
||||
mathematics plugin: MathJax3
|
||||
footnotes plugin: Bigfoot
|
||||
assets: .html collate
|
||||
assets: .js copy
|
||||
assets: .js prefix = <script src="URL"></script>
|
||||
assets: .css copy
|
||||
assets: .css prefix = <link href="URL" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
assets: .css transform names
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
name: TeX
|
||||
format: TeX
|
||||
plugin: Base
|
||||
assets: .tex embed
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
name: TestingInweb
|
||||
format: Debugging
|
||||
format: TestingInweb
|
||||
default range: sections
|
||||
|
|
|
@ -300,9 +300,9 @@ Renderers should make requests for weave plugins or colour schemes if, and
|
|||
only if, the need arises: for example, the HTML renderer requests the plugin
|
||||
|Carousel| only if an image carousel is actually called for. Requests are
|
||||
made by calling //Swarm::ensure_plugin// or //Swarm::ensure_colour_scheme//,
|
||||
and see also the underlying code at //Weave Plugins//. (We want our HTML to
|
||||
run as little JavaScript as necessary at load time, which is why we don't
|
||||
just give every weave every possible facility.)
|
||||
and see also the underlying code at //Assets, Plugins and Colour Schemes//.
|
||||
(We want our HTML to run as little JavaScript as necessary at load time, which
|
||||
is why we don't just give every weave every possible facility.)
|
||||
|
||||
The most complex issue for HTML rendering is working out the URLs for links:
|
||||
for example, when weaving the text you are currently reading, Inweb has to
|
||||
|
|
3566
Tangled/inweb.c
3566
Tangled/inweb.c
File diff suppressed because it is too large
Load diff
Binary file not shown.
|
@ -244,7 +244,7 @@
|
|||
% Weave of 'Complete Program' generated by Inweb
|
||||
\weavesectionss{}{Summing Primes}{Summing Primes\quad$\P$}{\P}{}%
|
||||
\smallskip\par\noindent{\it Here we verify the conjecture for small numbers.}\smallskip\noindent
|
||||
\weavesection{1}{Dunno}{\quad$\S$1}{\S}{S/sp}%
|
||||
\weavesection{1}{}{\quad$\S$1}{\S}{S/sp}%
|
||||
On 7 June 1742, Christian Goldbach wrote a letter from Moscow to Leonhard
|
||||
Euler in Berlin making ``eine conjecture hazardiren'' that every even number
|
||||
greater than $2$ can be written as a sum of two primes.\footnote{${}^{1}$}{ ``Greater than 2'' is our later proviso: Goldbach needed no such exception
|
||||
|
@ -268,7 +268,7 @@ evenly-enough spread, for Goldbach to be right. It is known that:
|
|||
\item{(a)}every even number is a sum of at most six primes (Ramaré, 1995), and
|
||||
\item{(b)}every odd number is a sum of at most five (Tao, 2012).
|
||||
|
||||
\weavesection{2}{Dunno}{\quad$\S$2}{\S}{S/sp}%
|
||||
\weavesection{2}{}{\quad$\S$2}{\S}{S/sp}%
|
||||
Computer verification has been made up to around $10^{18}$, but by rather
|
||||
better methods than the one we use here. We will only go up to:
|
||||
|
||||
|
@ -283,7 +283,7 @@ better methods than the one we use here. We will only go up to:
|
|||
\smallskip\par\noindent | |\pdfstartlink attr{/C [0.9 0 0] /Border [0 0 0]} goto num 100 $\langle${\xreffont\pdfliteral direct{1 1 0 0 k}Solve Goldbach's conjecture for i {\sevenss 2.1}}\special{PDF:0 g}$\rangle$ \pdfendlink|;|\special{PDF:0 g}||
|
||||
\smallskip\par\noindent |}|\special{PDF:0 g}||
|
||||
\endlines
|
||||
\weavesection{2.1}{Dunno}{\quad$\S$2.1}{\S}{S/sp}%
|
||||
\weavesection{2.1}{}{\quad$\S$2.1}{\S}{S/sp}%
|
||||
This ought to print:
|
||||
|
||||
\beginlines
|
||||
|
@ -314,7 +314,7 @@ twice over (thus $8 = 3+5 = 5+3$, but that's hardly two different ways).
|
|||
\weavesectionss{}{The Sieve of Eratosthenes}{The Sieve of Eratosthenes\quad$\P$}{\P}{}%
|
||||
\smallskip\par\noindent{\it A fairly fast way to determine if small numbers are prime, given storage.}\smallskip\noindent
|
||||
\medskip\hrule\smallskip\par\noindent{\usagefont S1~Storage; S2~Primality}\par\medskip\hrule\bigskip
|
||||
\weavesection{1}{Dunno}{\quad$\S$1}{\S}{S/tsoe}%
|
||||
\weavesection{1}{}{\quad$\S$1}{\S}{S/tsoe}%
|
||||
This technique, still essentially the best sieve for finding prime
|
||||
numbers, is attributed to Eratosthenes of Cyrene and dates from the 200s BC.
|
||||
Since composite numbers are exactly those numbers which are multiples of
|
||||
|
@ -330,7 +330,7 @@ for primality.
|
|||
\smallskip\par\noindent |int|\special{PDF:0 g}| still_in_sieve|\special{PDF:0 g}|[RANGE|\special{PDF:0 g}| + 1|\special{PDF:0 g}|];|
|
||||
\smallskip\par\noindent |int|\special{PDF:0 g}| sieve_performed|\special{PDF:0 g}| = FALSE|\special{PDF:0 g}|;|
|
||||
\endlines
|
||||
\weavesection{2}{Dunno}{\quad$\S$2}{\S}{S/tsoe}%
|
||||
\weavesection{2}{}{\quad$\S$2}{\S}{S/tsoe}%
|
||||
We provide this as a function which determines whether a number is prime:
|
||||
|
||||
\beginlines
|
||||
|
@ -345,7 +345,7 @@ We provide this as a function which determines whether a number is prime:
|
|||
\smallskip\par\noindent | return|\special{PDF:0 g}| still_in_sieve|\special{PDF:0 g}|[n|\special{PDF:0 g}|];|
|
||||
\smallskip\par\noindent |}|
|
||||
\endlines
|
||||
\weavesection{2.1}{Dunno}{\quad$\S$2.1}{\S}{S/tsoe}%
|
||||
\weavesection{2.1}{}{\quad$\S$2.1}{\S}{S/tsoe}%
|
||||
We save a little time by noting that if a number up to ||\special{PDF:0 g}|RANGE|\special{PDF:0 g}|| is composite
|
||||
then one of its factors must be smaller than the square root of ||\special{PDF:0 g}|RANGE|\special{PDF:0 g}||. Thus,
|
||||
in a sieve of size 10000, one only needs to remove multiples of 2 up to 100,
|
||||
|
@ -362,7 +362,7 @@ for example.
|
|||
\endlines
|
||||
\par\noindent\penalty10000
|
||||
{\usagefont This code is used in $\S$2.}\smallskip
|
||||
\weavesection{2.1.1}{Dunno}{\quad$\S$2.1.1}{\S}{S/tsoe}%
|
||||
\weavesection{2.1.1}{}{\quad$\S$2.1.1}{\S}{S/tsoe}%
|
||||
\smallskip\par\noindent ||\pdfdest num 102 fit $\langle${\xreffont\pdfliteral direct{1 1 0 0 k}Start with all numbers from 2 upwards in the sieve {\sevenss 2.1.1}}\special{PDF:0 g}$\rangle$ $\equiv$||
|
||||
|
||||
\beginlines
|
||||
|
@ -371,7 +371,7 @@ for example.
|
|||
\endlines
|
||||
\par\noindent\penalty10000
|
||||
{\usagefont This code is used in $\S$2.1.}\smallskip
|
||||
\weavesection{2.1.2}{Dunno}{\quad$\S$2.1.2}{\S}{S/tsoe}%
|
||||
\weavesection{2.1.2}{}{\quad$\S$2.1.2}{\S}{S/tsoe}%
|
||||
\smallskip\par\noindent ||\pdfdest num 103 fit $\langle${\xreffont\pdfliteral direct{1 1 0 0 k}Shake out multiples of n {\sevenss 2.1.2}}\special{PDF:0 g}$\rangle$ $\equiv$||
|
||||
|
||||
\beginlines
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 186 KiB |
Binary file not shown.
Before Width: | Height: | Size: 581 KiB |
Binary file not shown.
Before Width: | Height: | Size: 51 KiB |
474
docs/inweb/1-apacs.html
Normal file
474
docs/inweb/1-apacs.html
Normal file
|
@ -0,0 +1,474 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Assets, Plugins and Colour Schemes</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Octagram.png" width=72 height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="index.html"><span class="selectedlink">inweb</span></a></li>
|
||||
</ul><h2>Foundation Module</h2><ul>
|
||||
<li><a href="../foundation-module/index.html">foundation</a></li>
|
||||
<li><a href="../foundation-test/index.html">foundation-test</a></li>
|
||||
</ul><h2>Example Webs</h2><ul>
|
||||
<li><a href="../goldbach/index.html">goldbach</a></li>
|
||||
<li><a href="../twinprimes/twinprimes.html">twinprimes</a></li>
|
||||
<li><a href="../eastertide/index.html">eastertide</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inweb"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inform/docs/index.html">inform</a></li>
|
||||
<li><a href="../../../intest/docs/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Assets, Plugins and Colour Schemes' generated by Inweb-->
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">inweb</a></li><li><a href="index.html#1">Chapter 1: Top Level</a></li><li><b>Assets, Plugins and Colour Schemes</b></li></ul><p class="purpose">Mainly for HTML, to add the necessary JavaScript for unusual requirements such as equations or footnotes.</p>
|
||||
|
||||
<ul class="toc"><li><a href="1-apacs.html#SP1">§1. Creation</a></li><li><a href="1-apacs.html#SP5">§5. Plugin inclusion</a></li><li><a href="1-apacs.html#SP8">§8. Asset rules lists</a></li><li><a href="1-apacs.html#SP12">§12. Inclusion of assets</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. Creation. </b>At present, plugins are simply their names: Inweb knows as little as possible
|
||||
about what they do. The model is just that a file being woven either does or
|
||||
does not need a plugin of a given name.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">weave_plugin</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">plugin_name</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">last_included_in_round</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure weave_plugin is accessed in 1/ts and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">weave_plugin</span><span class="plain-syntax"> *</span><span class="function-syntax">Assets::new</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Assets::new</span></span>:<br>The Swarm - <a href="1-ts.html#SP3">§3</a><br>Patterns - <a href="1-ptt.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">wp</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_plugin</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_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">plugin_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">plugin_name</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">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">last_included_in_round</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. </b>And almost the same can be said about colour schemes, except that these we
|
||||
actually look for: they will be available to some patterns and not others.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">colour_scheme</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">scheme_name</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">prefix</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">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">at</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">last_included_in_round</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure colour_scheme is accessed in 5/ee, 1/ts, 5/hf and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">colour_scheme</span><span class="plain-syntax"> *</span><span class="function-syntax">Assets::find_colour_scheme</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Assets::find_colour_scheme</span></span>:<br>The Swarm - <a href="1-ts.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</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">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pre</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">cs</span><span class="plain-syntax">, </span><span class="reserved-syntax">colour_scheme</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_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">scheme_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cs</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">css</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">css</span><span class="plain-syntax">, </span><span class="string-syntax">"%S.css"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</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="1-ptt.html#SP7" class="function-link"><span class="function-syntax">Patterns::find_file_in_subdirectory</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Colouring"</span><span class="plain-syntax">, </span><span class="identifier-syntax">css</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">F</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><a href="1-ptt.html#SP7" class="function-link"><span class="function-syntax">Patterns::find_file_in_subdirectory</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Coloring"</span><span class="plain-syntax">, </span><span class="identifier-syntax">css</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">css</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">F</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">scheme_name</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">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">at</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">cs</span><span class="plain-syntax">-></span><span class="element-syntax">prefix</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">pre</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">last_included_in_round</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><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">pre</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">prefix</span><span class="plain-syntax">, </span><span class="string-syntax">"-"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5"></a><b>§5. Plugin inclusion. </b>Plugins are included both by the pattern, if they are needed for anything
|
||||
woven to that pattern, and by the individual weave order, if a particular
|
||||
need has arisen on a particular file.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">current_inclusion_round</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assets::include_relevant_plugins</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Assets::include_relevant_plugins</span></span>:<br>The Collater - <a href="3-tc.html#SP5_1_8_4">§5.1.8.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_inclusion_round</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_INDENT</span><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ptt.html#SP8" class="function-link"><span class="function-syntax">Patterns::include_plugins</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">wv</span><span class="plain-syntax">) </span><a href="1-ts.html#SP3" class="function-link"><span class="function-syntax">Swarm::include_plugins</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_OUTDENT</span><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. </b>Those two functions both repeatedly call the functions <a href="1-apacs.html#SP6" class="internal">Assets::include_plugin</a>
|
||||
and <a href="1-apacs.html#SP7" class="internal">Assets::include_colour_scheme</a> as needed, so these are declared next.
|
||||
</p>
|
||||
|
||||
<p class="commentary">A plugin can only be included once in each round, i.e., for each woven file,
|
||||
no matter how many times this is called.
|
||||
</p>
|
||||
|
||||
<p class="commentary">To include a plugin is by definition to include its assets. These may be held
|
||||
either in the current pattern, or in the one it is based on, or the one
|
||||
that in turn is based on, and so forth. The first-discovered asset wins:
|
||||
i.e., if the current pattern's copy of the asset contains <span class="extract"><span class="extract-syntax">MyAsset.png</span></span> then
|
||||
this prevails over any <span class="extract"><span class="extract-syntax">MyAsset.png</span></span> held by patterns further down. To do
|
||||
this, we store the leafnames in a dictionary.
|
||||
</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">Assets::include_plugin</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Assets::include_plugin</span></span>:<br>The Swarm - <a href="1-ts.html#SP3">§3</a><br>Patterns - <a href="1-ptt.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wp</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">last_included_in_round</span><span class="plain-syntax"> == </span><span class="identifier-syntax">current_inclusion_round</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">last_included_in_round</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_inclusion_round</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">verbose_mode</span><span class="plain-syntax">) </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"Include plugin '%S'\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">plugin_name</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">finds</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">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">leaves_gathered</span><span class="plain-syntax"> = </span><a href="../foundation-module/2-dct.html#SP2" class="function-link"><span class="function-syntax">Dictionaries::new</span></a><span class="plain-syntax">(128, </span><span class="constant-syntax">TRUE</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">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">based_on</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-pth.html#SP4" class="function-link"><span class="function-syntax">Pathnames::down</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">pattern_location</span><span class="plain-syntax">, </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">plugin_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">scan_directory</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-drc.html#SP2" class="function-link"><span class="function-syntax">Directories::open</span></a><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">if</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">leafname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><a href="../foundation-module/3-drc.html#SP2" class="function-link"><span class="function-syntax">Directories::next</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</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_last_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">leafname</span><span class="plain-syntax">) != </span><span class="constant-syntax">FOLDER_SEPARATOR</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_first_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">leafname</span><span class="plain-syntax">) != </span><span class="character-syntax">'.'</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/2-dct.html#SP5" class="function-link"><span class="function-syntax">Dictionaries::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">leaves_gathered</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><a href="../foundation-module/2-dct.html#SP9" class="function-link"><span class="function-syntax">Dictionaries::create_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">leaves_gathered</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</span><span class="plain-syntax">), </span><span class="string-syntax">"y"</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><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-apacs.html#SP12" class="function-link"><span class="function-syntax">Assets::include_asset</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="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">finds</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">leafname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/3-drc.html#SP2" class="function-link"><span class="function-syntax">Directories::close</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</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">finds</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="string-syntax">"The plugin '%S' is not supported"</span><span class="plain-syntax">, </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">plugin_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pc.html#SP8" class="function-link"><span class="function-syntax">Main::error_in_web</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7"></a><b>§7. </b>Colour schemes are CSS files held slightly differently, in the <span class="extract"><span class="extract-syntax">Colouring</span></span>
|
||||
subdirectory of (presumably) an HTML-based pattern.
|
||||
</p>
|
||||
|
||||
<p class="commentary">A colour scheme can only be included once in each round, i.e., for each woven
|
||||
file, no matter how many times this is called.
|
||||
</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">Assets::include_colour_scheme</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Assets::include_colour_scheme</span></span>:<br>The Swarm - <a href="1-ts.html#SP3">§3</a><br>Patterns - <a href="1-ptt.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cs</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">last_included_in_round</span><span class="plain-syntax"> == </span><span class="identifier-syntax">current_inclusion_round</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">last_included_in_round</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_inclusion_round</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">verbose_mode</span><span class="plain-syntax">) </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"Include colour scheme '%S'\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">scheme_name</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">css</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">css</span><span class="plain-syntax">, </span><span class="string-syntax">"%S.css"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">scheme_name</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="1-ptt.html#SP7" class="function-link"><span class="function-syntax">Patterns::find_file_in_subdirectory</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Colouring"</span><span class="plain-syntax">, </span><span class="identifier-syntax">css</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">F</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><a href="1-ptt.html#SP7" class="function-link"><span class="function-syntax">Patterns::find_file_in_subdirectory</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Coloring"</span><span class="plain-syntax">, </span><span class="identifier-syntax">css</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">F</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="string-syntax">"No CSS file for the colour scheme '%S' can be found"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">scheme_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pc.html#SP8" class="function-link"><span class="function-syntax">Main::error_in_web</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">err</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">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-apacs.html#SP12" class="function-link"><span class="function-syntax">Assets::include_asset</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="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">prefix</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">css</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8"></a><b>§8. Asset rules lists. </b>The practical effect of the two function above, then, is to call
|
||||
<a href="1-apacs.html#SP12" class="internal">Assets::include_asset</a> on each asset needed. What that function does
|
||||
is highly configurable by the pattern, so we now have to show how. Each
|
||||
different filename extension, such as <span class="extract"><span class="extract-syntax">.jpg</span></span>, has its own rule for what to do:
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">EMBED_ASSET_METHOD</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">COPY_ASSET_METHOD</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">PRIVATE_COPY_ASSET_METHOD</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">COLLATE_ASSET_METHOD</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">asset_rule</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">applies_to</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="reserved-syntax">method</span><span class="plain-syntax">; </span><span class="comment-syntax"> one of the </span><span class="extract"><span class="extract-syntax">*_ASSET_METHOD</span></span><span class="comment-syntax"> values above</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">pre</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">post</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">transform_names</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">asset_rule</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure asset_rule is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9"></a><b>§9. </b>A pattern has a list of such rules, as follows. In each list, exactly one
|
||||
rule has the empty text as its <span class="extract"><span class="extract-syntax">applies_to</span></span>: that one is the default, for any
|
||||
file whose extension does not appear in the rules list.
|
||||
</p>
|
||||
|
||||
<p class="commentary">(The default rule is to copy the file as a binary object, doing nothing fancy.)
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="function-syntax">Assets::new_asset_rules_list</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">Assets::new_asset_rules_list</span></span>:<br>Patterns - <a href="1-ptt.html#SP2_1">§2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">asset_rule</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-apacs.html#SP10" class="function-link"><span class="function-syntax">Assets::add_asset_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</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">I</span><span class="string-syntax">"copy"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10"></a><b>§10. </b>This is called by <a href="1-ptt.html" class="internal">Patterns</a> in response to <span class="extract"><span class="extract-syntax">assets: EXT CMD</span></span> commands. The
|
||||
<span class="extract"><span class="extract-syntax">CMD</span></span> part is in <span class="extract"><span class="extract-syntax">line</span></span>.
|
||||
</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">Assets::add_asset_rule</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">Assets::add_asset_rule</span></span>:<br><a href="1-apacs.html#SP9">§9</a><br>Patterns - <a href="1-ptt.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ext</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">asset_rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><a href="1-apacs.html#SP10" class="function-link"><span class="function-syntax">Assets::new_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">, </span><span class="identifier-syntax">line</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">asset_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">asset_rule</span><span class="plain-syntax"> *</span><span class="function-syntax">Assets::new_rule</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Assets::new_rule</span></span>:<br>HTML Formats - <a href="5-hf.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ext</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">asset_rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</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">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">asset_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">applies_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-apacs.html#SP10_2" class="named-paragraph-link"><span class="named-paragraph">Use this R</span><span class="named-paragraph-number">10.2</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">asset_rule</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">applies_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">ext</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-apacs.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Set R to defaults</span><span class="named-paragraph-number">10.1</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-apacs.html#SP10_2" class="named-paragraph-link"><span class="named-paragraph">Use this R</span><span class="named-paragraph-number">10.2</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10_1"></a><b>§10.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set R to defaults</span><span class="named-paragraph-number">10.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">method</span><span class="plain-syntax"> = </span><span class="constant-syntax">COPY_ASSET_METHOD</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">pre</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">R</span><span class="plain-syntax">-></span><span class="element-syntax">post</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">R</span><span class="plain-syntax">-></span><span class="element-syntax">transform_names</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-apacs.html#SP10">§10</a>, <a href="1-apacs.html#SP10_2">§10.2</a> (four times).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10_2"></a><b>§10.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Use this R</span><span class="named-paragraph-number">10.2</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">cmd</span><span class="plain-syntax"> = </span><span class="identifier-syntax">line</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">detail</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">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">line</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="plain-syntax"> </span><span class="identifier-syntax">cmd</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="identifier-syntax">detail</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="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">cmd</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"copy"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-apacs.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Set R to defaults</span><span class="named-paragraph-number">10.1</span></span></a><span class="plain-syntax">; </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">method</span><span class="plain-syntax"> = </span><span class="constant-syntax">COPY_ASSET_METHOD</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#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"private copy"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-apacs.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Set R to defaults</span><span class="named-paragraph-number">10.1</span></span></a><span class="plain-syntax">; </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">method</span><span class="plain-syntax"> = </span><span class="constant-syntax">PRIVATE_COPY_ASSET_METHOD</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#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"embed"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-apacs.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Set R to defaults</span><span class="named-paragraph-number">10.1</span></span></a><span class="plain-syntax">; </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">method</span><span class="plain-syntax"> = </span><span class="constant-syntax">EMBED_ASSET_METHOD</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#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"collate"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-apacs.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Set R to defaults</span><span class="named-paragraph-number">10.1</span></span></a><span class="plain-syntax">; </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">method</span><span class="plain-syntax"> = </span><span class="constant-syntax">COLLATE_ASSET_METHOD</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#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"prefix"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">pre</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">detail</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#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"suffix"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">post</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">detail</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#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"transform names"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">transform_names</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><a href="../foundation-module/3-em.html#SP5" class="function-link"><span class="function-syntax">Errors::in_text_file</span></a><span class="plain-syntax">(</span><span class="string-syntax">"no such asset command"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-apacs.html#SP10">§10</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11"></a><b>§11. </b>Given a filename <span class="extract"><span class="extract-syntax">F</span></span> for some asset, which rule applies to it? The answer
|
||||
is that if the current pattern, or any pattern it is based on, defines a rule,
|
||||
then the topmost one applies; and otherwise the default rule applies.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">asset_rule</span><span class="plain-syntax"> *</span><span class="function-syntax">Assets::applicable_rule</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Assets::applicable_rule</span></span>:<br><a href="1-apacs.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/3-fln.html#SP8" class="function-link"><span class="function-syntax">Filenames::write_extension</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</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">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">based_on</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">asset_rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">asset_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">asset_rules</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_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">applies_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">asset_rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">asset_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">-></span><span class="element-syntax">asset_rules</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_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">applies_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no default asset rule"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12"></a><b>§12. Inclusion of assets. </b>Finally, then, we can include a single asset. This has already been located,
|
||||
at filename <span class="extract"><span class="extract-syntax">F</span></span>, and we now know how to find the applicable rule.
|
||||
</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">Assets::include_asset</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">Assets::include_asset</span></span>:<br><a href="1-apacs.html#SP6">§6</a>, <a href="1-apacs.html#SP7">§7</a><br>HTML Formats - <a href="5-hf.html#SP5_10">§5.10</a>, <a href="5-hf.html#SP5_11">§5.11</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">asset_rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">trans</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><a href="1-apacs.html#SP11" class="function-link"><span class="function-syntax">Assets::applicable_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">AP</span><span class="plain-syntax"> = </span><a href="6-cln.html#SP9" class="function-link"><span class="function-syntax">Colonies::assets_path</span></a><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">AP</span><span class="plain-syntax">) </span><a href="../foundation-module/3-pth.html#SP8" class="function-link"><span class="function-syntax">Pathnames::relative_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><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">from</span><span class="plain-syntax">), </span><span class="identifier-syntax">AP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><a href="../foundation-module/3-fln.html#SP7" class="function-link"><span class="function-syntax">Filenames::get_leafname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</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">R</span><span class="plain-syntax">-></span><span class="identifier-syntax">transform_names</span><span class="plain-syntax"> == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">trans</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">R</span><span class="plain-syntax">-></span><span class="element-syntax">pre</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="1-apacs.html#SP12_1" class="named-paragraph-link"><span class="named-paragraph">Embed the prefix, if any</span><span class="named-paragraph-number">12.1</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">method</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">EMBED_ASSET_METHOD:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-apacs.html#SP12_2" class="named-paragraph-link"><span class="named-paragraph">Embed asset</span><span class="named-paragraph-number">12.2</span></span></a><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">COPY_ASSET_METHOD:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-apacs.html#SP12_3" class="named-paragraph-link"><span class="named-paragraph">Copy asset</span><span class="named-paragraph-number">12.3</span></span></a><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PRIVATE_COPY_ASSET_METHOD:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-apacs.html#SP12_3" class="named-paragraph-link"><span class="named-paragraph">Copy asset</span><span class="named-paragraph-number">12.3</span></span></a><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">COLLATE_ASSET_METHOD:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-apacs.html#SP12_4" class="named-paragraph-link"><span class="named-paragraph">Collate asset</span><span class="named-paragraph-number">12.4</span></span></a><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><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">R</span><span class="plain-syntax">-></span><span class="element-syntax">post</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="1-apacs.html#SP12_5" class="named-paragraph-link"><span class="named-paragraph">Embed the suffix, if any</span><span class="named-paragraph-number">12.5</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12_1"></a><b>§12.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Embed the prefix, if any</span><span class="named-paragraph-number">12.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">R</span><span class="plain-syntax">-></span><span class="element-syntax">pre</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#SP26" class="function-link"><span class="function-syntax">Str::includes_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">pre</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"URL"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">PUT</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">R</span><span class="plain-syntax">-></span><span class="element-syntax">pre</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-apacs.html#SP12">§12</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12_2"></a><b>§12.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Embed asset</span><span class="named-paragraph-number">12.2</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">verbose_mode</span><span class="plain-syntax">) </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"Embed asset %f\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-apacs.html#SP13" class="function-link"><span class="function-syntax">Assets::transform</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">trans</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-apacs.html#SP12">§12</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12_3"></a><b>§12.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Copy asset</span><span class="named-paragraph-number">12.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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">verbose_mode</span><span class="plain-syntax">) </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"Copy asset %f\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">H</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">redirect_weaves_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">H</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">H</span><span class="plain-syntax"> = </span><a href="2-tr.html#SP7" class="function-link"><span class="function-syntax">Reader::woven_folder</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">AP</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">method</span><span class="plain-syntax"> != </span><span class="constant-syntax">PRIVATE_COPY_ASSET_METHOD</span><span class="plain-syntax">)) </span><span class="identifier-syntax">H</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AP</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">trans</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">text_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">css_S</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">G</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><span class="identifier-syntax">H</span><span class="plain-syntax">, </span><a href="../foundation-module/3-fln.html#SP7" class="function-link"><span class="function-syntax">Filenames::get_leafname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</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">css_S</span><span class="plain-syntax">, </span><span class="identifier-syntax">G</span><span class="plain-syntax">, </span><span class="constant-syntax">ISO_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 tangled file"</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-apacs.html#SP13" class="function-link"><span class="function-syntax">Assets::transform</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">css_S</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">trans</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_CLOSE</span><span class="plain-syntax">(&</span><span class="identifier-syntax">css_S</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/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><span class="identifier-syntax">H</span><span class="plain-syntax">, </span><span class="string-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">W</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_ebook</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">rel</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><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><a href="../foundation-module/3-fln.html#SP7" class="function-link"><span class="function-syntax">Filenames::get_leafname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/5-ee.html#SP5" class="function-link"><span class="function-syntax">Epub::note_image</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">as_ebook</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-apacs.html#SP12">§12</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12_4"></a><b>§12.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Collate asset</span><span class="named-paragraph-number">12.4</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">verbose_mode</span><span class="plain-syntax">) </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"Collate asset %f\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tc.html#SP1" class="function-link"><span class="function-syntax">Collater::for_web_and_pattern</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-apacs.html#SP12">§12</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12_5"></a><b>§12.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Embed the suffix, if any</span><span class="named-paragraph-number">12.5</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">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">R</span><span class="plain-syntax">-></span><span class="element-syntax">post</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#SP26" class="function-link"><span class="function-syntax">Str::includes_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">post</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"URL"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">PUT</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">R</span><span class="plain-syntax">-></span><span class="element-syntax">post</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-apacs.html#SP12">§12</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13"></a><b>§13. </b>"Transforming" is what happens to a CSS file to change the class names of
|
||||
its <span class="extract"><span class="extract-syntax">span</span></span> and <span class="extract"><span class="extract-syntax">pre</span></span> styling rules, to add a prefix text. This is what changes
|
||||
the style names for colouring, say, COBOL source code from, e.g.,
|
||||
<span class="extract"><span class="extract-syntax">span.identifier-syntax</span></span> to <span class="extract"><span class="extract-syntax">span.ConsoleText-identifier-syntax</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">css_file_transformation</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">OUT</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">trans</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">css_file_transformation</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assets::transform</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Assets::transform</span></span>:<br><a href="1-apacs.html#SP12_2">§12.2</a>, <a href="1-apacs.html#SP12_3">§12.3</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">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">trans</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">css_file_transformation</span><span class="plain-syntax"> </span><span class="identifier-syntax">cft</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cft</span><span class="plain-syntax">.</span><span class="element-syntax">OUT</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">cft</span><span class="plain-syntax">.</span><span class="element-syntax">trans</span><span class="plain-syntax"> = </span><span class="identifier-syntax">trans</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-tf.html#SP5" class="function-link"><span class="function-syntax">TextFiles::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="string-syntax">"can't open file"</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-apacs.html#SP13" class="function-link"><span class="function-syntax">Assets::transformer</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) &</span><span class="identifier-syntax">cft</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Assets::transformer</span><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">css_file_transformation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cft</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">css_file_transformation</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">X</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">OUT</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cft</span><span class="plain-syntax">-></span><span class="element-syntax">OUT</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="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">spanned</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</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">line</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c*?span.)(%i+)(%c*?)"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">spanned</span><span class="plain-syntax">, </span><span class="string-syntax">"%S%S%S"</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">cft</span><span class="plain-syntax">-></span><span class="element-syntax">trans</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP15" class="function-link"><span class="function-syntax">Str::clear</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">line</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">line</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">[2]);</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">spanned</span><span class="plain-syntax">, </span><span class="string-syntax">"%S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">line</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</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">spanned</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c*?pre.)(%i+)(%c*?)"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S%S%S"</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">cft</span><span class="plain-syntax">-></span><span class="element-syntax">trans</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP15" class="function-link"><span class="function-syntax">Str::clear</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spanned</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">spanned</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">[2]);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">spanned</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">spanned</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>The structure css_file_transformation is accessed in 5/ptf, 5/tf, 5/hf, 5/df, 6/rw and here.</li></ul>
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="1-ptt.html">Back to 'Patterns'</a></li><li><i>(This section ends Chapter 1: Top Level.)</i></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -47,7 +47,8 @@
|
|||
see <a href="../foundation-module/P-abgtf.html" class="internal">A Brief Guide to Foundation (in foundation)</a>.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">breadcrumb_request_MT</span>
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">asset_rule_MT</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">breadcrumb_request_MT</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">chapter_MT</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">colony_MT</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">colony_member_MT</span>
|
||||
|
@ -132,6 +133,7 @@ see <a href="../foundation-module/P-abgtf.html" class="internal">A Brief Guide t
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">ALLOCATE_IN_ARRAYS</span><span class="plain-syntax">(</span><span class="reserved-syntax">source_line</span><span class="plain-syntax">, </span><span class="constant-syntax">1000</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">ALLOCATE_INDIVIDUALLY</span><span class="plain-syntax">(</span><span class="reserved-syntax">asset_rule</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">ALLOCATE_INDIVIDUALLY</span><span class="plain-syntax">(</span><span class="reserved-syntax">breadcrumb_request</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">ALLOCATE_INDIVIDUALLY</span><span class="plain-syntax">(</span><span class="reserved-syntax">chapter</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">ALLOCATE_INDIVIDUALLY</span><span class="plain-syntax">(</span><span class="reserved-syntax">colony</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -107,6 +107,7 @@ subfolder called <span class="extract"><span class="extract-syntax">Materials</s
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_inweb_errors</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">verbose_mode</span><span class="plain-syntax"> = </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. Main routine. </b></p>
|
||||
|
||||
|
@ -114,9 +115,10 @@ subfolder called <span class="extract"><span class="extract-syntax">Materials</s
|
|||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">main</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> **</span><span class="identifier-syntax">argv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-pc.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">Initialise inweb</span><span class="named-paragraph-number">6.1</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inweb_instructions</span><span class="plain-syntax"> </span><span class="identifier-syntax">args</span><span class="plain-syntax"> = </span><a href="1-cnf.html#SP2" class="function-link"><span class="function-syntax">Configuration::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="identifier-syntax">argv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">verbose_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">args</span><span class="plain-syntax">.</span><span class="element-syntax">verbose_switch</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">fundamental_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">args</span><span class="plain-syntax">.</span><span class="element-syntax">inweb_mode</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">path_to_inweb</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-pth.html#SP3" class="function-link"><span class="function-syntax">Pathnames::installation_path</span></a><span class="plain-syntax">(</span><span class="string-syntax">"INWEB_PATH"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"inweb"</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">args</span><span class="plain-syntax">.</span><span class="element-syntax">verbose_switch</span><span class="plain-syntax">) </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"Installation path is %p\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">path_to_inweb</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">verbose_mode</span><span class="plain-syntax">) </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"Installation path is %p\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">path_to_inweb</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">path_to_inweb_patterns</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-pth.html#SP4" class="function-link"><span class="function-syntax">Pathnames::down</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">path_to_inweb</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Patterns"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">path_to_inweb_materials</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-pth.html#SP4" class="function-link"><span class="function-syntax">Pathnames::down</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">path_to_inweb</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Materials"</span><span class="plain-syntax">);</span>
|
||||
|
||||
|
@ -150,10 +152,9 @@ program: some input, some thinking, a choice of three forms of output.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</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><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">chosen_web</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">chosen_file</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><a href="2-tr.html#SP4" class="function-link"><span class="function-syntax">Reader::load_web</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">chosen_web</span><span class="plain-syntax">, </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">chosen_file</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/8-wm.html#SP6" class="function-link"><span class="function-syntax">WebModules::make_search_path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">import_setting</span><span class="plain-syntax">), </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">verbose_switch</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/8-wm.html#SP6" class="function-link"><span class="function-syntax">WebModules::make_search_path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">import_setting</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">W</span><span class="plain-syntax">-></span><span class="identifier-syntax">redirect_weaves_to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">weave_into_setting</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tr.html#SP5" class="function-link"><span class="function-syntax">Reader::read_web</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="identifier-syntax">verbose_switch</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tr.html#SP5" class="function-link"><span class="function-syntax">Reader::read_web</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tp.html#SP1" class="function-link"><span class="function-syntax">Parser::parse_web</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">inweb_mode</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">no_inweb_errors</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
|
@ -351,11 +352,11 @@ which for many small webs will be the entire thing.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">swarm_mode</span><span class="plain-syntax"> == </span><span class="constant-syntax">SWARM_OFF_SWM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ts.html#SP2" class="function-link"><span class="function-syntax">Swarm::weave_subset</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">chosen_range</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">tag</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">weave_to_setting</span><span class="plain-syntax">, </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">weave_into_setting</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">breadcrumb_setting</span><span class="plain-syntax">, </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">navigation_setting</span><span class="plain-syntax">, </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">verbose_switch</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">breadcrumb_setting</span><span class="plain-syntax">, </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">navigation_setting</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ts.html#SP1" class="function-link"><span class="function-syntax">Swarm::weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">chosen_range</span><span class="plain-syntax">, </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">swarm_mode</span><span class="plain-syntax">, </span><span class="identifier-syntax">tag</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">weave_to_setting</span><span class="plain-syntax">, </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">weave_into_setting</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">breadcrumb_setting</span><span class="plain-syntax">, </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">navigation_setting</span><span class="plain-syntax">, </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">verbose_switch</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">breadcrumb_setting</span><span class="plain-syntax">, </span><span class="identifier-syntax">ins</span><span class="plain-syntax">-></span><span class="element-syntax">navigation_setting</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="5-fm.html#SP4" class="function-link"><span class="function-syntax">Formats::end_weaving</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
|
@ -376,7 +377,7 @@ source:
|
|||
</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">Main::error_in_web</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Main::error_in_web</span></span>:<br>Configuration - <a href="1-cnf.html#SP6">§6</a><br>The Swarm - <a href="1-ts.html#SP3">§3</a><br>The Parser - <a href="2-tp.html#SP1_1_7_3">§1.1.7.3</a>, <a href="2-tp.html#SP1_1_7_4">§1.1.7.4</a>, <a href="2-tp.html#SP1_1_7_7">§1.1.7.7</a>, <a href="2-tp.html#SP1_1_7_7_1">§1.1.7.7.1</a>, <a href="2-tp.html#SP1_1_7_5_1">§1.1.7.5.1</a>, <a href="2-tp.html#SP1_1_7_5_1_1">§1.1.7.5.1.1</a>, <a href="2-tp.html#SP1_1_7_5_1_2">§1.1.7.5.1.2</a>, <a href="2-tp.html#SP1_1_7_5_1_3">§1.1.7.5.1.3</a>, <a href="2-tp.html#SP1_1_7_5_1_4">§1.1.7.5.1.4</a>, <a href="2-tp.html#SP1_1_7_5_1_7">§1.1.7.5.1.7</a>, <a href="2-tp.html#SP1_1_4_3_1">§1.1.4.3.1</a>, <a href="2-tp.html#SP3">§3</a><br>Enumerated Constants - <a href="2-ec.html#SP3_1">§3.1</a>, <a href="2-ec.html#SP3_2">§3.2</a>, <a href="2-ec.html#SP3_3">§3.3</a><br>The Analyser - <a href="3-ta.html#SP4_1">§4.1</a><br>The Weaver - <a href="3-tw.html#SP2_7_2">§2.7.2</a>, <a href="3-tw.html#SP2_7_2_3_1_5">§2.7.2.3.1.5</a><br>The Weaver of Text - <a href="3-twot.html#SP1_4">§1.4</a><br>The Tangler - <a href="3-tt.html#SP1_1_1_1">§1.1.1.1</a>, <a href="3-tt.html#SP3_1">§3.1</a><br>Types and Functions - <a href="4-taf.html#SP7_3">§7.3</a><br>Language Methods - <a href="4-lm.html#SP10">§10</a><br>ACME Support - <a href="4-as.html#SP6">§6</a><br>C-Like Languages - <a href="4-cl.html#SP3">§3</a>, <a href="4-cl.html#SP3_1">§3.1</a>, <a href="4-cl.html#SP3_2_2_1">§3.2.2.1</a><br>HTML Formats - <a href="5-hf.html#SP5_13">§5.13</a><br>Weave Plugins - <a href="5-wp.html#SP5">§5</a>, <a href="5-wp.html#SP6">§6</a><br>Colonies - <a href="6-cln.html#SP8_4">§8.4</a>, <a href="6-cln.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sl</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Main::error_in_web</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Main::error_in_web</span></span>:<br>Configuration - <a href="1-cnf.html#SP6">§6</a><br>The Swarm - <a href="1-ts.html#SP3">§3</a><br>Assets, Plugins and Colour Schemes - <a href="1-apacs.html#SP6">§6</a>, <a href="1-apacs.html#SP7">§7</a><br>The Parser - <a href="2-tp.html#SP1_1_7_3">§1.1.7.3</a>, <a href="2-tp.html#SP1_1_7_4">§1.1.7.4</a>, <a href="2-tp.html#SP1_1_7_7">§1.1.7.7</a>, <a href="2-tp.html#SP1_1_7_7_1">§1.1.7.7.1</a>, <a href="2-tp.html#SP1_1_7_5_1">§1.1.7.5.1</a>, <a href="2-tp.html#SP1_1_7_5_1_1">§1.1.7.5.1.1</a>, <a href="2-tp.html#SP1_1_7_5_1_2">§1.1.7.5.1.2</a>, <a href="2-tp.html#SP1_1_7_5_1_3">§1.1.7.5.1.3</a>, <a href="2-tp.html#SP1_1_7_5_1_4">§1.1.7.5.1.4</a>, <a href="2-tp.html#SP1_1_7_5_1_7">§1.1.7.5.1.7</a>, <a href="2-tp.html#SP1_1_4_3_1">§1.1.4.3.1</a>, <a href="2-tp.html#SP3">§3</a><br>Enumerated Constants - <a href="2-ec.html#SP3_1">§3.1</a>, <a href="2-ec.html#SP3_2">§3.2</a>, <a href="2-ec.html#SP3_3">§3.3</a><br>The Analyser - <a href="3-ta.html#SP4_1">§4.1</a><br>The Weaver - <a href="3-tw.html#SP2_7_2">§2.7.2</a>, <a href="3-tw.html#SP2_7_2_3_1_5">§2.7.2.3.1.5</a><br>The Weaver of Text - <a href="3-twot.html#SP1_4">§1.4</a><br>The Tangler - <a href="3-tt.html#SP1_1_1_1">§1.1.1.1</a>, <a href="3-tt.html#SP3_1">§3.1</a><br>Types and Functions - <a href="4-taf.html#SP7_3">§7.3</a><br>Language Methods - <a href="4-lm.html#SP10">§10</a><br>ACME Support - <a href="4-as.html#SP6">§6</a><br>C-Like Languages - <a href="4-cl.html#SP3">§3</a>, <a href="4-cl.html#SP3_1">§3.1</a>, <a href="4-cl.html#SP3_2_2_1">§3.2.2.1</a><br>HTML Formats - <a href="5-hf.html#SP5_13">§5.13</a><br>Colonies - <a href="6-cln.html#SP8_4">§8.4</a>, <a href="6-cln.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">source_line</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sl</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">sl</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/3-em.html#SP5" class="function-link"><span class="function-syntax">Errors::in_text_file_S</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">message</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">source</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="constant-syntax">STDERR</span><span class="plain-syntax">, </span><span class="string-syntax">"%07d %S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">source</span><span class="plain-syntax">.</span><span class="element-syntax">line_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">sl</span><span class="plain-syntax">-></span><span class="element-syntax">text</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -69,7 +69,7 @@ to such a name, and to read it in. This structure holds the result:
|
|||
<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">initial_extension</span><span class="plain-syntax">; </span><span class="comment-syntax"> filename extension, that is</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">post_commands</span><span class="plain-syntax">; </span><span class="comment-syntax"> of </span><span class="extract"><span class="extract-syntax">text_stream</span></span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">embed_CSS</span><span class="plain-syntax">; </span><span class="comment-syntax"> embed CSS directly into any HTML files made?</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">asset_rules</span><span class="plain-syntax">; </span><span class="comment-syntax"> of </span><span class="extract"><span class="extract-syntax">asset_rule</span></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">show_abbrevs</span><span class="plain-syntax">; </span><span class="comment-syntax"> show section range abbreviations in the weave?</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">number_sections</span><span class="plain-syntax">; </span><span class="comment-syntax"> insert section numbers into the weave?</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">default_range</span><span class="plain-syntax">; </span><span class="comment-syntax"> for example, </span><span class="extract"><span class="extract-syntax">sections</span></span>
|
||||
|
@ -81,7 +81,7 @@ to such a name, and to read it in. This structure holds the result:
|
|||
<span class="plain-syntax"> </span><span class="constant-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure weave_pattern is accessed in 1/pc, 1/ts, 5/fm, 5/tf, 5/hf, 5/wp and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure weave_pattern is accessed in 1/pc, 1/ts, 1/apacs, 5/fm, 5/tf, 5/hf and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>When a given web needs a pattern with a given name, this is where it comes.
|
||||
</p>
|
||||
|
||||
|
@ -104,7 +104,7 @@ to such a name, and to read it in. This structure holds the result:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">plugins</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">colour_schemes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">based_on</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">wp</span><span class="plain-syntax">-></span><span class="element-syntax">embed_CSS</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">wp</span><span class="plain-syntax">-></span><span class="element-syntax">asset_rules</span><span class="plain-syntax"> = </span><a href="1-apacs.html#SP9" class="function-link"><span class="function-syntax">Assets::new_asset_rules_list</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">patterned_for</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">number_sections</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">wp</span><span class="plain-syntax">-></span><span class="element-syntax">footnotes_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -181,7 +181,6 @@ following routine:
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">based_on</span><span class="plain-syntax"> = </span><a href="1-ptt.html#SP2" class="function-link"><span class="function-syntax">Patterns::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">patterned_for</span><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">wp</span><span class="plain-syntax">-></span><span class="element-syntax">pattern_format</span><span class="plain-syntax"> = </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">based_on</span><span class="plain-syntax">-></span><span class="element-syntax">pattern_format</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">embed_CSS</span><span class="plain-syntax"> = </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">based_on</span><span class="plain-syntax">-></span><span class="element-syntax">embed_CSS</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">number_sections</span><span class="plain-syntax"> = </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">based_on</span><span class="plain-syntax">-></span><span class="element-syntax">number_sections</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">default_range</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">wp</span><span class="plain-syntax">-></span><span class="element-syntax">based_on</span><span class="plain-syntax">-></span><span class="element-syntax">default_range</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">mathematics_plugin</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">wp</span><span class="plain-syntax">-></span><span class="element-syntax">based_on</span><span class="plain-syntax">-></span><span class="element-syntax">mathematics_plugin</span><span class="plain-syntax">);</span>
|
||||
|
@ -196,13 +195,11 @@ following routine:
|
|||
<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#SP19" class="function-link"><span class="function-syntax">Str::eq_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"plugin"</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">name</span><span class="plain-syntax"> = </span><a href="1-ptt.html#SP4" class="function-link"><span class="function-syntax">Patterns::plugin_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</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">name</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">weave_plugin</span><span class="plain-syntax"> *</span><span class="identifier-syntax">plugin</span><span class="plain-syntax"> = </span><a href="5-wp.html#SP2" class="function-link"><span class="function-syntax">WeavePlugins::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax"> *</span><span class="identifier-syntax">plugin</span><span class="plain-syntax"> = </span><a href="1-apacs.html#SP2" class="function-link"><span class="function-syntax">Assets::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">plugin</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">plugins</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="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_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"format"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">pattern_format</span><span class="plain-syntax"> = </span><a href="5-fm.html#SP1" class="function-link"><span class="function-syntax">Formats::find_by_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">value</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#SP19" class="function-link"><span class="function-syntax">Str::eq_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"embed CSS"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">embed_CSS</span><span class="plain-syntax"> = </span><a href="1-ptt.html#SP4" class="function-link"><span class="function-syntax">Patterns::yes_or_no</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</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#SP19" class="function-link"><span class="function-syntax">Str::eq_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"number sections"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">number_sections</span><span class="plain-syntax"> = </span><a href="1-ptt.html#SP4" class="function-link"><span class="function-syntax">Patterns::yes_or_no</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</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#SP19" class="function-link"><span class="function-syntax">Str::eq_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"default range"</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -223,6 +220,14 @@ following routine:
|
|||
<span class="plain-syntax"> </span><a href="../foundation-module/3-em.html#SP5" class="function-link"><span class="function-syntax">Errors::in_text_file</span></a><span class="plain-syntax">(</span><span class="string-syntax">"syntax is 'bibliographic data: X = Y'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</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">mr2</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#SP19" class="function-link"><span class="function-syntax">Str::eq_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"assets"</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">mr2</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">mr2</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</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="plain-syntax"> </span><a href="1-apacs.html#SP10" class="function-link"><span class="function-syntax">Assets::add_asset_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">asset_rules</span><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">[0], </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">tfp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/3-em.html#SP5" class="function-link"><span class="function-syntax">Errors::in_text_file</span></a><span class="plain-syntax">(</span><span class="string-syntax">"syntax is 'assets: .EXT COMMAND'"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</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">mr2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/3-em.html#SP5" class="function-link"><span class="function-syntax">Errors::in_text_file</span></a><span class="plain-syntax">(</span><span class="string-syntax">"unrecognised pattern command"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -259,7 +264,7 @@ completes.
|
|||
</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">Patterns::post_process</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Patterns::post_process</span></span>:<br>The Swarm - <a href="1-ts.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">verbosely</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Patterns::post_process</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Patterns::post_process</span></span>:<br>The Swarm - <a href="1-ts.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">-></span><span class="element-syntax">post_commands</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">last_F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -287,7 +292,7 @@ completes.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="../foundation-module/4-sm.html#SP26" class="function-link"><span class="function-syntax">Str::includes_at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cmd</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"PROCESS "</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">last_F</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="5-tu.html#SP3" class="function-link"><span class="function-syntax">TeXUtilities::post_process_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">last_F</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">verbosely</span><span class="plain-syntax">) </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"(%S)\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cmd</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">verbose_mode</span><span class="plain-syntax">) </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"(%S)\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cmd</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">rv</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-shl.html#SP5" class="function-link"><span class="function-syntax">Shell::run</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cmd</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">rv</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</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">"post-processing command failed"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -295,11 +300,8 @@ completes.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. Obtaining files. </b>Patterns provide not merely some configuration settings (above): they also
|
||||
provide template or style files of various kinds. When Inweb wants to find
|
||||
a pattern file with a given leafname, it looks for it in the pattern
|
||||
directory. If that fails, it then looks in the directory of the pattern
|
||||
inherited from.
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. Obtaining files. </b>Patterns provide place template files, such as <span class="extract"><span class="extract-syntax">template-body.html</span></span>, in
|
||||
their root directories.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Note that if you're rash enough to set up a cycle of patterns inheriting
|
||||
|
@ -307,24 +309,20 @@ from each other then this routine will lock up into an infinite loop.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">Patterns::obtain_filename</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">Patterns::obtain_filename</span></span>:<br>The Swarm - <a href="1-ts.html#SP4">§4</a><br>Format Methods - <a href="5-fm.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">leafname</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#SP21" class="function-link"><span class="function-syntax">Str::prefix_eq</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">leafname</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"../"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP25" class="function-link"><span class="function-syntax">Str::delete_first_character</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">leafname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP25" class="function-link"><span class="function-syntax">Str::delete_first_character</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">leafname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP25" class="function-link"><span class="function-syntax">Str::delete_first_character</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">leafname</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">Patterns::find_template</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">Patterns::find_template</span></span>:<br>The Swarm - <a href="1-ts.html#SP4">§4</a><br>Format Methods - <a href="5-fm.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">leafname</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">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">; </span><span class="identifier-syntax">wp</span><span class="plain-syntax">; </span><span class="identifier-syntax">wp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">based_on</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><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">pattern_location</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</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-tf.html#SP1" class="function-link"><span class="function-syntax">TextFiles::exists</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">F</span><span class="plain-syntax">;</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><span class="identifier-syntax">pattern</span><span class="plain-syntax">-></span><span class="element-syntax">pattern_location</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</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-tf.html#SP1" class="function-link"><span class="function-syntax">TextFiles::exists</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">F</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">pattern</span><span class="plain-syntax">-></span><span class="element-syntax">based_on</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-ptt.html#SP6" class="function-link"><span class="function-syntax">Patterns::obtain_filename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">-></span><span class="element-syntax">based_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7"></a><b>§7. </b>And similarly, but with an intermediate directory:
|
||||
<p class="commentary firstcommentary"><a id="SP7"></a><b>§7. </b>Similarly, but looking in an intermediate directory:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">Patterns::find_asset</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">Patterns::find_asset</span></span>:<br>HTML Formats - <a href="5-hf.html#SP5_13">§5.13</a>, <a href="5-hf.html#SP11">§11</a><br>Weave Plugins - <a href="5-wp.html#SP4">§4</a>, <a href="5-wp.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dirname</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">leafname</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">Patterns::find_file_in_subdirectory</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">Patterns::find_file_in_subdirectory</span></span>:<br>Assets, Plugins and Colour Schemes - <a href="1-apacs.html#SP4">§4</a>, <a href="1-apacs.html#SP7">§7</a><br>HTML Formats - <a href="5-hf.html#SP5_13">§5.13</a>, <a href="5-hf.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</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">dirname</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">leafname</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">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">; </span><span class="identifier-syntax">wp</span><span class="plain-syntax">; </span><span class="identifier-syntax">wp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">based_on</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-pth.html#SP4" class="function-link"><span class="function-syntax">Pathnames::down</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">pattern_location</span><span class="plain-syntax">, </span><span class="identifier-syntax">dirname</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><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</span><span class="plain-syntax">);</span>
|
||||
|
@ -336,65 +334,19 @@ from each other then this routine will lock up into an infinite loop.
|
|||
<p class="commentary firstcommentary"><a id="SP8"></a><b>§8. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">css_file_transformation</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">OUT</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">trans</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">css_file_transformation</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Patterns::copy_file_into_weave</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Patterns::copy_file_into_weave</span></span>:<br>HTML Formats - <a href="5-hf.html#SP5_10">§5.10</a>, <a href="5-hf.html#SP5_11">§5.11</a><br>Weave Plugins - <a href="5-wp.html#SP5_1">§5.1</a>, <a href="5-wp.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">trans</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">H</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">redirect_weaves_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">H</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">H</span><span class="plain-syntax"> = </span><a href="2-tr.html#SP7" class="function-link"><span class="function-syntax">Reader::woven_folder</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">) </span><span class="identifier-syntax">H</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">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">trans</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">text_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">css_S</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">G</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><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><a href="../foundation-module/3-fln.html#SP7" class="function-link"><span class="function-syntax">Filenames::get_leafname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</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">css_S</span><span class="plain-syntax">, </span><span class="identifier-syntax">G</span><span class="plain-syntax">, </span><span class="constant-syntax">ISO_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 tangled 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="reserved-syntax">css_file_transformation</span><span class="plain-syntax"> </span><span class="identifier-syntax">cft</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cft</span><span class="plain-syntax">.</span><span class="element-syntax">OUT</span><span class="plain-syntax"> = &</span><span class="identifier-syntax">css_S</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cft</span><span class="plain-syntax">.</span><span class="element-syntax">trans</span><span class="plain-syntax"> = </span><span class="identifier-syntax">trans</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-tf.html#SP5" class="function-link"><span class="function-syntax">TextFiles::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="string-syntax">"can't open CSS file"</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ptt.html#SP8" class="function-link"><span class="function-syntax">Patterns::transform_CSS</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) &</span><span class="identifier-syntax">cft</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_CLOSE</span><span class="plain-syntax">(</span><span class="identifier-syntax">cft</span><span class="plain-syntax">.</span><span class="element-syntax">OUT</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/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><span class="identifier-syntax">H</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Patterns::transform_CSS</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Patterns::transform_CSS</span></span>:<br>Weave Plugins - <a href="5-wp.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">css_file_transformation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cft</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">css_file_transformation</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">X</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">OUT</span><span class="plain-syntax"> = </span><span class="identifier-syntax">cft</span><span class="plain-syntax">-></span><span class="element-syntax">OUT</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="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">spanned</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</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">line</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c*?span.)(%i+)(%c*?)"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">spanned</span><span class="plain-syntax">, </span><span class="string-syntax">"%S%S%S"</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">cft</span><span class="plain-syntax">-></span><span class="element-syntax">trans</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP15" class="function-link"><span class="function-syntax">Str::clear</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">line</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">line</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">[2]);</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">spanned</span><span class="plain-syntax">, </span><span class="string-syntax">"%S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">line</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</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">spanned</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c*?pre.)(%i+)(%c*?)"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S%S%S"</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">cft</span><span class="plain-syntax">-></span><span class="element-syntax">trans</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP15" class="function-link"><span class="function-syntax">Str::clear</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spanned</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">spanned</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">[2]);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">spanned</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">spanned</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>The structure css_file_transformation is accessed in 5/ptf, 5/tf, 5/hf, 5/df, 5/wp, 6/rw and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9"></a><b>§9. </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">Patterns::include_plugins</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">Patterns::include_plugins</span></span>:<br>The Collater - <a href="3-tc.html#SP5_1_8_4">§5.1.8.4</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Patterns::include_plugins</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Patterns::include_plugins</span></span>:<br>Assets, Plugins and Colour Schemes - <a href="1-apacs.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">based_on</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">wp</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">plugins</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="5-wp.html#SP5" class="function-link"><span class="function-syntax">WeavePlugins::include_plugin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">wp</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-apacs.html#SP6" class="function-link"><span class="function-syntax">Assets::include_plugin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">wp</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">cs</span><span class="plain-syntax">, </span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">colour_schemes</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="5-wp.html#SP6" class="function-link"><span class="function-syntax">WeavePlugins::include_colour_scheme</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">cs</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-apacs.html#SP7" class="function-link"><span class="function-syntax">Assets::include_colour_scheme</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">cs</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="1-ts.html">Back to 'The Swarm'</a></li><li><i>(This section ends Chapter 1: Top Level.)</i></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="1-ts.html">Back to 'The Swarm'</a></li><li><a href="1-apacs.html">Continue with 'Assets, Plugins and Colour Schemes'</a></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -65,7 +65,7 @@ of Chapter 25 of "On the Banks of Plum Creek".
|
|||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Swarm::weave</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Swarm::weave</span></span>:<br>Program Control - <a href="1-pc.html#SP7_4_3">§7.4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">range</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">swarm_mode</span><span class="plain-syntax">, </span><span class="reserved-syntax">theme_tag</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tag</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">into</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">breadcrumbs</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">navigation</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">verbosely</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">breadcrumbs</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">navigation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">swarm_leader</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">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>
|
||||
|
@ -75,7 +75,7 @@ of Chapter 25 of "On the Banks of Plum Creek".
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">chaptered</span><span class="plain-syntax"> == </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">) && (</span><a href="2-tr.html#SP10" class="function-link"><span class="function-syntax">Reader::range_within</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">ch_range</span><span class="plain-syntax">, </span><span class="identifier-syntax">range</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">ch_weave</span><span class="plain-syntax"> = </span><a href="1-ts.html#SP2" class="function-link"><span class="function-syntax">Swarm::weave_subset</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="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">ch_range</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">tag</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">into</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">breadcrumbs</span><span class="plain-syntax">, </span><span class="identifier-syntax">navigation</span><span class="plain-syntax">, </span><span class="identifier-syntax">verbosely</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">breadcrumbs</span><span class="plain-syntax">, </span><span class="identifier-syntax">navigation</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">range</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">swarm_leader</span><span class="plain-syntax"> = </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">ch_weave</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">swarm_mode</span><span class="plain-syntax"> == </span><span class="constant-syntax">SWARM_SECTIONS_SWM</span><span class="plain-syntax">)</span>
|
||||
|
@ -83,7 +83,7 @@ of Chapter 25 of "On the Banks of Plum Creek".
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-tr.html#SP10" class="function-link"><span class="function-syntax">Reader::range_within</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">sect_range</span><span class="plain-syntax">, </span><span class="identifier-syntax">range</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">sect_weave</span><span class="plain-syntax"> = </span><a href="1-ts.html#SP2" class="function-link"><span class="function-syntax">Swarm::weave_subset</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="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">sect_range</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">tag</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">into</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">breadcrumbs</span><span class="plain-syntax">, </span><span class="identifier-syntax">navigation</span><span class="plain-syntax">, </span><span class="identifier-syntax">verbosely</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">breadcrumbs</span><span class="plain-syntax">, </span><span class="identifier-syntax">navigation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="1-ts.html#SP4" class="function-link"><span class="function-syntax">Swarm::weave_index_templates</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">range</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">into</span><span class="plain-syntax">, </span><span class="identifier-syntax">navigation</span><span class="plain-syntax">, </span><span class="identifier-syntax">breadcrumbs</span><span class="plain-syntax">);</span>
|
||||
|
@ -97,14 +97,14 @@ the call comes from Program Control).
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="function-syntax">Swarm::weave_subset</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Swarm::weave_subset</span></span>:<br><a href="1-ts.html#SP1">§1</a><br>Program Control - <a href="1-pc.html#SP7_4_3">§7.4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">range</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">open_afterwards</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">theme_tag</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tag</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">into</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">breadcrumbs</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">navigation</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">verbosely</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">breadcrumbs</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">navigation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</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">no_inweb_errors</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ta.html#SP4" class="function-link"><span class="function-syntax">Analyser::analyse_code</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="named-paragraph-container code-font"><a href="1-ts.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Compile a set of instructions for the weaver</span><span class="named-paragraph-number">2.2</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-tw.html#SP1" class="function-link"><span class="function-syntax">Weaver::weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="comment-syntax"> i.e., the number of lines woven was zero</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">"empty weave request"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ptt.html#SP5" class="function-link"><span class="function-syntax">Patterns::post_process</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">verbosely</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ptt.html#SP5" class="function-link"><span class="function-syntax">Patterns::post_process</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-fm.html#SP7" class="function-link"><span class="function-syntax">Formats::post_process_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">open_afterwards</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-ts.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Report on the outcome of the weave to the console</span><span class="named-paragraph-number">2.3</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -260,7 +260,7 @@ and details of any cover-sheet to use.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">existing</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">plugins</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_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">existing</span><span class="plain-syntax">-></span><span class="element-syntax">plugin_name</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wp</span><span class="plain-syntax"> = </span><a href="5-wp.html#SP2" class="function-link"><span class="function-syntax">WeavePlugins::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wp</span><span class="plain-syntax"> = </span><a href="1-apacs.html#SP2" class="function-link"><span class="function-syntax">Assets::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">wp</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">plugins</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -270,7 +270,7 @@ and details of any cover-sheet to use.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">existing</span><span class="plain-syntax">, </span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">colour_schemes</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_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">existing</span><span class="plain-syntax">-></span><span class="element-syntax">scheme_name</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">existing</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cs</span><span class="plain-syntax"> = </span><a href="5-wp.html#SP4" class="function-link"><span class="function-syntax">WeavePlugins::find_colour_scheme</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">pre</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cs</span><span class="plain-syntax"> = </span><a href="1-apacs.html#SP4" class="function-link"><span class="function-syntax">Assets::find_colour_scheme</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">pre</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">cs</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#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Colours"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">);</span>
|
||||
|
@ -284,13 +284,13 @@ and details of any cover-sheet to use.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Swarm::include_plugins</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Swarm::include_plugins</span></span>:<br>The Collater - <a href="3-tc.html#SP5_1_8_4">§5.1.8.4</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Swarm::include_plugins</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Swarm::include_plugins</span></span>:<br>Assets, Plugins and Colour Schemes - <a href="1-apacs.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_order</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">wp</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">plugins</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="5-wp.html#SP5" class="function-link"><span class="function-syntax">WeavePlugins::include_plugin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">wp</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-apacs.html#SP6" class="function-link"><span class="function-syntax">Assets::include_plugin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">wp</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">cs</span><span class="plain-syntax">, </span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">colour_schemes</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="5-wp.html#SP6" class="function-link"><span class="function-syntax">WeavePlugins::include_colour_scheme</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">cs</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-apacs.html#SP7" class="function-link"><span class="function-syntax">Assets::include_colour_scheme</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">cs</span><span class="plain-syntax">, </span><span class="identifier-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b>After every swarm, we rebuild the index:
|
||||
|
@ -301,7 +301,7 @@ and details of any cover-sheet to use.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">into</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nav</span><span class="plain-syntax">, </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">crumbs</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/8-bdfw.html#SP6" class="function-link"><span class="function-syntax">Bibliographic::data_exists</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Version Number"</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/8-bdfw.html#SP7" class="function-link"><span class="function-syntax">Bibliographic::set_datum</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Version Number"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">" "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">INF</span><span class="plain-syntax"> = </span><a href="1-ptt.html#SP6" class="function-link"><span class="function-syntax">Patterns::obtain_filename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"template-index.html"</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">INF</span><span class="plain-syntax"> = </span><a href="1-ptt.html#SP6" class="function-link"><span class="function-syntax">Patterns::find_template</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"template-index.html"</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">INF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">H</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">redirect_weaves_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">H</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">H</span><span class="plain-syntax"> = </span><a href="2-tr.html#SP7" class="function-link"><span class="function-syntax">Reader::woven_folder</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -93,7 +93,7 @@ each of which has a list of <span class="extract"><span class="extract-syntax">s
|
|||
<span class="plain-syntax"> </span><span class="constant-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">web</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure web is accessed in 1/pc, 1/ts, 1/ptt, 2/lc, 2/tp, 2/pn, 3/ta, 3/tc, 3/tw, 3/twot, 3/tt, 4/pl, 4/taf, 4/as, 4/cl, 4/is, 5/fm, 5/ptf, 5/tf, 5/hf, 5/df, 5/wp, 6/mkf, 6/rw, 6/cln and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure web is accessed in 1/pc, 1/ts, 1/ptt, 1/apacs, 2/lc, 2/tp, 2/pn, 3/ta, 3/tc, 3/tw, 3/twot, 3/tt, 4/pl, 4/taf, 4/as, 4/cl, 4/is, 5/fm, 5/ptf, 5/tf, 5/hf, 5/df, 6/mkf, 6/rw, 6/cln and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>And for a chapter:
|
||||
</p>
|
||||
|
||||
|
@ -148,17 +148,17 @@ each of which has a list of <span class="extract"><span class="extract-syntax">s
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">web_md</span><span class="plain-syntax"> *</span><span class="function-syntax">Reader::load_web_md</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Reader::load_web_md</span></span>:<br>Makefiles - <a href="6-mkf.html#SP2_11_1">§2.11.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt_F</span><span class="plain-syntax">, </span><span class="reserved-syntax">module_search</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">verbosely</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">web_md</span><span class="plain-syntax"> *</span><span class="function-syntax">Reader::load_web_md</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Reader::load_web_md</span></span>:<br>Makefiles - <a href="6-mkf.html#SP2_11_1">§2.11.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt_F</span><span class="plain-syntax">, </span><span class="reserved-syntax">module_search</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">including_modules</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/8-ws.html#SP5" class="function-link"><span class="function-syntax">WebMetadata::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">alt_F</span><span class="plain-syntax">, </span><span class="identifier-syntax">default_inweb_syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">verbosely</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/8-ws.html#SP5" class="function-link"><span class="function-syntax">WebMetadata::get</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">alt_F</span><span class="plain-syntax">, </span><span class="identifier-syntax">default_inweb_syntax</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">verbose_mode</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">including_modules</span><span class="plain-syntax">, </span><span class="identifier-syntax">path_to_inweb</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="function-syntax">Reader::load_web</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Reader::load_web</span></span>:<br>Program Control - <a href="1-pc.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt_F</span><span class="plain-syntax">, </span><span class="reserved-syntax">module_search</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">verbosely</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="function-syntax">Reader::load_web</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Reader::load_web</span></span>:<br>Program Control - <a href="1-pc.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alt_F</span><span class="plain-syntax">, </span><span class="reserved-syntax">module_search</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">including_modules</span><span class="plain-syntax">) {</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">web</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax"> = </span><a href="2-tr.html#SP4" class="function-link"><span class="function-syntax">Reader::load_web_md</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">alt_F</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">verbosely</span><span class="plain-syntax">, </span><span class="identifier-syntax">including_modules</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax"> = </span><a href="2-tr.html#SP4" class="function-link"><span class="function-syntax">Reader::load_web_md</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">alt_F</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">including_modules</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">tangle_target</span><span class="plain-syntax"> *</span><span class="identifier-syntax">main_target</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="2-tr.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Write the Inweb Version bibliographic datum</span><span class="named-paragraph-number">4.1</span></span></a><span class="plain-syntax">;</span>
|
||||
|
@ -276,14 +276,14 @@ inserted if this is a multi-chapter web.
|
|||
</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">Reader::read_web</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Reader::read_web</span></span>:<br>Program Control - <a href="1-pc.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">verbosely</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Reader::read_web</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Reader::read_web</span></span>:<br>Program Control - <a href="1-pc.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">web</span><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">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_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">chapter</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">chapters</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="reserved-syntax">section</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">sections</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tr.html#SP6" class="function-link"><span class="function-syntax">Reader::read_file</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">source_file_for_section</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">titling_line_to_insert</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">verbosely</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">titling_line_to_insert</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">W</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">single_file</span><span class="plain-syntax">)?</span><span class="identifier-syntax">TRUE:FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -292,7 +292,7 @@ inserted if this is a multi-chapter web.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Reader::read_file</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Reader::read_file</span></span>:<br><a href="2-tr.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</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">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">titling_line</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">verbosely</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">disregard_top</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">disregard_top</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">owning_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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">disregard_top</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="identifier-syntax">paused_until_at</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
@ -308,8 +308,7 @@ inserted if this is a multi-chapter web.
|
|||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cl</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-tf.html#SP5" class="function-link"><span class="function-syntax">TextFiles::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="string-syntax">"can't open section file"</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tr.html#SP6_1_1" class="function-link"><span class="function-syntax">Reader::scan_source_line</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">S</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">verbosely</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"Read section: '%S' (%d lines)\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">sect_title</span><span class="plain-syntax">, </span><span class="identifier-syntax">cl</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">verbose_mode</span><span class="plain-syntax">) </span><span class="identifier-syntax">PRINT</span><span class="plain-syntax">(</span><span class="string-syntax">"Read section: '%S' (%d lines)\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">sect_title</span><span class="plain-syntax">, </span><span class="identifier-syntax">cl</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6_1"></a><b>§6.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Insert an implied chapter heading</span><span class="named-paragraph-number">6.1</span></span><span class="comment-syntax"> =</span>
|
||||
|
@ -383,7 +382,7 @@ tangled for.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Reader::woven_folder</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">Reader::woven_folder</span></span>:<br>The Swarm - <a href="1-ts.html#SP2_2">§2.2</a>, <a href="1-ts.html#SP4">§4</a><br>Patterns - <a href="1-ptt.html#SP8">§8</a><br>HTML Formats - <a href="5-hf.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Reader::woven_folder</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">Reader::woven_folder</span></span>:<br>The Swarm - <a href="1-ts.html#SP2_2">§2.2</a>, <a href="1-ts.html#SP4">§4</a><br>Assets, Plugins and Colour Schemes - <a href="1-apacs.html#SP12_3">§12.3</a><br>HTML Formats - <a href="5-hf.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">web</span><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">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-pth.html#SP4" class="function-link"><span class="function-syntax">Pathnames::down</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">path_to_web</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Woven"</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/3-pth.html#SP9" class="function-link"><span class="function-syntax">Pathnames::create_in_file_system</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">) == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/3-em.html#SP2" class="function-link"><span class="function-syntax">Errors::fatal_with_path</span></a><span class="plain-syntax">(</span><span class="string-syntax">"unable to create Woven subdirectory"</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -64,7 +64,7 @@ directly.
|
|||
</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">Collater::for_web_and_pattern</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Collater::for_web_and_pattern</span></span>:<br>HTML Formats - <a href="5-hf.html#SP5_13">§5.13</a><br>Weave Plugins - <a href="5-wp.html#SP5">§5</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">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Collater::for_web_and_pattern</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Collater::for_web_and_pattern</span></span>:<br>Assets, Plugins and Colour Schemes - <a href="1-apacs.html#SP12_4">§12.4</a><br>HTML Formats - <a href="5-hf.html#SP5_13">§5.13</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">web</span><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">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">into</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tc.html#SP1" class="function-link"><span class="function-syntax">Collater::collate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</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">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">into</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -165,7 +165,6 @@ if so, they can always be subdivided.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Collater::process</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">Collater::process</span></span>:<br><a href="3-tc.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="reserved-syntax">collater_state</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cls</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_INDENT</span><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</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">lpos</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax"> This is our program counter: a line number in the template</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">lpos</span><span class="plain-syntax"> < </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">no_tlines</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>
|
||||
|
@ -179,7 +178,6 @@ if so, they can always be subdivided.
|
|||
<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">cls</span><span class="plain-syntax">-></span><span class="element-syntax">inside_navigation_submenu</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</ul>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">inside_navigation_submenu</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">STREAM_OUTDENT</span><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5_1"></a><b>§5.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Make any necessary substitutions to turn tl into final output</span><span class="named-paragraph-number">5.1</span></span><span class="comment-syntax"> =</span>
|
||||
|
@ -199,9 +197,7 @@ if so, they can always be subdivided.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tc.html#SP5_1_5" class="named-paragraph-link"><span class="named-paragraph">Skip line if inside an empty loop</span><span class="named-paragraph-number">5.1.5</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_INDENT</span><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tc.html#SP5_1_8" class="named-paragraph-link"><span class="named-paragraph">Make substitutions of square-bracketed variables in line</span><span class="named-paragraph-number">5.1.8</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_OUTDENT</span><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tc.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_1_1"></a><b>§5.1.1. The repeat stack and loops. </b>This is used only for debugging:
|
||||
|
@ -522,20 +518,12 @@ this will recursively call The Collater, in fact.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">crumbs</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tc.html#SP5_1_8">§5.1.8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_1_8_4"></a><b>§5.1.8.4. </b><span class="extract"><span class="extract-syntax">[[Plugins]]</span></span> here expands to material needed by any plugins required
|
||||
by the weave cls->nav_pattern itself; it doesn't include optional extras for a
|
||||
specific page because, of course, The Collater is used for cover sheets and
|
||||
not pages. (Except for navigation purposes, and navigation files should never
|
||||
use this.)
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Substitute Plugins</span><span class="named-paragraph-number">5.1.8.4</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP5_1_8_4"></a><b>§5.1.8.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Substitute Plugins</span><span class="named-paragraph-number">5.1.8.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="5-wp.html#SP4" class="function-link"><span class="function-syntax">WeavePlugins::begin_inclusions</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ptt.html#SP9" class="function-link"><span class="function-syntax">Patterns::include_plugins</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">for_web</span><span class="plain-syntax">, </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">nav_pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">into_file</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">) </span><a href="1-ts.html#SP3" class="function-link"><span class="function-syntax">Swarm::include_plugins</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">for_web</span><span class="plain-syntax">, </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">into_file</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-apacs.html#SP5" class="function-link"><span class="function-syntax">Assets::include_relevant_plugins</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">nav_pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">for_web</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">cls</span><span class="plain-syntax">-></span><span class="element-syntax">into_file</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tc.html#SP5_1_8">§5.1.8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_1_8_5"></a><b>§5.1.8.5. </b>A list of all modules in the current web.
|
||||
|
|
|
@ -52,7 +52,7 @@ function togglePopup(material_id) {
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Debugging::create</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Debugging::create</span></span>:<br>Format Methods - <a href="5-fm.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_format</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wf</span><span class="plain-syntax"> = </span><a href="5-fm.html#SP1" class="function-link"><span class="function-syntax">Formats::create_weave_format</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"debugging"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">".txt"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_format</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wf</span><span class="plain-syntax"> = </span><a href="5-fm.html#SP1" class="function-link"><span class="function-syntax">Formats::create_weave_format</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"TestingInweb"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">".txt"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">wf</span><span class="plain-syntax">, </span><span class="constant-syntax">RENDER_FOR_MTID</span><span class="plain-syntax">, </span><a href="5-df.html#SP2" class="function-link"><span class="function-syntax">Debugging::render</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -126,7 +126,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure debugging_render_state is accessed in 1/ptt, 3/tc, 3/twot, 5/wt, 5/fm, 5/ptf, 5/tf, 5/hf, 5/wp, 6/rw and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure debugging_render_state is accessed in 1/apacs, 3/tc, 3/twot, 5/wt, 5/fm, 5/ptf, 5/tf, 5/hf, 6/rw and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_1"></a><b>§2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render document</span><span class="named-paragraph-number">2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
|
@ -517,7 +517,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="5-hf.html">Back to 'HTML Formats'</a></li><li><a href="5-wp.html">Continue with 'Weave Plugins'</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="5-hf.html">Back to 'HTML Formats'</a></li><li><a href="5-tu.html">Continue with 'TeX Utilities'</a></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -76,7 +76,7 @@ through optional method calls.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure weave_format is accessed in 1/ts, 5/wp and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure weave_format is accessed in 1/ts and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>Note that this is the file extension before any post-processing. For
|
||||
example, PDFs are made by weaving a TeX file and then running this through
|
||||
<span class="extract"><span class="extract-syntax">pdftex</span></span>. The extension here will be <span class="extract"><span class="extract-syntax">.tex</span></span> because that's what the weave
|
||||
|
@ -148,7 +148,7 @@ actual content.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_format</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">format</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">template</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">template</span><span class="plain-syntax">, </span><span class="string-syntax">"template-body%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">wf</span><span class="plain-syntax">-></span><span class="element-syntax">woven_extension</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="1-ptt.html#SP6" class="function-link"><span class="function-syntax">Patterns::obtain_filename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">template</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="1-ptt.html#SP6" class="function-link"><span class="function-syntax">Patterns::find_template</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">template</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">interior</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VMETHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">wf</span><span class="plain-syntax">, </span><span class="constant-syntax">RENDER_FOR_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">interior</span><span class="plain-syntax">, </span><span class="identifier-syntax">tree</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/8-bdfw.html#SP7" class="function-link"><span class="function-syntax">Bibliographic::set_datum</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">weave_web</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Weave Content"</span><span class="plain-syntax">, </span><span class="identifier-syntax">interior</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -90,9 +90,10 @@ instance of this:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">carousel_number</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">slide_number</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">slide_of</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">asset_rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">copy_rule</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">HTML_render_state</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure HTML_render_state is accessed in 1/ptt, 3/tc, 3/twot, 5/wt, 5/fm, 5/ptf, 5/tf, 5/df, 5/wp, 6/rw and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure HTML_render_state is accessed in 1/apacs, 3/tc, 3/twot, 5/wt, 5/fm, 5/ptf, 5/tf, 5/df, 6/rw and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. </b>The initial state is as follows:
|
||||
</p>
|
||||
|
||||
|
@ -108,6 +109,7 @@ instance of this:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">hrs</span><span class="plain-syntax">.</span><span class="element-syntax">carousel_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="identifier-syntax">hrs</span><span class="plain-syntax">.</span><span class="element-syntax">slide_number</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">hrs</span><span class="plain-syntax">.</span><span class="element-syntax">slide_of</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">hrs</span><span class="plain-syntax">.</span><span class="element-syntax">copy_rule</span><span class="plain-syntax"> = </span><a href="1-apacs.html#SP10" class="function-link"><span class="function-syntax">Assets::new_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</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">I</span><span class="string-syntax">"private copy"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="1-ts.html#SP3" class="function-link"><span class="function-syntax">Swarm::ensure_plugin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Base"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">hrs</span><span class="plain-syntax">.</span><span class="element-syntax">colours</span><span class="plain-syntax"> = </span><a href="1-ts.html#SP3" class="function-link"><span class="function-syntax">Swarm::ensure_colour_scheme</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wv</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Colours"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
|
@ -344,7 +346,8 @@ ePub respectively:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">RF</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-fln.html#SP3" class="function-link"><span class="function-syntax">Filenames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">figname</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">"center"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/5-htm.html#SP14" class="function-link"><span class="function-syntax">HTML::image_to_dimensions</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">RF</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">w</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">h</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ptt.html#SP8" class="function-link"><span class="function-syntax">Patterns::copy_file_into_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">hrs</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">weave_web</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</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="1-apacs.html#SP12" class="function-link"><span class="function-syntax">Assets::include_asset</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">hrs</span><span class="plain-syntax">-></span><span class="element-syntax">copy_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">hrs</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">weave_web</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</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">hrs</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">hrs</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">weave_to</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">"center"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
|
@ -357,7 +360,8 @@ ePub respectively:
|
|||
<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>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/3-pth.html#SP4" class="function-link"><span class="function-syntax">Pathnames::down</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">hrs</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="identifier-syntax">weave_web</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">path_to_web</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Audio"</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">audio_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ptt.html#SP8" class="function-link"><span class="function-syntax">Patterns::copy_file_into_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">hrs</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">weave_web</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</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="1-apacs.html#SP12" class="function-link"><span class="function-syntax">Assets::include_asset</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">hrs</span><span class="plain-syntax">-></span><span class="element-syntax">copy_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">hrs</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">weave_web</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</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">hrs</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">hrs</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">weave_to</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">"center"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<audio controls>\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<source src=\"%S\" type=\"audio/mpeg\">\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">audio_name</span><span class="plain-syntax">);</span>
|
||||
|
@ -537,7 +541,7 @@ that service uses to identify the video/audio in question.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">h</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><a href="../foundation-module/4-sm.html#SP15" class="function-link"><span class="function-syntax">Str::clear</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CH</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">CH</span><span class="plain-syntax">, </span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">h</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">embed_leaf</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">embed_leaf</span><span class="plain-syntax">, </span><span class="string-syntax">"%S.html"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">service</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="1-ptt.html#SP7" class="function-link"><span class="function-syntax">Patterns::find_asset</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">hrs</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Embedding"</span><span class="plain-syntax">, </span><span class="identifier-syntax">embed_leaf</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="1-ptt.html#SP7" class="function-link"><span class="function-syntax">Patterns::find_file_in_subdirectory</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">hrs</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Embedding"</span><span class="plain-syntax">, </span><span class="identifier-syntax">embed_leaf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">embed_leaf</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">F</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pc.html#SP8" class="function-link"><span class="function-syntax">Main::error_in_web</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"This is not a supported service"</span><span class="plain-syntax">, </span><span class="identifier-syntax">hrs</span><span class="plain-syntax">-></span><span class="element-syntax">wv</span><span class="plain-syntax">-></span><span class="element-syntax">current_weave_line</span><span class="plain-syntax">);</span>
|
||||
|
@ -1060,7 +1064,7 @@ which is itself inside a list entry"; and so on.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</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">T</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><a href="../foundation-module/8-bdfw.html#SP6" class="function-link"><span class="function-syntax">Bibliographic::get_datum</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">md</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Title"</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">as_ebook</span><span class="plain-syntax"> = </span><a href="../foundation-module/5-ee.html#SP5" class="function-link"><span class="function-syntax">Epub::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="string-syntax">"P"</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">CSS</span><span class="plain-syntax"> = </span><a href="1-ptt.html#SP7" class="function-link"><span class="function-syntax">Patterns::find_asset</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Base"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Base.css"</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">CSS</span><span class="plain-syntax"> = </span><a href="1-ptt.html#SP7" class="function-link"><span class="function-syntax">Patterns::find_file_in_subdirectory</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Base"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Base.css"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/5-ee.html#SP5" class="function-link"><span class="function-syntax">Epub::use_CSS_throughout</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">as_ebook</span><span class="plain-syntax">, </span><span class="identifier-syntax">CSS</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/5-ee.html#SP5" class="function-link"><span class="function-syntax">Epub::attach_metadata</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">as_ebook</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"identifier"</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -125,7 +125,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure PlainText_render_state is accessed in 1/ptt, 3/tc, 3/twot, 5/wt, 5/fm, 5/tf, 5/hf, 5/df, 5/wp, 6/rw and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure PlainText_render_state is accessed in 1/apacs, 3/tc, 3/twot, 5/wt, 5/fm, 5/tf, 5/hf, 5/df, 6/rw and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_1"></a><b>§2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render chapter header</span><span class="named-paragraph-number">2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@ generic as possible, but with special features depending on <span class="extract
|
|||
<span class="plain-syntax"> </span><a href="../foundation-module/2-trs.html#SP13" class="function-link"><span class="function-syntax">Trees::traverse_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">tree</span><span class="plain-syntax">-></span><span class="element-syntax">root</span><span class="plain-syntax">, &</span><a href="5-tf.html#SP4" class="function-link"><span class="function-syntax">TeX::render_visit</span></a><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) &</span><span class="identifier-syntax">trs</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure TeX_render_state is accessed in 1/ptt, 3/tc, 3/twot, 5/wt, 5/fm, 5/ptf, 5/hf, 5/df, 5/wp, 6/rw and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure TeX_render_state is accessed in 1/apacs, 3/tc, 3/twot, 5/wt, 5/fm, 5/ptf, 5/hf, 5/df, 6/rw and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b>For the reason why footnotes are omitted, see below: they aren't really.
|
||||
</p>
|
||||
|
||||
|
|
|
@ -459,7 +459,7 @@ we also look out for <span class="extract"><span class="extract-syntax">{}^3\sqr
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-tu.html#SP7_4">§7.4</a>.</li></ul>
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="5-wp.html">Back to 'Weave Plugins'</a></li><li><i>(This section ends Chapter 5: Formats.)</i></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="5-df.html">Back to 'Debugging Format'</a></li><li><i>(This section ends Chapter 5: Formats.)</i></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1,282 +0,0 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Weave Plugins</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Octagram.png" width=72 height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="index.html"><span class="selectedlink">inweb</span></a></li>
|
||||
</ul><h2>Foundation Module</h2><ul>
|
||||
<li><a href="../foundation-module/index.html">foundation</a></li>
|
||||
<li><a href="../foundation-test/index.html">foundation-test</a></li>
|
||||
</ul><h2>Example Webs</h2><ul>
|
||||
<li><a href="../goldbach/index.html">goldbach</a></li>
|
||||
<li><a href="../twinprimes/twinprimes.html">twinprimes</a></li>
|
||||
<li><a href="../eastertide/index.html">eastertide</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inweb"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inform/docs/index.html">inform</a></li>
|
||||
<li><a href="../../../intest/docs/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Weave Plugins' generated by Inweb-->
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">inweb</a></li><li><a href="index.html#5">Chapter 5: Formats</a></li><li><b>Weave Plugins</b></li></ul><p class="purpose">Mainly for HTML, to add the necessary JavaScript for unusual requirements such as equations or footnotes.</p>
|
||||
|
||||
<ul class="toc"><li><a href="5-wp.html#SP1">§1. Creation</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. Creation. </b>At present, plugins are simply their names: Inweb knows as little as possible
|
||||
about how they work. The model is just that a file being woven either does or
|
||||
does not need a plugin of a given name: for example, if it uses maths notation,
|
||||
it will likely need the <span class="extract"><span class="extract-syntax">MathJax3</span></span> plugin.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">weave_plugin</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">plugin_name</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">last_included_in_round</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure weave_plugin is accessed in 1/ts and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">weave_plugin</span><span class="plain-syntax"> *</span><span class="function-syntax">WeavePlugins::new</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">WeavePlugins::new</span></span>:<br>The Swarm - <a href="1-ts.html#SP3">§3</a><br>Patterns - <a href="1-ptt.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">wp</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_plugin</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_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">plugin_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">plugin_name</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">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">last_included_in_round</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. </b>And almost the same can be said about colour schemes, except that these we
|
||||
actually look for: they will be available to some patterns and not others.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">colour_scheme</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">scheme_name</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">prefix</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">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">at</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">last_included_in_round</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure colour_scheme is accessed in 5/ee, 1/ts, 5/hf and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">colour_scheme</span><span class="plain-syntax"> *</span><span class="function-syntax">WeavePlugins::find_colour_scheme</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">WeavePlugins::find_colour_scheme</span></span>:<br>The Swarm - <a href="1-ts.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</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">name</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pre</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">cs</span><span class="plain-syntax">, </span><span class="reserved-syntax">colour_scheme</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_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">scheme_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cs</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">css</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">css</span><span class="plain-syntax">, </span><span class="string-syntax">"%S.css"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</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="1-ptt.html#SP7" class="function-link"><span class="function-syntax">Patterns::find_asset</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Colouring"</span><span class="plain-syntax">, </span><span class="identifier-syntax">css</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">F</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><a href="1-ptt.html#SP7" class="function-link"><span class="function-syntax">Patterns::find_asset</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Coloring"</span><span class="plain-syntax">, </span><span class="identifier-syntax">css</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">css</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">F</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">scheme_name</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">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">at</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">cs</span><span class="plain-syntax">-></span><span class="element-syntax">prefix</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">pre</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">last_included_in_round</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><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">pre</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">prefix</span><span class="plain-syntax">, </span><span class="string-syntax">"-"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">cs</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">current_inclusion_round</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">WeavePlugins::begin_inclusions</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">WeavePlugins::begin_inclusions</span></span>:<br>The Collater - <a href="3-tc.html#SP5_1_8_4">§5.1.8.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_inclusion_round</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5"></a><b>§5. </b>When a file is woven, then, the following function can add the plugins
|
||||
necessary. If a plugin is called <span class="extract"><span class="extract-syntax">X</span></span>, then we try to find <span class="extract"><span class="extract-syntax">X.html</span></span> and
|
||||
weave that into the page header; and we try to find <span class="extract"><span class="extract-syntax">X.css</span></span>, weave an
|
||||
inclusion of that, and also copy the file into the weave destination.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The fragment of HTML is compulsory; the CSS file, optional.
|
||||
</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">WeavePlugins::include_plugin</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">WeavePlugins::include_plugin</span></span>:<br>The Swarm - <a href="1-ts.html#SP3">§3</a><br>Patterns - <a href="1-ptt.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_plugin</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wp</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">last_included_in_round</span><span class="plain-syntax"> == </span><span class="identifier-syntax">current_inclusion_round</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">last_included_in_round</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_inclusion_round</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">AP</span><span class="plain-syntax"> = </span><a href="6-cln.html#SP9" class="function-link"><span class="function-syntax">Colonies::assets_path</span></a><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">html_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">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">pattern</span><span class="plain-syntax">-></span><span class="element-syntax">pattern_format</span><span class="plain-syntax">-></span><span class="element-syntax">format_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"HTML"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">html_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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">finds</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">required</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">required</span><span class="plain-syntax">, </span><span class="string-syntax">"%S.html"</span><span class="plain-syntax">, </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">plugin_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">leaves_gathered</span><span class="plain-syntax"> = </span><a href="../foundation-module/2-dct.html#SP2" class="function-link"><span class="function-syntax">Dictionaries::new</span></a><span class="plain-syntax">(128, </span><span class="constant-syntax">TRUE</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">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax">; </span><span class="identifier-syntax">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">based_on</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-pth.html#SP4" class="function-link"><span class="function-syntax">Pathnames::down</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="element-syntax">pattern_location</span><span class="plain-syntax">, </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">plugin_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">scan_directory</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-drc.html#SP2" class="function-link"><span class="function-syntax">Directories::open</span></a><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">if</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">leafname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><a href="../foundation-module/3-drc.html#SP2" class="function-link"><span class="function-syntax">Directories::next</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</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_last_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">leafname</span><span class="plain-syntax">) != </span><span class="constant-syntax">FOLDER_SEPARATOR</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP13" class="function-link"><span class="function-syntax">Str::get_first_char</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">leafname</span><span class="plain-syntax">) != </span><span class="character-syntax">'.'</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/2-dct.html#SP5" class="function-link"><span class="function-syntax">Dictionaries::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">leaves_gathered</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><a href="../foundation-module/2-dct.html#SP9" class="function-link"><span class="function-syntax">Dictionaries::create_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">leaves_gathered</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</span><span class="plain-syntax">), </span><span class="string-syntax">"got this"</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><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</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_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">leafname</span><span class="plain-syntax">, </span><span class="identifier-syntax">required</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">html_mode</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tc.html#SP1" class="function-link"><span class="function-syntax">Collater::for_web_and_pattern</span></a><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">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-wp.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Use shell scripting to copy the file over</span><span class="named-paragraph-number">5.1</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">html_mode</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">ext</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/3-fln.html#SP8" class="function-link"><span class="function-syntax">Filenames::write_extension</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</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_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">".css"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="5-wp.html#SP6" class="function-link"><span class="function-syntax">WeavePlugins::include_CSS_file</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">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#SP19" class="function-link"><span class="function-syntax">Str::eq_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">".js"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">AP</span><span class="plain-syntax">) </span><a href="../foundation-module/3-pth.html#SP8" class="function-link"><span class="function-syntax">Pathnames::relative_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><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">from</span><span class="plain-syntax">), </span><span class="identifier-syntax">AP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<script src=\"%S\"></script>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-wp.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Use shell scripting to copy the file over</span><span class="named-paragraph-number">5.1</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-wp.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Use shell scripting to copy the file over</span><span class="named-paragraph-number">5.1</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/3-fln.html#SP8" class="function-link"><span class="function-syntax">Filenames::write_extension</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</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_insensitive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">".tex"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="5-wp.html#SP6" class="function-link"><span class="function-syntax">WeavePlugins::include_TeX_macros</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-wp.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Use shell scripting to copy the file over</span><span class="named-paragraph-number">5.1</span></span></a><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">finds</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">leafname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/3-drc.html#SP2" class="function-link"><span class="function-syntax">Directories::close</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</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">finds</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="string-syntax">"The plugin '%S' is not supported"</span><span class="plain-syntax">, </span><span class="identifier-syntax">wp</span><span class="plain-syntax">-></span><span class="element-syntax">plugin_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pc.html#SP8" class="function-link"><span class="function-syntax">Main::error_in_web</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">required</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5_1"></a><b>§5.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Use shell scripting to copy the file over</span><span class="named-paragraph-number">5.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="1-ptt.html#SP8" class="function-link"><span class="function-syntax">Patterns::copy_file_into_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">AP</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><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_ebook</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">rel</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><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">leafname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/5-ee.html#SP5" class="function-link"><span class="function-syntax">Epub::note_image</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">as_ebook</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-wp.html#SP5">§5</a> (four times).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. </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">WeavePlugins::include_colour_scheme</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">WeavePlugins::include_colour_scheme</span></span>:<br>The Swarm - <a href="1-ts.html#SP3">§3</a><br>Patterns - <a href="1-ptt.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">colour_scheme</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cs</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">last_included_in_round</span><span class="plain-syntax"> == </span><span class="identifier-syntax">current_inclusion_round</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">last_included_in_round</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_inclusion_round</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">pattern</span><span class="plain-syntax">-></span><span class="element-syntax">pattern_format</span><span class="plain-syntax">-></span><span class="element-syntax">format_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"HTML"</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">css</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">css</span><span class="plain-syntax">, </span><span class="string-syntax">"%S.css"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">scheme_name</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="1-ptt.html#SP7" class="function-link"><span class="function-syntax">Patterns::find_asset</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Colouring"</span><span class="plain-syntax">, </span><span class="identifier-syntax">css</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">F</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><a href="1-ptt.html#SP7" class="function-link"><span class="function-syntax">Patterns::find_asset</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Coloring"</span><span class="plain-syntax">, </span><span class="identifier-syntax">css</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">F</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="string-syntax">"No CSS file for the colour scheme '%S' can be found"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">scheme_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-pc.html#SP8" class="function-link"><span class="function-syntax">Main::error_in_web</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">err</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">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="5-wp.html#SP6" class="function-link"><span class="function-syntax">WeavePlugins::include_CSS_file</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">css</span><span class="plain-syntax">, </span><span class="identifier-syntax">cs</span><span class="plain-syntax">-></span><span class="element-syntax">prefix</span><span class="plain-syntax">, </span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">css</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">WeavePlugins::include_CSS_file</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">WeavePlugins::include_CSS_file</span></span>:<br><a href="5-wp.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">css</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">trans</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">-></span><span class="element-syntax">embed_CSS</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<style type=\"text/css\">\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">css_file_transformation</span><span class="plain-syntax"> </span><span class="identifier-syntax">cft</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cft</span><span class="plain-syntax">.</span><span class="element-syntax">OUT</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">cft</span><span class="plain-syntax">.</span><span class="element-syntax">trans</span><span class="plain-syntax"> = </span><span class="identifier-syntax">trans</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/4-tf.html#SP5" class="function-link"><span class="function-syntax">TextFiles::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="string-syntax">"can't open CSS file"</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ptt.html#SP8" class="function-link"><span class="function-syntax">Patterns::transform_CSS</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) &</span><span class="identifier-syntax">cft</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</style>\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">AP</span><span class="plain-syntax"> = </span><a href="6-cln.html#SP9" class="function-link"><span class="function-syntax">Colonies::assets_path</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">AP</span><span class="plain-syntax">) </span><a href="../foundation-module/3-pth.html#SP8" class="function-link"><span class="function-syntax">Pathnames::relative_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><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">from</span><span class="plain-syntax">), </span><span class="identifier-syntax">AP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">css</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<link href=\"%S\" rel=\"stylesheet\" rev=\"stylesheet\" type=\"text/css\">\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ptt.html#SP8" class="function-link"><span class="function-syntax">Patterns::copy_file_into_weave</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">AP</span><span class="plain-syntax">, </span><span class="identifier-syntax">trans</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">W</span><span class="plain-syntax">-></span><span class="element-syntax">as_ebook</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">rel</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><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">css</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../foundation-module/5-ee.html#SP5" class="function-link"><span class="function-syntax">Epub::note_image</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">-></span><span class="element-syntax">as_ebook</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">WeavePlugins::include_TeX_macros</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">WeavePlugins::include_TeX_macros</span></span>:<br><a href="5-wp.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="constant-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">web</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">css</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">trans</span><span class="plain-syntax">, </span><span class="reserved-syntax">weave_pattern</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">, </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">css_file_transformation</span><span class="plain-syntax"> </span><span class="identifier-syntax">cft</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cft</span><span class="plain-syntax">.</span><span class="element-syntax">OUT</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">cft</span><span class="plain-syntax">.</span><span class="element-syntax">trans</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-tf.html#SP5" class="function-link"><span class="function-syntax">TextFiles::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="string-syntax">"can't open TeX file"</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ptt.html#SP8" class="function-link"><span class="function-syntax">Patterns::transform_CSS</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) &</span><span class="identifier-syntax">cft</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="5-df.html">Back to 'Debugging Format'</a></li><li><a href="5-tu.html">Continue with 'TeX Utilities'</a></li></ul><hr class="tocbar">
|
||||
<!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -373,7 +373,7 @@ the data we already have; but if not, we read it in.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"docs"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Colonies::assets_path</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">Colonies::assets_path</span></span>:<br>The Collater - <a href="3-tc.html#SP5_1_8_14_1_1">§5.1.8.14.1.1</a><br>Weave Plugins - <a href="5-wp.html#SP5">§5</a>, <a href="5-wp.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Colonies::assets_path</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">Colonies::assets_path</span></span>:<br>Assets, Plugins and Colour Schemes - <a href="1-apacs.html#SP12">§12</a><br>The Collater - <a href="3-tc.html#SP5_1_8_14_1_1">§5.1.8.14.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">colony</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">colony</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">assets_path</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -297,7 +297,7 @@ following a "prototype".
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%SMAKER = $(%SWEB)/%S.mk\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%SX = $(%SWEB)/Tangled/%S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0], </span><span class="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">MS</span><span class="plain-syntax">-></span><span class="element-syntax">last_line_was_blank</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">web_md</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Wm</span><span class="plain-syntax"> = </span><a href="2-tr.html#SP4" class="function-link"><span class="function-syntax">Reader::load_web_md</span></a><span class="plain-syntax">(</span><a href="../foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[2]), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">MS</span><span class="plain-syntax">-></span><span class="element-syntax">search_path</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</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">web_md</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Wm</span><span class="plain-syntax"> = </span><a href="2-tr.html#SP4" class="function-link"><span class="function-syntax">Reader::load_web_md</span></a><span class="plain-syntax">(</span><a href="../foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[2]), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">MS</span><span class="plain-syntax">-></span><span class="element-syntax">search_path</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">Wm</span><span class="plain-syntax">-></span><span class="element-syntax">as_module</span><span class="plain-syntax">-></span><span class="element-syntax">module_name</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">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Wm</span><span class="plain-syntax">-></span><span class="element-syntax">as_module</span><span class="plain-syntax">-></span><span class="element-syntax">module_tag</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">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[3]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Wm</span><span class="plain-syntax">-></span><span class="element-syntax">as_module</span><span class="plain-syntax">-></span><span class="element-syntax">origin_marker</span><span class="plain-syntax"> = </span><span class="identifier-syntax">marker</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -83,7 +83,7 @@ uses these extra macros, is expanded to the final file, which does not.
|
|||
<span class="plain-syntax"> </span><a href="../foundation-module/2-str.html#SP34" class="function-link"><span class="function-syntax">Streams::close</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">file_to</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure write_state is accessed in 1/ptt, 5/ptf, 5/tf, 5/hf, 5/df, 5/wp and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure write_state is accessed in 1/apacs, 5/ptf, 5/tf, 5/hf, 5/df and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>The file consists of definitions of macros, made one at a time, and
|
||||
starting with <span class="extract"><span class="extract-syntax">@define</span></span> and finishing with <span class="extract"><span class="extract-syntax">@end</span></span>, and actual material.
|
||||
</p>
|
||||
|
|
|
@ -39,7 +39,7 @@
|
|||
<!--Weave of 'Advanced Weaving with Patterns' generated by Inweb-->
|
||||
<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>Advanced Weaving with Patterns</b></li></ul><p class="purpose">Customise your weave by creating a new pattern.</p>
|
||||
|
||||
<ul class="toc"><li><a href="M-awwp.html#SP1">§1. Patterns versus formats</a></li><li><a href="M-awwp.html#SP3">§3. Basic settings</a></li><li><a href="M-awwp.html#SP7">§7. Plugins</a></li><li><a href="M-awwp.html#SP10">§10. Embeddings</a></li><li><a href="M-awwp.html#SP11">§11. Syntax colouring</a></li><li><a href="M-awwp.html#SP13">§13. Templates</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="M-awwp.html#SP1">§1. Patterns versus formats</a></li><li><a href="M-awwp.html#SP3">§3. Basic settings</a></li><li><a href="M-awwp.html#SP7">§7. Plugins and assets</a></li><li><a href="M-awwp.html#SP12">§12. Embeddings</a></li><li><a href="M-awwp.html#SP13">§13. Syntax colouring</a></li><li><a href="M-awwp.html#SP15">§15. Templates</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. Patterns versus formats. </b>Every weave produces output in a "format". The formats are built in to Inweb,
|
||||
and adding new ones would mean contributing code to the project: currently
|
||||
|
@ -96,7 +96,7 @@ and say what if anything it is based on. For example, this might be:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> name: Tapestry based on HTML</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">name</span><span class="plain-syntax">:</span><span class="string-syntax"> Tapestry based on HTML</span>
|
||||
</pre>
|
||||
<p class="commentary">That is the only compulsory content; with that one line in one file, the
|
||||
Tapestry pattern is ready for use. (But of course it behaves identically
|
||||
|
@ -111,7 +111,7 @@ part. Thus, for example,
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> name: HTML</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">name</span><span class="plain-syntax">:</span><span class="string-syntax"> HTML</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b>There are then a handful of other, optional, settings. The following are
|
||||
all inherited automatically from the pattern we are based on, unless we
|
||||
|
@ -119,31 +119,22 @@ set them ourselves.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> format: F</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">format</span><span class="plain-syntax">:</span><span class="string-syntax"> F</span>
|
||||
</pre>
|
||||
<p class="commentary">sets the format. At present, this must be <span class="extract"><span class="extract-syntax">HTML</span></span>, <span class="extract"><span class="extract-syntax">plain</span></span> (plain text),
|
||||
<span class="extract"><span class="extract-syntax">ePub</span></span>, <span class="extract"><span class="extract-syntax">TeX</span></span>, <span class="extract"><span class="extract-syntax">DVI</span></span>, or <span class="extract"><span class="extract-syntax">PDF</span></span>.
|
||||
<span class="extract"><span class="extract-syntax">ePub</span></span>, <span class="extract"><span class="extract-syntax">TeX</span></span>, or <span class="extract"><span class="extract-syntax">TestingInweb</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> number sections: yes</span>
|
||||
<span class="plain-syntax"> number sections: no</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">number sections</span><span class="plain-syntax">:</span><span class="string-syntax"> yes</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">number sections</span><span class="plain-syntax">:</span><span class="string-syntax"> no</span>
|
||||
</pre>
|
||||
<p class="commentary">causes the weaver to apply numbers to section headings: the first included will
|
||||
be number 1, and so on. Default is <span class="extract"><span class="extract-syntax">no</span></span>.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> embed CSS: yes</span>
|
||||
<span class="plain-syntax"> embed CSS: no</span>
|
||||
</pre>
|
||||
<p class="commentary">causes the weaver to embed copies of CSS files into each HTML file it creates,
|
||||
rather than to link to them. Default is <span class="extract"><span class="extract-syntax">no</span></span>, and there's no effect on non-HTML
|
||||
formats.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> default range: R</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">default range</span><span class="plain-syntax">:</span><span class="string-syntax"> R</span>
|
||||
</pre>
|
||||
<p class="commentary">tells the weaver to assume the range <span class="extract"><span class="extract-syntax">R</span></span>, if the user tries to weave a
|
||||
multi-section web with this pattern. (For example, the standard HTML pattern
|
||||
|
@ -159,14 +150,14 @@ pattern, and is not inherited from any patterns it is based on.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> bibliographic data: K = V</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">bibliographic data</span><span class="plain-syntax">:</span><span class="string-syntax"> K = V</span>
|
||||
</pre>
|
||||
<p class="commentary">tells the weaver to override the bibliographic data on any web it weaves, setting
|
||||
the key <span class="extract"><span class="extract-syntax">K</span></span> to the value <span class="extract"><span class="extract-syntax">V</span></span>. For example:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> bibliographic data: Booklet Title = A formal grammar for Inform 7</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">bibliographic data</span><span class="plain-syntax">:</span><span class="string-syntax"> Booklet Title = A formal grammar for Inform 7</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. </b>It can be useful to do some post-processing after each woven file is made.
|
||||
For an example, see the <span class="extract"><span class="extract-syntax">PDFTeX</span></span> pattern, which simply uses the <span class="extract"><span class="extract-syntax">TeX</span></span> pattern
|
||||
|
@ -175,11 +166,11 @@ This is done by giving the necessary commands in the pattern file:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> name: PDFTeX based on TeX</span>
|
||||
<span class="plain-syntax"> initial extension: .tex</span>
|
||||
<span class="plain-syntax"> command: pdftex -output-directory=WOVENPATH -interaction=scrollmode WOVEN.tex</span>
|
||||
<span class="plain-syntax"> command: rm WOVEN.tex</span>
|
||||
<span class="plain-syntax"> command: rm WOVEN.log</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">name</span><span class="plain-syntax">:</span><span class="string-syntax"> PDFTeX based on TeX</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">initial extension</span><span class="plain-syntax">:</span><span class="string-syntax"> .tex</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">command</span><span class="plain-syntax">:</span><span class="string-syntax"> pdftex -output-directory=WOVENPATH -interaction=scrollmode WOVEN.tex</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">command</span><span class="plain-syntax">:</span><span class="string-syntax"> rm WOVEN.tex</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">command</span><span class="plain-syntax">:</span><span class="string-syntax"> rm WOVEN.log</span>
|
||||
</pre>
|
||||
<p class="commentary">Here <span class="extract"><span class="extract-syntax">WOVEN</span></span> expands to the filename of the file which has just been woven,
|
||||
but stripped of its filename extension.
|
||||
|
@ -195,7 +186,7 @@ make <span class="extract"><span class="extract-syntax">Whatever.pdf</span></spa
|
|||
the exact shell commands being issued, run Inweb with <span class="extract"><span class="extract-syntax">-verbose</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP7"></a><b>§7. Plugins. </b>Plugins are named bundles of resources which are sometimes added to a weave,
|
||||
<p class="commentary firstcommentary"><a id="SP7"></a><b>§7. Plugins and assets. </b>Plugins are named bundles of resources which are sometimes added to a weave,
|
||||
and sometimes not, depending on its needs; they are placed in the pattern's
|
||||
folder, and Inweb has access to the plugins not only for the current pattern,
|
||||
but also for any pattern(s) it is based on. Plugins were designed for HTML,
|
||||
|
@ -207,7 +198,7 @@ be a single alphanumeric word. For example, the HTML pattern file says
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> plugin: Base</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">plugin</span><span class="plain-syntax">:</span><span class="string-syntax"> Base</span>
|
||||
</pre>
|
||||
<p class="commentary">and this ensures that every file woven by this pattern, or any pattern based
|
||||
on it, will use <span class="extract"><span class="extract-syntax">Base</span></span>. There can be multiple such commands, for multiple such
|
||||
|
@ -238,16 +229,31 @@ but with your preferred plugin names:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> mathematics plugin: MathJax3</span>
|
||||
<span class="plain-syntax"> footnotes plugin: Bigfoot</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">mathematics plugin</span><span class="plain-syntax">:</span><span class="string-syntax"> MathJax3</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">footnotes plugin</span><span class="plain-syntax">:</span><span class="string-syntax"> Bigfoot</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">Bigfoot</span></span> may eventually need to be simplified and rewritten: its big feet
|
||||
presently tread on the <span class="extract"><span class="extract-syntax">MathJax3</span></span> plugin, so right now it's not possible to
|
||||
have mathematics in a footnote when <span class="extract"><span class="extract-syntax">Bigfoot</span></span> is in use.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP8"></a><b>§8. </b>It's also possible to supply your own version of any plugin you would like
|
||||
to tinker with. If you want <span class="extract"><span class="extract-syntax">Carousel</span></span> to have rather different CSS effects,
|
||||
<p class="commentary firstcommentary"><a id="SP8"></a><b>§8. </b>So what's in a plugin? A plugin is simply a set of "assets", which are
|
||||
individual files stored in the plugin's directory. A typical asset might be
|
||||
a CSS file to help making web pages, or a file of TeX macros to help
|
||||
typeset a PDF.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Plugin inclusion happens like this:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) for each file Inweb weaves, it includes only the plugins it needs;
|
||||
</li><li>(b) if it needs <span class="extract"><span class="extract-syntax">X</span></span>, Inweb includes every asset — meaning, every file whose
|
||||
name does not begin with a <span class="extract"><span class="extract-syntax">.</span></span> — from the <span class="extract"><span class="extract-syntax">X</span></span> subdirectory of the pattern,
|
||||
or from the <span class="extract"><span class="extract-syntax">X</span></span> subdirectory of any pattern it is based on;
|
||||
</li><li>(c) but it never includes the same-named asset twice.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9"></a><b>§9. </b>This means it's possible to supply your own version of any plugin you would
|
||||
like to tinker with. If you want <span class="extract"><span class="extract-syntax">Carousel</span></span> to have rather different CSS effects,
|
||||
for example, make your own copy of <span class="extract"><span class="extract-syntax">Carousel</span></span> (copying it from the one in
|
||||
the Inweb distribution at <span class="extract"><span class="extract-syntax">inweb/Patterns/HTML/Carousel</span></span>) and place it in your
|
||||
own pattern. Files in your version will prevail over files in the built-in one.
|
||||
|
@ -259,7 +265,7 @@ pattern file can just be:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> name: MonoGitHub based on GitHubPages</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">name</span><span class="plain-syntax">:</span><span class="string-syntax"> MonoGitHub based on GitHubPages</span>
|
||||
</pre>
|
||||
<p class="commentary">Then create just one subdirectory of <span class="extract"><span class="extract-syntax">MonoGitHub</span></span>, called <span class="extract"><span class="extract-syntax">Base</span></span>, and create
|
||||
a single file in that called <span class="extract"><span class="extract-syntax">Fonts.css</span></span>, reading:
|
||||
|
@ -276,25 +282,69 @@ that in turn is based on <span class="extract"><span class="extract-syntax">HTML
|
|||
they were, and there's no need to provide duplicates here.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP9"></a><b>§9. </b>So what's in a plugin? There's not much to it. Every file in a plugin, whose
|
||||
name does not begin with a <span class="extract"><span class="extract-syntax">.</span></span>, is copied into the weave: that means it either
|
||||
gets copied to the weave destination directory, or possibly to the <span class="extract"><span class="extract-syntax">assets</span></span>
|
||||
directory specified in the colony file (if there is one). However:
|
||||
<p class="commentary firstcommentary"><a id="SP10"></a><b>§10. </b>But wait, there's more. How is an asset actually "included"? The pattern
|
||||
gets to decide this, based on the file-type of the asset, as expressed by
|
||||
its filename extension. For example, the TeX pattern says:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) If the format is HTML, and the filename ends <span class="extract"><span class="extract-syntax">.css</span></span>, then a link to the
|
||||
CSS file is automatically included in the head of the file. If the pattern
|
||||
says to <span class="extract"><span class="extract-syntax">embed CSS</span></span> (see above), then the file is spliced in rather than
|
||||
being copied.
|
||||
</li><li>(b) If the format is HTML, and the filename ends <span class="extract"><span class="extract-syntax">.js</span></span>, then a link to the
|
||||
Javascript file is automatically included in the head of the file.
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> assets: .tex embed</span>
|
||||
</pre>
|
||||
<p class="commentary">This admittedly cryptic line tells Inweb that when it includes plugins for
|
||||
this pattern, any assets ending <span class="extract"><span class="extract-syntax">.tex</span></span> should be "embedded", rather than
|
||||
copied. There are four things it can do:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(1) <span class="extract"><span class="extract-syntax">copy</span></span>. This is the default, and means that the file is simply copied
|
||||
into the weave directory, or into the <span class="extract"><span class="extract-syntax">assets</span></span> directory specified in the
|
||||
colony file, if the user gave one with <span class="extract"><span class="extract-syntax">-colony</span></span>.
|
||||
</li><li>(2) <span class="extract"><span class="extract-syntax">private copy</span></span>. The same, but this is never put into the shared <span class="extract"><span class="extract-syntax">assets</span></span>
|
||||
directory: it's always copied alongside the woven files for the web.
|
||||
</li><li>(3) <span class="extract"><span class="extract-syntax">embed</span></span>. The file is not copied. Instead, its entire contents are
|
||||
pasted into the woven file itself, when the <span class="extract"><span class="extract-syntax">[[Plugins]]</span></span> placeholder in
|
||||
the template is expanded (see below). Do not use this for binary files.
|
||||
</li><li>(4) <span class="extract"><span class="extract-syntax">collate</span></span>. The file is not copied. Instead, its entire contents are
|
||||
pasted into the woven file itself, when the <span class="extract"><span class="extract-syntax">[[Plugins]]</span></span> placeholder in
|
||||
the template is expanded (see below); but this is done as a further collation,
|
||||
not a simple transcription, so any placeholders found in the file will
|
||||
themselves be expanded. Do not use this for binary files.
|
||||
</li></ul>
|
||||
<p class="commentary">For example, the <span class="extract"><span class="extract-syntax">Breadcrumbs</span></span> plugin contains an image file and a CSS file;
|
||||
both are copied across, but a link to the CSS file is also included in the
|
||||
woven file needing to use the plugin.
|
||||
<p class="commentary firstcommentary"><a id="SP11"></a><b>§11. </b>In addition, the pattern can specify that some text referring to the
|
||||
asset file should be put into the woven file. For example, an HTML pattern
|
||||
might say this:
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP10"></a><b>§10. Embeddings. </b>Patterns with the HTML format may also want to provide "embeddings". These
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">assets</span><span class="plain-syntax">:</span><span class="string-syntax"> .js copy</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">assets</span><span class="plain-syntax">:</span><span class="string-syntax"> .js prefix = <script src="URL"></script></span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">assets</span><span class="plain-syntax">:</span><span class="string-syntax"> .css copy</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">assets</span><span class="plain-syntax">:</span><span class="string-syntax"> .css prefix = <link href="URL" rel="stylesheet" rev="stylesheet" type="text/css"></span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">assets</span><span class="plain-syntax">:</span><span class="string-syntax"> .css transform names</span>
|
||||
</pre>
|
||||
<p class="commentary">With that done, any Javascript or CSS files in its plugins will be copied over,
|
||||
but links to them will be placed into the header of the HTML file being woven.
|
||||
(The text <span class="extract"><span class="extract-syntax">URL</span></span>, in a prefix or suffix, expands to the relative URL from the
|
||||
path being woven to the asset file.)
|
||||
</p>
|
||||
|
||||
<p class="commentary">The unique command "transform names", which should be used only for CSS,
|
||||
enables the colour-scheme renaming business described below.
|
||||
</p>
|
||||
|
||||
<p class="commentary">An alternative scheme would be to embed all CSS and Javascript, thus producing
|
||||
a stand-alone HTML file. This could be achieved by:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">assets</span><span class="plain-syntax">:</span><span class="string-syntax"> .js embed</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">assets</span><span class="plain-syntax">:</span><span class="string-syntax"> .js prefix = <script></span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">assets</span><span class="plain-syntax">:</span><span class="string-syntax"> .js suffix = </script></span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">assets</span><span class="plain-syntax">:</span><span class="string-syntax"> .css embed</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">assets</span><span class="plain-syntax">:</span><span class="string-syntax"> .css prefix = <style type="text/css"></span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">assets</span><span class="plain-syntax">:</span><span class="string-syntax"> .css suffix = </style></span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">assets</span><span class="plain-syntax">:</span><span class="string-syntax"> .css transform names</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12"></a><b>§12. Embeddings. </b>Patterns with the HTML format may also want to provide "embeddings". These
|
||||
are for embedded video/audio or other gadgets, and each different "service" —
|
||||
<span class="extract"><span class="extract-syntax">YouTube</span></span>, <span class="extract"><span class="extract-syntax">SoundCloud</span></span>, and such — is represented by an embedding file.
|
||||
Inweb looks for these in the pattern's <span class="extract"><span class="extract-syntax">Embedding</span></span> subdirectory, if there is
|
||||
|
@ -308,7 +358,7 @@ by creating a similar fragment in <span class="extract"><span class="extract-syn
|
|||
would provide for embedding videos from <span class="extract"><span class="extract-syntax">WebTubeo</span></span> when using your pattern.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP11"></a><b>§11. Syntax colouring. </b>No two people ever agree on the ideal colour scheme for syntax-colouring,
|
||||
<p class="commentary firstcommentary"><a id="SP13"></a><b>§13. Syntax colouring. </b>No two people ever agree on the ideal colour scheme for syntax-colouring,
|
||||
so one prime reason to create a custom pattern is to change Inweb's defaults.
|
||||
</p>
|
||||
|
||||
|
@ -335,20 +385,20 @@ the single line
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> name: SnakeSkin based on HTML</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">name</span><span class="plain-syntax">:</span><span class="string-syntax"> SnakeSkin based on HTML</span>
|
||||
</pre>
|
||||
<p class="commentary">(or perhaps based on <span class="extract"><span class="extract-syntax">GitHubPages</span></span>, if you want to host there); and then
|
||||
a colouring file in <span class="extract"><span class="extract-syntax">SnakeSkin/Colouring/Anaconda-Colours.css</span></span>. You should
|
||||
make this by copying the default <span class="extract"><span class="extract-syntax">Colours.css</span></span> and tinkering.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP12"></a><b>§12. </b>Note that Inweb supports multiple languages in the same weave, each having
|
||||
<p class="commentary firstcommentary"><a id="SP14"></a><b>§14. </b>Note that Inweb supports multiple languages in the same weave, each having
|
||||
their own colour schemes. To do this, it renames CSS spans on the fly in
|
||||
order to prevent namespace clashes. But you can forget this, because it's
|
||||
automatic.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP13"></a><b>§13. Templates. </b>The final possible ingredient for a pattern is a "template"; this is a file
|
||||
<p class="commentary firstcommentary"><a id="SP15"></a><b>§15. Templates. </b>The final possible ingredient for a pattern is a "template"; this is a file
|
||||
like a pro-forma letter, into which just the details need to be entered.
|
||||
Inweb does this in two main circumstances:
|
||||
</p>
|
||||
|
@ -370,7 +420,7 @@ the sake of plugins. But the author of a pattern can't control that, whereas
|
|||
she can write her own <span class="extract"><span class="extract-syntax">template-body.html</span></span> and/or <span class="extract"><span class="extract-syntax">template-index.html</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP14"></a><b>§14. </b>For example, here is a template file for making an HTML page:
|
||||
<p class="commentary firstcommentary"><a id="SP16"></a><b>§16. </b>For example, here is a template file for making an HTML page:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -401,7 +451,7 @@ name of a section or chapter, if that's what the file will contain. Another
|
|||
sometimes useful case to know is <span class="extract"><span class="extract-syntax">[[Capitalized Title]]</span></span>, which is the title
|
||||
in BLOCK CAPITAL LETTERS.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP15"></a><b>§15. </b>Other placeholders, not used in the example above, include:
|
||||
<p class="commentary firstcommentary"><a id="SP17"></a><b>§17. </b>Other placeholders, not used in the example above, include:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) <span class="extract"><span class="extract-syntax">[[Template X]]</span></span> expands to an insertion of the template file <span class="extract"><span class="extract-syntax">X</span></span>.
|
||||
|
@ -410,7 +460,7 @@ a colony of webs — see <a href="M-mwiw.html" class="internal">Making Weave
|
|||
syntaxes to do with links and URLs.
|
||||
</li><li>(c) <span class="extract"><span class="extract-syntax">[[Breadcrumbs]]</span></span> expands to the HTML for the breadcrumb trail.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP16"></a><b>§16. </b>The <span class="extract"><span class="extract-syntax">template-index.html</span></span> file has access to additional placeholders
|
||||
<p class="commentary firstcommentary"><a id="SP18"></a><b>§18. </b>The <span class="extract"><span class="extract-syntax">template-index.html</span></span> file has access to additional placeholders
|
||||
enabling it to generate contents pages:
|
||||
</p>
|
||||
|
||||
|
@ -440,7 +490,7 @@ substitution is the leafname of the original <span class="extract"><span class="
|
|||
average number of lines per paragraph: where this is large, the section
|
||||
is rather raw and literate programming is not being used to the full.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP17"></a><b>§17. </b><span class="extract"><span class="extract-syntax">[[Repeat Chapter]]</span></span> and <span class="extract"><span class="extract-syntax">[[Repeat Section]]</span></span> begin blocks of lines which
|
||||
<p class="commentary firstcommentary"><a id="SP19"></a><b>§19. </b><span class="extract"><span class="extract-syntax">[[Repeat Chapter]]</span></span> and <span class="extract"><span class="extract-syntax">[[Repeat Section]]</span></span> begin blocks of lines which
|
||||
are repeated for each chapter or section: the material to be repeated
|
||||
continues to the matching <span class="extract"><span class="extract-syntax">[[End Repeat]</span></span> line. The ``current chapter or
|
||||
section'' mentioned above is the one selected in the current innermost
|
||||
|
|
|
@ -121,7 +121,7 @@ example shows all three being used:
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="function-syntax">@h</span><span class="plain-syntax"> Primality.</span>
|
||||
<span class="plain-syntax"> We provide this as a function which determines whether a number</span>
|
||||
<span class="plain-syntax"> is prime:</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">is prime</span><span class="plain-syntax">:</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="function-syntax">@d</span><span class="plain-syntax"> TRUE 1</span>
|
||||
<span class="plain-syntax"> </span><span class="function-syntax">@d</span><span class="plain-syntax"> FALSE 0</span>
|
||||
|
@ -410,7 +410,7 @@ style font, <span class="extract"><span class="extract-syntax">thus</span></span
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="function-syntax">@</span><span class="plain-syntax"> Text placed between vertical strokes will be set in a fixed-space, code</span>
|
||||
<span class="plain-syntax"> style font, |thus|. This paragraph appears in the web you are reading thus:</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">style font, |thus|. This paragraph appears in the web you are reading thus</span><span class="plain-syntax">:</span>
|
||||
</pre>
|
||||
<p class="commentary">This notation may be inconvenient if you need the vertical stroke character
|
||||
for something else, especially as the notation is used both in code comments
|
||||
|
@ -428,7 +428,7 @@ paragraph commentary; we would then need to write...
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="function-syntax">@</span><span class="plain-syntax"> Text placed between vertical strokes will be set in a fixed-space, code</span>
|
||||
<span class="plain-syntax"> style font, %%thus%%. This paragraph appears in the web you are reading thus:</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">style font, %%thus%%. This paragraph appears in the web you are reading thus</span><span class="plain-syntax">:</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11"></a><b>§11. </b>A line written thus:
|
||||
</p>
|
||||
|
@ -848,7 +848,7 @@ of the Riemann zeta function \(\zeta'(z)\) at \(z=2\).
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> For example, it's known that the average running time of Euclid's GCD</span>
|
||||
<span class="plain-syntax"> algorithm on $a$ and numbers coprime to $a$ is:</span>
|
||||
<span class="plain-syntax"> </span><span class="element-syntax">algorithm on $a$ and numbers coprime to $a$ is</span><span class="plain-syntax">:</span>
|
||||
<span class="plain-syntax"> $$ \tau (a)={\frac {12}{\pi ^{2}}}\ln 2\ln a+C+O(a^{-1/6-\varepsilon }) $$</span>
|
||||
<span class="plain-syntax"> where $C$ is Porter's constant,</span>
|
||||
<span class="plain-syntax"> $$ C=-{\frac {1}{2}}+{\frac {6\ln 2}{\pi ^{2}}} \left(4\gamma - {\frac {24}{\pi^{2}}}\zeta'(2)+3\ln 2-2\right)\approx 1.467 $$</span>
|
||||
|
|
|
@ -571,9 +571,9 @@ has been eclipsed by...
|
|||
only if, the need arises: for example, the HTML renderer requests the plugin
|
||||
<span class="extract"><span class="extract-syntax">Carousel</span></span> only if an image carousel is actually called for. Requests are
|
||||
made by calling <a href="1-ts.html#SP3" class="internal">Swarm::ensure_plugin</a> or <a href="1-ts.html#SP3" class="internal">Swarm::ensure_colour_scheme</a>,
|
||||
and see also the underlying code at <a href="5-wp.html" class="internal">Weave Plugins</a>. (We want our HTML to
|
||||
run as little JavaScript as necessary at load time, which is why we don't
|
||||
just give every weave every possible facility.)
|
||||
and see also the underlying code at <a href="1-apacs.html" class="internal">Assets, Plugins and Colour Schemes</a>.
|
||||
(We want our HTML to run as little JavaScript as necessary at load time, which
|
||||
is why we don't just give every weave every possible facility.)
|
||||
</p>
|
||||
|
||||
<p class="commentary">The most complex issue for HTML rendering is working out the URLs for links:
|
||||
|
|
|
@ -109,6 +109,10 @@
|
|||
<p><a href="1-ptt.html"><spon class="sectiontitle">Patterns</span></a> -
|
||||
<span class="purpose">Managing weave patterns, which are bundled configuration settings for weaving.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="1-apacs.html"><spon class="sectiontitle">Assets, Plugins and Colour Schemes</span></a> -
|
||||
<span class="purpose">Mainly for HTML, to add the necessary JavaScript for unusual requirements such as equations or footnotes.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
|
@ -233,10 +237,6 @@
|
|||
<p><a href="5-df.html"><spon class="sectiontitle">Debugging Format</span></a> -
|
||||
<span class="purpose">A format which renders as a plain-text serialisation of the Inweb weave tree, useful only for testing the weaver.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="5-wp.html"><spon class="sectiontitle">Weave Plugins</span></a> -
|
||||
<span class="purpose">Mainly for HTML, to add the necessary JavaScript for unusual requirements such as equations or footnotes.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p><a href="5-tu.html"><spon class="sectiontitle">TeX Utilities</span></a> -
|
||||
<span class="purpose">A few conveniences for using Inweb with TeX.</span></p>
|
||||
|
|
Loading…
Reference in a new issue