Added hyperlinks
This commit is contained in:
parent
a9ce8d1be8
commit
699a03b74e
24 changed files with 1211 additions and 833 deletions
|
@ -26,6 +26,7 @@ typedef struct source_line {
|
|||
int command_code; /* used only for |COMMAND_LCAT| lines: a |*_CMD| value */
|
||||
int default_defn; /* used only for |BEGIN_DEFINITION_LCAT| lines */
|
||||
int plainer; /* used only for |BEGIN_CODE_LCAT| lines: suppresses box */
|
||||
int enable_hyperlinks; /* used only for |CODE_BODY_LCAT| lines: link URLs in weave */
|
||||
struct programming_language *colour_as; /* used only for |TEXT_EXTRACT_LCAT| lines */
|
||||
int is_commentary; /* flag */
|
||||
struct function *function_defined; /* if any C-like function is defined on this line */
|
||||
|
@ -51,6 +52,7 @@ source_line *Lines::new_source_line(text_stream *line, text_file_position *tfp)
|
|||
sl->command_code = NO_CMD;
|
||||
sl->default_defn = FALSE;
|
||||
sl->plainer = FALSE;
|
||||
sl->enable_hyperlinks = FALSE;
|
||||
sl->colour_as = NULL;
|
||||
sl->is_commentary = FALSE;
|
||||
sl->function_defined = NULL;
|
||||
|
|
|
@ -34,7 +34,9 @@ markup syntax, and trying to detect incorrect uses of one within the other.
|
|||
|
||||
@<Parse a section@> =
|
||||
int comment_mode = TRUE, extract_mode = FALSE;
|
||||
int code_lcat_for_body = NO_LCAT, code_plainness_for_body = FALSE;
|
||||
int code_lcat_for_body = NO_LCAT,
|
||||
code_plainness_for_body = FALSE,
|
||||
hyperlink_body = FALSE;
|
||||
programming_language *code_pl_for_body = NULL;
|
||||
int before_bar = TRUE;
|
||||
int next_par_number = 1;
|
||||
|
@ -339,6 +341,7 @@ handling. We'll call these "paragraph macros".
|
|||
code_lcat_for_body = CODE_BODY_LCAT; /* code follows on subsequent lines */
|
||||
code_pl_for_body = NULL;
|
||||
code_plainness_for_body = FALSE;
|
||||
hyperlink_body = FALSE;
|
||||
DISCARD_TEXT(para_macro_name);
|
||||
continue;
|
||||
}
|
||||
|
@ -425,14 +428,26 @@ division in the current section.
|
|||
Main::error_in_web(I"unknown material after '='", L);
|
||||
}
|
||||
code_plainness_for_body = L->plainer;
|
||||
hyperlink_body = L->enable_hyperlinks;
|
||||
Regexp::dispose_of(&mr);
|
||||
Regexp::dispose_of(&mr2);
|
||||
continue;
|
||||
|
||||
@<Make plainer@> =
|
||||
if (Str::eq(mr2.exp[0], I"undisplayed")) L->plainer = TRUE;
|
||||
else if (Str::len(mr2.exp[0]) > 0)
|
||||
Main::error_in_web(I"only 'undisplayed' can precede 'text' here", L);
|
||||
match_results mr3 = Regexp::create_mr();
|
||||
while (TRUE) {
|
||||
if (Regexp::match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) {
|
||||
if (Str::eq(mr3.exp[0], I"undisplayed")) L->plainer = TRUE;
|
||||
else if (Str::eq(mr3.exp[0], I"hyperlinked")) L->enable_hyperlinks = TRUE;
|
||||
else {
|
||||
Main::error_in_web(
|
||||
I"only 'undisplayed' and/or 'hyperlinked' can precede 'text' here", L);
|
||||
}
|
||||
} else break;
|
||||
Str::clear(mr2.exp[0]);
|
||||
Str::copy(mr2.exp[0], mr3.exp[1]);
|
||||
}
|
||||
Regexp::dispose_of(&mr3);
|
||||
|
||||
@<Spool from file@> =
|
||||
L->category = BEGIN_CODE_LCAT;
|
||||
|
@ -571,6 +586,7 @@ follows:
|
|||
code_pl_for_body = NULL;
|
||||
comment_mode = FALSE;
|
||||
code_plainness_for_body = FALSE;
|
||||
hyperlink_body = FALSE;
|
||||
|
||||
@ This is for |@d| and |@define|. Definitions are intended to translate to
|
||||
C preprocessor macros, Inform 6 |Constant|s, and so on.
|
||||
|
@ -744,6 +760,7 @@ CWEB, but is needed for languages which don't allow multi-line definitions.)
|
|||
if ((L->category != BEGIN_DEFINITION_LCAT) && (L->category != COMMAND_LCAT)) {
|
||||
L->category = code_lcat_for_body;
|
||||
L->plainer = code_plainness_for_body;
|
||||
L->enable_hyperlinks = hyperlink_body;
|
||||
if (L->category == TEXT_EXTRACT_LCAT) L->colour_as = code_pl_for_body;
|
||||
}
|
||||
|
||||
|
|
|
@ -339,14 +339,11 @@ in the source is set indented in code style.
|
|||
Str::copy(matter, mr.exp[1]);
|
||||
TEMPORARY_TEXT(colouring);
|
||||
for (int i=0; i<Str::len(original); i++) PUT_TO(colouring, PLAIN_COLOUR);
|
||||
Formats::source_code(OUT, wv, 1, I"", original, colouring, I"", TRUE, TRUE, FALSE);
|
||||
Formats::source_code(OUT, wv, 1, I"", original, colouring, I"", TRUE, TRUE,
|
||||
FALSE, L->enable_hyperlinks);
|
||||
Formats::text(OUT, wv, matter);
|
||||
DISCARD_TEXT(colouring);
|
||||
DISCARD_TEXT(original);
|
||||
if (no_inweb_errors == 0) {
|
||||
Main::error_in_web(I"Old-style pipes here", L);
|
||||
no_inweb_errors = 0;
|
||||
}
|
||||
continue;
|
||||
} else if (state->kind_of_material != REGULAR_MATERIAL) {
|
||||
Formats::change_material(OUT, wv, state->kind_of_material, REGULAR_MATERIAL,
|
||||
|
@ -389,7 +386,8 @@ and macro usage is rendered differently.
|
|||
}
|
||||
|
||||
Formats::source_code(OUT, wv, tab_stops_of_indentation, prefatory,
|
||||
matter, colouring, concluding_comment, (found == 0)?TRUE:FALSE, TRUE, TRUE);
|
||||
matter, colouring, concluding_comment, (found == 0)?TRUE:FALSE, TRUE,
|
||||
TRUE, L->enable_hyperlinks);
|
||||
DISCARD_TEXT(colouring);
|
||||
DISCARD_TEXT(concluding_comment);
|
||||
DISCARD_TEXT(prefatory);
|
||||
|
@ -499,7 +497,7 @@ otherwise, they are set flush right.
|
|||
Str::copy(matter, mr.exp[2]);
|
||||
Formats::source_code(OUT, wv, tab_stops_of_indentation, prefatory,
|
||||
mr.exp[0], colouring, concluding_comment, (found == 0)?TRUE:FALSE,
|
||||
FALSE, TRUE);
|
||||
FALSE, TRUE, L->enable_hyperlinks);
|
||||
LanguageMethods::reset_syntax_colouring(S->sect_language);
|
||||
found++;
|
||||
int defn = FALSE;
|
||||
|
|
|
@ -26,6 +26,7 @@ void HTMLFormat::create(void) {
|
|||
METHOD_ADD(wf, PARAGRAPH_HEADING_FOR_MTID, HTMLFormat::paragraph_heading);
|
||||
METHOD_ADD(wf, SOURCE_CODE_FOR_MTID, HTMLFormat::source_code);
|
||||
METHOD_ADD(wf, INLINE_CODE_FOR_MTID, HTMLFormat::inline_code);
|
||||
METHOD_ADD(wf, URL_FOR_MTID, HTMLFormat::url);
|
||||
METHOD_ADD(wf, DISPLAY_LINE_FOR_MTID, HTMLFormat::display_line);
|
||||
METHOD_ADD(wf, ITEM_FOR_MTID, HTMLFormat::item);
|
||||
METHOD_ADD(wf, BAR_FOR_MTID, HTMLFormat::bar);
|
||||
|
@ -282,7 +283,7 @@ void HTMLFormat::drop_initial_breadcrumbs(OUTPUT_STREAM, linked_list *crumbs, in
|
|||
void HTMLFormat::source_code(weave_format *self, text_stream *OUT, weave_target *wv,
|
||||
int tab_stops_of_indentation, text_stream *prefatory, text_stream *matter,
|
||||
text_stream *colouring, text_stream *concluding_comment,
|
||||
int starts, int finishes, int code_mode) {
|
||||
int starts, int finishes, int code_mode, int linked) {
|
||||
if (starts) {
|
||||
if (Str::len(prefatory) > 0) {
|
||||
HTML_OPEN_WITH("span", "class=\"definitionkeyword\"");
|
||||
|
@ -293,12 +294,12 @@ void HTMLFormat::source_code(weave_format *self, text_stream *OUT, weave_target
|
|||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, matter, L"(%c*) from (%C+) *")) {
|
||||
HTMLFormat::source_code(self, OUT, wv, 0, NULL, mr.exp[0], colouring,
|
||||
concluding_comment, starts, FALSE, code_mode);
|
||||
concluding_comment, starts, FALSE, code_mode, linked);
|
||||
HTML_OPEN_WITH("span", "class=\"definitionkeyword\"");
|
||||
WRITE(" from ");
|
||||
HTML_CLOSE("span");
|
||||
HTMLFormat::source_code(self, OUT, wv, 0, NULL, mr.exp[1], colouring,
|
||||
concluding_comment, FALSE, finishes, code_mode);
|
||||
concluding_comment, FALSE, finishes, code_mode, linked);
|
||||
Regexp::dispose_of(&mr);
|
||||
return;
|
||||
}
|
||||
|
@ -311,6 +312,21 @@ void HTMLFormat::source_code(weave_format *self, text_stream *OUT, weave_target
|
|||
int current_colour = -1, colour_wanted = PLAIN_COLOUR;
|
||||
for (int i=0; i < Str::len(matter); i++) {
|
||||
colour_wanted = Str::get_at(colouring, i); @<Adjust code colour as necessary@>;
|
||||
if ((linked) &&
|
||||
((ACMESupport::text_at(matter, i, I"http://")) ||
|
||||
(ACMESupport::text_at(matter, i, I"https://")))) {
|
||||
TEMPORARY_TEXT(before);
|
||||
Str::copy(before, matter); Str::truncate(before, i);
|
||||
TEMPORARY_TEXT(after);
|
||||
Str::substr(after, Str::at(matter, i), Str::end(matter));
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, after, L"(https*://%C+)(%c*)")) {
|
||||
Formats::url(OUT, wv, mr.exp[0], mr.exp[0], TRUE);
|
||||
i += Str::len(mr.exp[0]);
|
||||
}
|
||||
DISCARD_TEXT(before);
|
||||
DISCARD_TEXT(after);
|
||||
}
|
||||
if (Str::get_at(matter, i) == '<') WRITE("<");
|
||||
else if (Str::get_at(matter, i) == '>') WRITE(">");
|
||||
else if (Str::get_at(matter, i) == '&') WRITE("&");
|
||||
|
@ -347,6 +363,14 @@ void HTMLFormat::inline_code(weave_format *self, text_stream *OUT, weave_target
|
|||
}
|
||||
}
|
||||
|
||||
@ =
|
||||
void HTMLFormat::url(weave_format *self, text_stream *OUT, weave_target *wv,
|
||||
text_stream *url, text_stream *content, int external) {
|
||||
HTML::begin_link_with_class(OUT, (external)?I"external":I"internal", url);
|
||||
WRITE("%S", content);
|
||||
HTML::end_link(OUT);
|
||||
}
|
||||
|
||||
@ =
|
||||
void HTMLFormat::display_line(weave_format *self, text_stream *OUT, weave_target *wv,
|
||||
text_stream *from) {
|
||||
|
|
|
@ -79,7 +79,7 @@ void PlainText::paragraph_heading(weave_format *self, text_stream *OUT, weave_ta
|
|||
void PlainText::source_code(weave_format *self, text_stream *OUT, weave_target *wv,
|
||||
int tab_stops_of_indentation, text_stream *prefatory, text_stream *matter,
|
||||
text_stream *colouring, text_stream *concluding_comment, int starts,
|
||||
int finishes, int code_mode) {
|
||||
int finishes, int code_mode, int linked) {
|
||||
if (starts) {
|
||||
for (int i=0; i<tab_stops_of_indentation; i++)
|
||||
WRITE(" ");
|
||||
|
|
|
@ -180,7 +180,7 @@ mode once again:
|
|||
void TeX::source_code(weave_format *self, text_stream *OUT, weave_target *wv,
|
||||
int tab_stops_of_indentation, text_stream *prefatory, text_stream *matter,
|
||||
text_stream *colouring, text_stream *concluding_comment,
|
||||
int starts, int finishes, int code_mode) {
|
||||
int starts, int finishes, int code_mode, int linked) {
|
||||
if (code_mode == FALSE) WRITE("\\smallskip\\par\\noindent");
|
||||
if (starts) {
|
||||
@<Weave a suitable horizontal advance for that many tab stops@>;
|
||||
|
|
|
@ -185,14 +185,14 @@ been syntax-coloured; there can also be some indentation, and perhaps even some
|
|||
VMETHOD_TYPE(SOURCE_CODE_FOR_MTID, weave_format *wf, text_stream *OUT, weave_target *wv,
|
||||
int tab_stops_of_indentation, text_stream *prefatory, text_stream *matter,
|
||||
text_stream *colouring, text_stream *concluding_comment, int starts, int finishes,
|
||||
int code_mode)
|
||||
int code_mode, int linked)
|
||||
|
||||
void Formats::source_code(OUTPUT_STREAM, weave_target *wv, int tab_stops_of_indentation,
|
||||
text_stream *prefatory, text_stream *matter, text_stream *colouring,
|
||||
text_stream *concluding_comment, int starts, int finishes, int code_mode) {
|
||||
text_stream *concluding_comment, int starts, int finishes, int code_mode, int linked) {
|
||||
weave_format *wf = wv->format;
|
||||
VMETHOD_CALL(wf, SOURCE_CODE_FOR_MTID, OUT, wv, tab_stops_of_indentation,
|
||||
prefatory, matter, colouring, concluding_comment, starts, finishes, code_mode);
|
||||
prefatory, matter, colouring, concluding_comment, starts, finishes, code_mode, linked);
|
||||
}
|
||||
|
||||
@ More primitively, this method weaves a piece of code which has been coloured
|
||||
|
@ -208,11 +208,28 @@ void Formats::source_fragment(OUTPUT_STREAM, weave_target *wv, text_stream *frag
|
|||
VMETHOD_CALL(wf, INLINE_CODE_FOR_MTID, OUT, wv, TRUE);
|
||||
TEMPORARY_TEXT(colouring);
|
||||
for (int i=0; i< Str::len(fragment); i++) PUT_TO(colouring, EXTRACT_COLOUR);
|
||||
Formats::source_code(OUT, wv, 0, I"", fragment, colouring, I"", FALSE, FALSE, TRUE);
|
||||
Formats::source_code(OUT, wv, 0, I"", fragment, colouring, I"", FALSE, FALSE, TRUE, FALSE);
|
||||
DISCARD_TEXT(colouring);
|
||||
VMETHOD_CALL(wf, INLINE_CODE_FOR_MTID, OUT, wv, FALSE);
|
||||
}
|
||||
|
||||
@ And this weaves a URL, hyperlinking it where possible.
|
||||
|
||||
@e URL_FOR_MTID
|
||||
|
||||
=
|
||||
VMETHOD_TYPE(URL_FOR_MTID, weave_format *wf, text_stream *OUT, weave_target *wv,
|
||||
text_stream *url, text_stream *content, int external)
|
||||
void Formats::url(OUTPUT_STREAM, weave_target *wv, text_stream *url,
|
||||
text_stream *content, int external) {
|
||||
weave_format *wf = wv->format;
|
||||
if (Methods::provided(wf->methods, URL_FOR_MTID)) {
|
||||
VMETHOD_CALL(wf, URL_FOR_MTID, OUT, wv, url, content, external);
|
||||
} else {
|
||||
WRITE("%S", content);
|
||||
}
|
||||
}
|
||||
|
||||
@ This method produces the |>> Example| bits of example source text, really
|
||||
a convenience for Inform 7 code commentary.
|
||||
|
||||
|
@ -396,6 +413,25 @@ void Formats::text_r(OUTPUT_STREAM, weave_target *wv, text_stream *id,
|
|||
}
|
||||
}
|
||||
}
|
||||
for (int i=0; i < Str::len(id); i++) {
|
||||
if ((within == FALSE) &&
|
||||
((ACMESupport::text_at(id, i, I"http://")) ||
|
||||
(ACMESupport::text_at(id, i, I"https://")))) {
|
||||
TEMPORARY_TEXT(before);
|
||||
Str::copy(before, id); Str::truncate(before, i);
|
||||
TEMPORARY_TEXT(after);
|
||||
Str::substr(after, Str::at(id, i), Str::end(id));
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, after, L"(https*://%C+)(%c*)")) {
|
||||
Formats::text_r(OUT, wv, before, within, comments);
|
||||
Formats::url(OUT, wv, mr.exp[0], mr.exp[0], TRUE);
|
||||
Formats::text_r(OUT, wv, mr.exp[1], within, comments);
|
||||
return;
|
||||
}
|
||||
DISCARD_TEXT(before);
|
||||
DISCARD_TEXT(after);
|
||||
}
|
||||
}
|
||||
if (within) {
|
||||
Formats::source_fragment(OUT, wv, id);
|
||||
} else {
|
||||
|
|
|
@ -360,6 +360,27 @@ For example,
|
|||
=
|
||||
...which is essential in order to restore the state of
|
||||
=
|
||||
|
||||
@ URLs in the web are automatically recognised and a weave to HTML will
|
||||
make them into links. For example:
|
||||
= (text)
|
||||
For further reading, see: https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships
|
||||
=
|
||||
For further reading, see: https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships
|
||||
|
||||
Note that URLs are considered to continue to the next white space, so don't
|
||||
end them with full stops or commas.
|
||||
|
||||
URLs will also be recognised in any text extract marked as |hyperlinked|.
|
||||
For example,
|
||||
= (text)
|
||||
Compare: https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes
|
||||
=
|
||||
produces:
|
||||
= (hyperlinked text)
|
||||
Compare: https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes
|
||||
=
|
||||
|
||||
@ Pictures must be in PNG, JPG or PDF format and can be included with lines
|
||||
like:
|
||||
= (text as Inweb)
|
||||
|
|
|
@ -623,6 +623,8 @@ or semver, for the web. For example, if the Contents included:
|
|||
then the semver would be |6.2.12-alpha.1+6Q26|. This is accessible within
|
||||
the web as the variable |Semantic Version Number|.
|
||||
|
||||
For more on semvers, see: https://semver.org
|
||||
|
||||
@ A special advancing mechanism exists to update build numbers and dates.
|
||||
Running Inweb with |-advance-build W| checks the build date for web |W|:
|
||||
if it differs from today, then it is changed to today, and the build code
|
||||
|
|
1586
Tangled/inweb.c
1586
Tangled/inweb.c
File diff suppressed because it is too large
Load diff
|
@ -517,7 +517,7 @@ source:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Main::error_in_web is used in 1/cnf (<a href="1-cnf.html#SP5">§5</a>), 2/tp (<a href="2-tp.html#SP1_1_6_3">§1.1.6.3</a>, <a href="2-tp.html#SP1_1_6_4">§1.1.6.4</a>, <a href="2-tp.html#SP1_1_6_7">§1.1.6.7</a>, <a href="2-tp.html#SP1_1_6_7_1">§1.1.6.7.1</a>, <a href="2-tp.html#SP1_1_6_5_1">§1.1.6.5.1</a>, <a href="2-tp.html#SP1_1_6_5_1_1">§1.1.6.5.1.1</a>, <a href="2-tp.html#SP1_1_6_5_1_2">§1.1.6.5.1.2</a>, <a href="2-tp.html#SP1_1_6_5_1_3">§1.1.6.5.1.3</a>, <a href="2-tp.html#SP1_1_6_5_1_4">§1.1.6.5.1.4</a>, <a href="2-tp.html#SP1_1_6_5_1_7">§1.1.6.5.1.7</a>, <a href="2-tp.html#SP3">§3</a>), 2/ec (<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>), 3/ta (<a href="3-ta.html#SP4_1">§4.1</a>), 3/tw (<a href="3-tw.html#SP1_3_3_1_8_4">§1.3.3.1.8.4</a>), 3/tt (<a href="3-tt.html#SP1_1_1_1">§1.1.1.1</a>, <a href="3-tt.html#SP3_1">§3.1</a>), 4/lm (<a href="4-lm.html#SP8">§8</a>), 4/cl (<a href="4-cl.html#SP2">§2</a>, <a href="4-cl.html#SP2_1">§2.1</a>, <a href="4-cl.html#SP2_4_2_1">§2.4.2.1</a>, <a href="4-cl.html#SP2_4_2_5">§2.4.2.5</a>, <a href="4-cl.html#SP10">§10</a>).</p>
|
||||
<p class="endnote">The function Main::error_in_web is used in 1/cnf (<a href="1-cnf.html#SP5">§5</a>), 2/tp (<a href="2-tp.html#SP1_1_6_3">§1.1.6.3</a>, <a href="2-tp.html#SP1_1_6_4">§1.1.6.4</a>, <a href="2-tp.html#SP1_1_6_7">§1.1.6.7</a>, <a href="2-tp.html#SP1_1_6_7_1">§1.1.6.7.1</a>, <a href="2-tp.html#SP1_1_6_5_1">§1.1.6.5.1</a>, <a href="2-tp.html#SP1_1_6_5_1_1">§1.1.6.5.1.1</a>, <a href="2-tp.html#SP1_1_6_5_1_2">§1.1.6.5.1.2</a>, <a href="2-tp.html#SP1_1_6_5_1_3">§1.1.6.5.1.3</a>, <a href="2-tp.html#SP1_1_6_5_1_4">§1.1.6.5.1.4</a>, <a href="2-tp.html#SP1_1_6_5_1_7">§1.1.6.5.1.7</a>, <a href="2-tp.html#SP3">§3</a>), 2/ec (<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>), 3/ta (<a href="3-ta.html#SP4_1">§4.1</a>), 3/tt (<a href="3-tt.html#SP1_1_1_1">§1.1.1.1</a>, <a href="3-tt.html#SP3_1">§3.1</a>), 4/lm (<a href="4-lm.html#SP8">§8</a>), 4/cl (<a href="4-cl.html#SP2">§2</a>, <a href="4-cl.html#SP2_1">§2.1</a>, <a href="4-cl.html#SP2_4_2_1">§2.4.2.1</a>, <a href="4-cl.html#SP2_4_2_5">§2.4.2.5</a>, <a href="4-cl.html#SP10">§10</a>).</p>
|
||||
|
||||
<hr class="tocbar">
|
||||
<ul class="toc"><li><a href="1-bsc.html">Back to 'Basics'</a></li><li><a href="1-cnf.html">Continue with 'Configuration'</a></li></ul><hr class="tocbar">
|
||||
|
|
|
@ -331,7 +331,7 @@ from each other then this routine will lock up into an infinite loop.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Patterns::obtain_filename is used in <a href="#SP6">§6</a>, 3/ts (<a href="3-ts.html#SP3">§3</a>), 3/ti (<a href="3-ti.html#SP1">§1</a>, <a href="3-ti.html#SP2">§2</a>, <a href="3-ti.html#SP2_1_3">§2.1.3</a>, <a href="3-ti.html#SP5_1">§5.1</a>), 5/tf (<a href="5-tf.html#SP3_1">§3.1</a>), 5/hf (<a href="5-hf.html#SP6">§6</a>, <a href="5-hf.html#SP9">§9</a>, <a href="5-hf.html#SP27">§27</a>).</p>
|
||||
<p class="endnote">The function Patterns::obtain_filename is used in <a href="#SP6">§6</a>, 3/ts (<a href="3-ts.html#SP3">§3</a>), 3/ti (<a href="3-ti.html#SP1">§1</a>, <a href="3-ti.html#SP2">§2</a>, <a href="3-ti.html#SP2_1_3">§2.1.3</a>, <a href="3-ti.html#SP5_1">§5.1</a>), 5/tf (<a href="5-tf.html#SP3_1">§3.1</a>), 5/hf (<a href="5-hf.html#SP6">§6</a>, <a href="5-hf.html#SP9">§9</a>, <a href="5-hf.html#SP28">§28</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP6"></a><b>§6. </b>When we eventually want to deal with the <code class="display"><span class="extract">use P</span></code> commands, which call
|
||||
for payloads to be copied into weave, we make good use of the above:
|
||||
|
@ -381,7 +381,7 @@ for payloads to be copied into weave, we make good use of the above:
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Patterns::copy_file_into_weave is used in <a href="#SP6">§6</a>, 5/hf (<a href="5-hf.html#SP6">§6</a>, <a href="5-hf.html#SP9">§9</a>, <a href="5-hf.html#SP15">§15</a>).</p>
|
||||
<p class="endnote">The function Patterns::copy_file_into_weave is used in <a href="#SP6">§6</a>, 5/hf (<a href="5-hf.html#SP6">§6</a>, <a href="5-hf.html#SP9">§9</a>, <a href="5-hf.html#SP16">§16</a>).</p>
|
||||
|
||||
<p class="endnote">The function Patterns::copy_up_file_into_weave is used in <a href="#SP6">§6</a>, 5/hf (<a href="5-hf.html#SP6">§6</a>, <a href="5-hf.html#SP9">§9</a>).</p>
|
||||
|
||||
|
|
|
@ -52,6 +52,7 @@ correspond to one of these:
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">command_code</span><span class="plain">; </span><span class="comment"> used only for <code class="display"><span class="extract">COMMAND_LCAT</span></code> lines: a <code class="display"><span class="extract">*_CMD</span></code> value</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">default_defn</span><span class="plain">; </span><span class="comment"> used only for <code class="display"><span class="extract">BEGIN_DEFINITION_LCAT</span></code> lines</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">plainer</span><span class="plain">; </span><span class="comment"> used only for <code class="display"><span class="extract">BEGIN_CODE_LCAT</span></code> lines: suppresses box</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">enable_hyperlinks</span><span class="plain">; </span><span class="comment"> used only for <code class="display"><span class="extract">CODE_BODY_LCAT</span></code> lines: link URLs in weave</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">programming_language</span><span class="plain"> *</span><span class="identifier">colour_as</span><span class="plain">; </span><span class="comment"> used only for <code class="display"><span class="extract">TEXT_EXTRACT_LCAT</span></code> lines</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">is_commentary</span><span class="plain">; </span><span class="comment"> flag</span>
|
||||
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">function</span><span class="plain"> *</span><span class="identifier">function_defined</span><span class="plain">; </span><span class="comment"> if any C-like function is defined on this line</span>
|
||||
|
@ -84,6 +85,7 @@ correspond to one of these:
|
|||
<span class="identifier">sl</span><span class="plain">-></span><span class="element">command_code</span><span class="plain"> = </span><span class="constant">NO_CMD</span><span class="plain">;</span>
|
||||
<span class="identifier">sl</span><span class="plain">-></span><span class="element">default_defn</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">sl</span><span class="plain">-></span><span class="element">plainer</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">sl</span><span class="plain">-></span><span class="element">enable_hyperlinks</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">sl</span><span class="plain">-></span><span class="element">colour_as</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">sl</span><span class="plain">-></span><span class="element">is_commentary</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">sl</span><span class="plain">-></span><span class="element">function_defined</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
|
|
|
@ -72,7 +72,9 @@ markup syntax, and trying to detect incorrect uses of one within the other.
|
|||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">comment_mode</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">, </span><span class="identifier">extract_mode</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_lcat_for_body</span><span class="plain"> = </span><span class="constant">NO_LCAT</span><span class="plain">, </span><span class="identifier">code_plainness_for_body</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_lcat_for_body</span><span class="plain"> = </span><span class="constant">NO_LCAT</span><span class="plain">,</span>
|
||||
<span class="identifier">code_plainness_for_body</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">,</span>
|
||||
<span class="identifier">hyperlink_body</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">programming_language</span><span class="plain"> *</span><span class="identifier">code_pl_for_body</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">before_bar</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">next_par_number</span><span class="plain"> = </span><span class="constant">1</span><span class="plain">;</span>
|
||||
|
@ -542,6 +544,7 @@ handling. We'll call these "paragraph macros".
|
|||
<span class="identifier">code_lcat_for_body</span><span class="plain"> = </span><span class="constant">CODE_BODY_LCAT</span><span class="plain">; </span><span class="comment"> code follows on subsequent lines</span>
|
||||
<span class="identifier">code_pl_for_body</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">code_plainness_for_body</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">hyperlink_body</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">para_macro_name</span><span class="plain">);</span>
|
||||
<span class="reserved">continue</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -664,6 +667,7 @@ division in the current section.
|
|||
<span class="functiontext">Main::error_in_web</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"unknown material after '='"</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="identifier">code_plainness_for_body</span><span class="plain"> = </span><span class="identifier">L</span><span class="plain">-></span><span class="element">plainer</span><span class="plain">;</span>
|
||||
<span class="identifier">hyperlink_body</span><span class="plain"> = </span><span class="identifier">L</span><span class="plain">-></span><span class="element">enable_hyperlinks</span><span class="plain">;</span>
|
||||
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">);</span>
|
||||
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&</span><span class="identifier">mr2</span><span class="plain">);</span>
|
||||
<span class="reserved">continue</span><span class="plain">;</span>
|
||||
|
@ -679,9 +683,20 @@ division in the current section.
|
|||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::eq</span><span class="plain">(</span><span class="identifier">mr2</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">I</span><span class="string">"undisplayed"</span><span class="plain">)) </span><span class="identifier">L</span><span class="plain">-></span><span class="element">plainer</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">mr2</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0]) > </span><span class="constant">0</span><span class="plain">)</span>
|
||||
<span class="functiontext">Main::error_in_web</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"only 'undisplayed' can precede 'text' here"</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">);</span>
|
||||
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr3</span><span class="plain"> = </span><span class="functiontext">Regexp::create_mr</span><span class="plain">();</span>
|
||||
<span class="reserved">while</span><span class="plain"> (</span><span class="constant">TRUE</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Regexp::match</span><span class="plain">(&</span><span class="identifier">mr3</span><span class="plain">, </span><span class="identifier">mr2</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">L</span><span class="string">" *(%C+) *(%c*?)"</span><span class="plain">)) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::eq</span><span class="plain">(</span><span class="identifier">mr3</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">I</span><span class="string">"undisplayed"</span><span class="plain">)) </span><span class="identifier">L</span><span class="plain">-></span><span class="element">plainer</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::eq</span><span class="plain">(</span><span class="identifier">mr3</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">I</span><span class="string">"hyperlinked"</span><span class="plain">)) </span><span class="identifier">L</span><span class="plain">-></span><span class="element">enable_hyperlinks</span><span class="plain"> = </span><span class="constant">TRUE</span><span class="plain">;</span>
|
||||
<span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="functiontext">Main::error_in_web</span><span class="plain">(</span>
|
||||
<span class="identifier">I</span><span class="string">"only 'undisplayed' and/or 'hyperlinked' can precede 'text' here"</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">break</span><span class="plain">;</span>
|
||||
<span class="functiontext">Str::clear</span><span class="plain">(</span><span class="identifier">mr2</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0]);</span>
|
||||
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="identifier">mr2</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">mr3</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[1]);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&</span><span class="identifier">mr3</span><span class="plain">);</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
@ -898,6 +913,7 @@ follows:
|
|||
<span class="identifier">code_pl_for_body</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
|
||||
<span class="identifier">comment_mode</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">code_plainness_for_body</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
||||
<span class="identifier">hyperlink_body</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
@ -1156,6 +1172,7 @@ CWEB, but is needed for languages which don't allow multi-line definitions.)
|
|||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">L</span><span class="plain">-></span><span class="element">category</span><span class="plain"> != </span><span class="constant">BEGIN_DEFINITION_LCAT</span><span class="plain">) && (</span><span class="identifier">L</span><span class="plain">-></span><span class="element">category</span><span class="plain"> != </span><span class="constant">COMMAND_LCAT</span><span class="plain">)) {</span>
|
||||
<span class="identifier">L</span><span class="plain">-></span><span class="element">category</span><span class="plain"> = </span><span class="identifier">code_lcat_for_body</span><span class="plain">;</span>
|
||||
<span class="identifier">L</span><span class="plain">-></span><span class="element">plainer</span><span class="plain"> = </span><span class="identifier">code_plainness_for_body</span><span class="plain">;</span>
|
||||
<span class="identifier">L</span><span class="plain">-></span><span class="element">enable_hyperlinks</span><span class="plain"> = </span><span class="identifier">hyperlink_body</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain">-></span><span class="element">category</span><span class="plain"> == </span><span class="constant">TEXT_EXTRACT_LCAT</span><span class="plain">) </span><span class="identifier">L</span><span class="plain">-></span><span class="element">colour_as</span><span class="plain"> = </span><span class="identifier">code_pl_for_body</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
|
|
|
@ -459,7 +459,7 @@ tangled for.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Reader::woven_folder is used in 1/ptt (<a href="1-ptt.html#SP7">§7</a>), 3/ts (<a href="3-ts.html#SP2_2">§2.2</a>), 3/ti (<a href="3-ti.html#SP5_4">§5.4</a>), 5/hf (<a href="5-hf.html#SP27">§27</a>).</p>
|
||||
<p class="endnote">The function Reader::woven_folder is used in 1/ptt (<a href="1-ptt.html#SP7">§7</a>), 3/ts (<a href="3-ts.html#SP2_2">§2.2</a>), 3/ti (<a href="3-ti.html#SP5_4">§5.4</a>), 5/hf (<a href="5-hf.html#SP28">§28</a>).</p>
|
||||
|
||||
<p class="endnote">The function Reader::tangled_folder is used in 1/pc (<a href="1-pc.html#SP7_4_2">§7.4.2</a>), 3/tt (<a href="3-tt.html#SP1_2">§1.2</a>), 4/is (<a href="4-is.html#SP13">§13</a>).</p>
|
||||
|
||||
|
|
|
@ -51,7 +51,7 @@ to call the fuller indexing service if need be, using <code class="display"><spa
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Indexer::cover_sheet_maker is used in <a href="#SP2_1_1">§2.1.1</a>, 3/tw (<a href="3-tw.html#SP1_2">§1.2</a>, <a href="3-tw.html#SP1_4">§1.4</a>), 5/hf (<a href="5-hf.html#SP6">§6</a>, <a href="5-hf.html#SP25">§25</a>).</p>
|
||||
<p class="endnote">The function Indexer::cover_sheet_maker is used in <a href="#SP2_1_1">§2.1.1</a>, 3/tw (<a href="3-tw.html#SP1_2">§1.2</a>, <a href="3-tw.html#SP1_4">§1.4</a>), 5/hf (<a href="5-hf.html#SP6">§6</a>, <a href="5-hf.html#SP26">§26</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_1"></a><b>§1.1. </b>The cover-sheet-maker has the ability to weave only the top half, or only
|
||||
the bottom half, of the template; they are divided by the marker <code class="display"><span class="extract">[[Code]]</span></code>.
|
||||
|
|
|
@ -605,14 +605,11 @@ in the source is set indented in code style.
|
|||
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[1]);</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">);</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">original</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">, </span><span class="constant">PLAIN_COLOUR</span><span class="plain">);</span>
|
||||
<span class="functiontext">Formats::source_code</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">1</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="identifier">original</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">);</span>
|
||||
<span class="functiontext">Formats::source_code</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">1</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="identifier">original</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">,</span>
|
||||
<span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">-></span><span class="identifier">enable_hyperlinks</span><span class="plain">);</span>
|
||||
<span class="functiontext">Formats::text</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">original</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">no_inweb_errors</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">) {</span>
|
||||
<span class="functiontext">Main::error_in_web</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Old-style pipes here"</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">);</span>
|
||||
<span class="identifier">no_inweb_errors</span><span class="plain"> = </span><span class="constant">0</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">continue</span><span class="plain">;</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">state</span><span class="plain">-></span><span class="element">kind_of_material</span><span class="plain"> != </span><span class="constant">REGULAR_MATERIAL</span><span class="plain">) {</span>
|
||||
<span class="functiontext">Formats::change_material</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">state</span><span class="plain">-></span><span class="element">kind_of_material</span><span class="plain">, </span><span class="constant">REGULAR_MATERIAL</span><span class="plain">,</span>
|
||||
|
@ -666,7 +663,8 @@ and macro usage is rendered differently.
|
|||
<span class="plain">}</span>
|
||||
|
||||
<span class="functiontext">Formats::source_code</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">, </span><span class="identifier">prefatory</span><span class="plain">,</span>
|
||||
<span class="identifier">matter</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">concluding_comment</span><span class="plain">, (</span><span class="identifier">found</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">)?</span><span class="identifier">TRUE:FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
|
||||
<span class="identifier">matter</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">concluding_comment</span><span class="plain">, (</span><span class="identifier">found</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">)?</span><span class="identifier">TRUE:FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">,</span>
|
||||
<span class="constant">TRUE</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">-></span><span class="element">enable_hyperlinks</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">concluding_comment</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">prefatory</span><span class="plain">);</span>
|
||||
|
@ -846,7 +844,7 @@ otherwise, they are set flush right.
|
|||
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[2]);</span>
|
||||
<span class="functiontext">Formats::source_code</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">, </span><span class="identifier">prefatory</span><span class="plain">,</span>
|
||||
<span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">concluding_comment</span><span class="plain">, (</span><span class="identifier">found</span><span class="plain"> == </span><span class="constant">0</span><span class="plain">)?</span><span class="identifier">TRUE:FALSE</span><span class="plain">,</span>
|
||||
<span class="constant">FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
|
||||
<span class="constant">FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">-></span><span class="element">enable_hyperlinks</span><span class="plain">);</span>
|
||||
<span class="functiontext">LanguageMethods::reset_syntax_colouring</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">-></span><span class="element">sect_language</span><span class="plain">);</span>
|
||||
<span class="identifier">found</span><span class="plain">++;</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">defn</span><span class="plain"> = </span><span class="constant">FALSE</span><span class="plain">;</span>
|
||||
|
|
|
@ -280,7 +280,7 @@ files to crash Inweb.)
|
|||
|
||||
<p class="endnote">The function ACMESupport::parse_comment is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function ACMESupport::text_at is used in 4/tp (<a href="4-tp.html#SP2_2">§2.2</a>, <a href="4-tp.html#SP3">§3</a>, <a href="4-tp.html#SP5">§5</a>), 5/wf (<a href="5-wf.html#SP22">§22</a>).</p>
|
||||
<p class="endnote">The function ACMESupport::text_at is used in 4/tp (<a href="4-tp.html#SP2_2">§2.2</a>, <a href="4-tp.html#SP3">§3</a>, <a href="4-tp.html#SP5">§5</a>), 5/wf (<a href="5-wf.html#SP23">§23</a>), 5/hf (<a href="5-hf.html#SP10">§10</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>This is here so that tangling the Standard Rules extension doesn't insert
|
||||
a spurious comment betraying Inweb's involvement in the process.
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<!--Weave of 'HTML Formats' generated by 7-->
|
||||
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="index.html">inweb</a></li><li><a href="index.html#5">Chapter 5: Formats</a></li><li><b>HTML Formats</b></li></ul><p class="purpose">To provide for weaving into HTML and into EPUB books.</p>
|
||||
|
||||
<ul class="toc"><li><a href="#SP2">§2. Current state</a></li><li><a href="#SP6">§6. Methods</a></li><li><a href="#SP27">§27. EPUB-only methods</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="#SP2">§2. Current state</a></li><li><a href="#SP6">§6. Methods</a></li><li><a href="#SP28">§28. EPUB-only methods</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§1. </b></p>
|
||||
|
||||
|
@ -84,6 +84,7 @@
|
|||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">PARAGRAPH_HEADING_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::paragraph_heading</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">SOURCE_CODE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::source_code</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">INLINE_CODE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::inline_code</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">URL_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::url</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">DISPLAY_LINE_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::display_line</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">ITEM_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::item</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">BAR_FOR_MTID</span><span class="plain">, </span><span class="functiontext">HTMLFormat::bar</span><span class="plain">);</span>
|
||||
|
@ -147,13 +148,13 @@ but in fact that's fine here.)
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function HTMLFormat::p is used in <a href="#SP7">§7</a>, <a href="#SP9">§9</a>, <a href="#SP11">§11</a>, <a href="#SP12">§12</a>, <a href="#SP18">§18</a>, <a href="#SP19">§19</a>, <a href="#SP21">§21</a>, <a href="#SP22">§22</a>.</p>
|
||||
<p class="endnote">The function HTMLFormat::p is used in <a href="#SP7">§7</a>, <a href="#SP9">§9</a>, <a href="#SP11">§11</a>, <a href="#SP13">§13</a>, <a href="#SP19">§19</a>, <a href="#SP20">§20</a>, <a href="#SP22">§22</a>, <a href="#SP23">§23</a>.</p>
|
||||
|
||||
<p class="endnote">The function HTMLFormat::cp is used in <a href="#SP4">§4</a>, <a href="#SP7">§7</a>, <a href="#SP12">§12</a>, <a href="#SP21">§21</a>.</p>
|
||||
<p class="endnote">The function HTMLFormat::cp is used in <a href="#SP4">§4</a>, <a href="#SP7">§7</a>, <a href="#SP13">§13</a>, <a href="#SP22">§22</a>.</p>
|
||||
|
||||
<p class="endnote">The function HTMLFormat::pre is used in <a href="#SP19">§19</a>.</p>
|
||||
<p class="endnote">The function HTMLFormat::pre is used in <a href="#SP20">§20</a>.</p>
|
||||
|
||||
<p class="endnote">The function HTMLFormat::cpre is used in <a href="#SP4">§4</a>, <a href="#SP19">§19</a>.</p>
|
||||
<p class="endnote">The function HTMLFormat::cpre is used in <a href="#SP4">§4</a>, <a href="#SP20">§20</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>Depth 1 means "inside a list entry"; depth 2, "inside an entry of a list
|
||||
which is itself inside a list entry"; and so on.
|
||||
|
@ -185,7 +186,7 @@ which is itself inside a list entry"; and so on.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function HTMLFormat::go_to_depth is used in <a href="#SP4">§4</a>, <a href="#SP13">§13</a>.</p>
|
||||
<p class="endnote">The function HTMLFormat::go_to_depth is used in <a href="#SP4">§4</a>, <a href="#SP14">§14</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>The following generically gets us out of whatever we're currently into:
|
||||
</p>
|
||||
|
@ -202,7 +203,7 @@ which is itself inside a list entry"; and so on.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function HTMLFormat::exit_current_paragraph is used in <a href="#SP3">§3</a>, <a href="#SP7">§7</a>, <a href="#SP8">§8</a>, <a href="#SP9">§9</a>, <a href="#SP12">§12</a>, <a href="#SP14">§14</a>, <a href="#SP15">§15</a>, <a href="#SP17">§17</a>, <a href="#SP18">§18</a>, <a href="#SP19">§19</a>, <a href="#SP21">§21</a>, <a href="#SP25">§25</a>.</p>
|
||||
<p class="endnote">The function HTMLFormat::exit_current_paragraph is used in <a href="#SP3">§3</a>, <a href="#SP7">§7</a>, <a href="#SP8">§8</a>, <a href="#SP9">§9</a>, <a href="#SP13">§13</a>, <a href="#SP15">§15</a>, <a href="#SP16">§16</a>, <a href="#SP18">§18</a>, <a href="#SP19">§19</a>, <a href="#SP20">§20</a>, <a href="#SP22">§22</a>, <a href="#SP26">§26</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP5"></a><b>§5. </b>"Breadcrumbs" are the chain of links in a horizontal list at the top of
|
||||
the page, and this drops one.
|
||||
|
@ -409,7 +410,7 @@ the page, and this drops one.
|
|||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::source_code</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">prefatory</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">matter</span><span class="plain">,</span>
|
||||
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">colouring</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">concluding_comment</span><span class="plain">,</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">linked</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">starts</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">prefatory</span><span class="plain">) > </span><span class="constant">0</span><span class="plain">) {</span>
|
||||
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">, </span><span class="string">"class=\"definitionkeyword\""</span><span class="plain">);</span>
|
||||
|
@ -420,12 +421,12 @@ the page, and this drops one.
|
|||
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="functiontext">Regexp::create_mr</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Regexp::match</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(%c*) from (%C+) *"</span><span class="plain">)) {</span>
|
||||
<span class="functiontext">HTMLFormat::source_code</span><span class="plain">(</span><span class="identifier">self</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">0</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[0], </span><span class="identifier">colouring</span><span class="plain">,</span>
|
||||
<span class="identifier">concluding_comment</span><span class="plain">, </span><span class="identifier">starts</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">code_mode</span><span class="plain">);</span>
|
||||
<span class="identifier">concluding_comment</span><span class="plain">, </span><span class="identifier">starts</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="identifier">linked</span><span class="plain">);</span>
|
||||
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">, </span><span class="string">"class=\"definitionkeyword\""</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" from "</span><span class="plain">);</span>
|
||||
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
|
||||
<span class="functiontext">HTMLFormat::source_code</span><span class="plain">(</span><span class="identifier">self</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">0</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">mr</span><span class="plain">.</span><span class="element">exp</span><span class="plain">[1], </span><span class="identifier">colouring</span><span class="plain">,</span>
|
||||
<span class="identifier">concluding_comment</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">finishes</span><span class="plain">, </span><span class="identifier">code_mode</span><span class="plain">);</span>
|
||||
<span class="identifier">concluding_comment</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="identifier">finishes</span><span class="plain">, </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="identifier">linked</span><span class="plain">);</span>
|
||||
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">);</span>
|
||||
<span class="reserved">return</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -438,17 +439,32 @@ the page, and this drops one.
|
|||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">current_colour</span><span class="plain"> = -1, </span><span class="identifier">colour_wanted</span><span class="plain"> = </span><span class="constant">PLAIN_COLOUR</span><span class="plain">;</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"> < </span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">++) {</span>
|
||||
<span class="identifier">colour_wanted</span><span class="plain"> = </span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">); </span><<span class="cwebmacro">Adjust code colour as necessary</span> <span class="cwebmacronumber">10.1</span>><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">'<'</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&lt;"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">'>'</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&gt;"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">) == </span><span class="character">'&'</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&amp;"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%c"</span><span class="plain">, </span><span class="functiontext">Str::get_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">));</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_colour</span><span class="plain"> >= </span><span class="constant">0</span><span class="plain">) </span><span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
|
||||
<span class="identifier">current_colour</span><span class="plain"> = -1;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">finishes</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">concluding_comment</span><span class="plain">) > </span><span class="constant">0</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (!</span><span class="identifier">starts</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" "</span><span class="plain">);</span>
|
||||
<span class="identifier">HTML_OPEN_WITH</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">, </span><span class="string">"class=\"comment\""</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">linked</span><span class="plain">) &&</span>
|
||||
<span class="plain">((</span><span class="functiontext">ACMESupport::text_at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"http:</span><span class="comment">")) <code class="display"></code></span>
|
||||
<span class="string">(ACMESupport::text_at(matter, i, I"</span><span class="identifier">https:</span><span class="comment">")))) {</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">);</span>
|
||||
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">); </span><span class="functiontext">Str::truncate</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">);</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">after</span><span class="plain">);</span>
|
||||
<span class="functiontext">Str::substr</span><span class="plain">(</span><span class="identifier">after</span><span class="plain">, </span><span class="functiontext">Str::at</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">), </span><span class="functiontext">Str::end</span><span class="plain">(</span><span class="identifier">matter</span><span class="plain">));</span>
|
||||
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="functiontext">Regexp::create_mr</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Regexp::match</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">after</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(https*:</span><span class="comment">%C+)(%c*)")) {</span>
|
||||
<span class="string">Formats::url(OUT, wv, mr.exp[0], mr.exp[0], TRUE);</span>
|
||||
<span class="string">i += Str::len(mr.exp[0]);</span>
|
||||
<span class="string">}</span>
|
||||
<span class="string">DISCARD_TEXT(before);</span>
|
||||
<span class="string">DISCARD_TEXT(after);</span>
|
||||
<span class="string">}</span>
|
||||
<span class="string">if (Str::get_at(matter, i) == '<') WRITE("</span><span class="plain">&</span><span class="identifier">lt</span><span class="plain">;</span><span class="string">");</span>
|
||||
<span class="string">else if (Str::get_at(matter, i) == '>') WRITE("</span><span class="plain">&</span><span class="identifier">gt</span><span class="plain">;</span><span class="string">");</span>
|
||||
<span class="string">else if (Str::get_at(matter, i) == '&') WRITE("</span><span class="plain">&</span><span class="identifier">amp</span><span class="plain">;</span><span class="string">");</span>
|
||||
<span class="string">else WRITE("</span><span class="plain">%</span><span class="identifier">c</span><span class="string">", Str::get_at(matter, i));</span>
|
||||
<span class="string">}</span>
|
||||
<span class="string">if (current_colour >= 0) HTML_CLOSE("</span><span class="identifier">span</span><span class="string">");</span>
|
||||
<span class="string">current_colour = -1;</span>
|
||||
<span class="string">if (finishes) {</span>
|
||||
<span class="string">if (Str::len(concluding_comment) > 0) {</span>
|
||||
<span class="string">if (!starts) WRITE("</span><span class="plain"> </span><span class="string">");</span>
|
||||
<span class="string">HTML_OPEN_WITH("</span><span class="identifier">span</span><span class="string">", "</span><span class="identifier">class</span><span class="plain">=\</span><span class="string">"comment\""</span><span class="plain">);</span>
|
||||
<span class="functiontext">Formats::text_comment</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">concluding_comment</span><span class="plain">);</span>
|
||||
<span class="identifier">HTML_CLOSE</span><span class="plain">(</span><span class="string">"span"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -498,6 +514,21 @@ the page, and this drops one.
|
|||
|
||||
<p class="inwebparagraph"><a id="SP12"></a><b>§12. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::url</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
||||
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">url</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">content</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">external</span><span class="plain">) {</span>
|
||||
<span class="functiontext">HTML::begin_link_with_class</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, (</span><span class="identifier">external</span><span class="plain">)?</span><span class="identifier">I</span><span class="string">"external"</span><span class="plain">:</span><span class="identifier">I</span><span class="string">"internal"</span><span class="plain">, </span><span class="identifier">url</span><span class="plain">);</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">content</span><span class="plain">);</span>
|
||||
<span class="functiontext">HTML::end_link</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function HTMLFormat::url is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP13"></a><b>§13. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::display_line</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
||||
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">) {</span>
|
||||
|
@ -514,7 +545,7 @@ the page, and this drops one.
|
|||
|
||||
<p class="endnote">The function HTMLFormat::display_line is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP13"></a><b>§13. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP14"></a><b>§14. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::item</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">depth</span><span class="plain">,</span>
|
||||
|
@ -530,7 +561,7 @@ the page, and this drops one.
|
|||
|
||||
<p class="endnote">The function HTMLFormat::item is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP14"></a><b>§14. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP15"></a><b>§15. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::bar</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">) {</span>
|
||||
|
@ -543,7 +574,7 @@ the page, and this drops one.
|
|||
|
||||
<p class="endnote">The function HTMLFormat::bar is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP15"></a><b>§15. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP16"></a><b>§16. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::figure</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
||||
|
@ -565,7 +596,7 @@ the page, and this drops one.
|
|||
|
||||
<p class="endnote">The function HTMLFormat::figure is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP16"></a><b>§16. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP17"></a><b>§17. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::para_macro</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
||||
|
@ -587,7 +618,7 @@ the page, and this drops one.
|
|||
|
||||
<p class="endnote">The function HTMLFormat::para_macro is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP17"></a><b>§17. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP18"></a><b>§18. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::pagebreak</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">) {</span>
|
||||
|
@ -599,7 +630,7 @@ the page, and this drops one.
|
|||
|
||||
<p class="endnote">The function HTMLFormat::pagebreak is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP18"></a><b>§18. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP19"></a><b>§19. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::blank_line</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
||||
|
@ -619,7 +650,7 @@ the page, and this drops one.
|
|||
|
||||
<p class="endnote">The function HTMLFormat::blank_line is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP19"></a><b>§19. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP20"></a><b>§20. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::change_material</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
||||
|
@ -695,7 +726,7 @@ the page, and this drops one.
|
|||
|
||||
<p class="endnote">The function HTMLFormat::change_material is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP20"></a><b>§20. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP21"></a><b>§21. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::change_colour</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
||||
|
@ -723,7 +754,7 @@ the page, and this drops one.
|
|||
|
||||
<p class="endnote">The function HTMLFormat::change_colour is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP21"></a><b>§21. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP22"></a><b>§22. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::endnote</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">end</span><span class="plain">) {</span>
|
||||
|
@ -740,7 +771,7 @@ the page, and this drops one.
|
|||
|
||||
<p class="endnote">The function HTMLFormat::endnote is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP22"></a><b>§22. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP23"></a><b>§23. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::commentary_text</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
||||
|
@ -768,7 +799,7 @@ the page, and this drops one.
|
|||
|
||||
<p class="endnote">The function HTMLFormat::commentary_text is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP23"></a><b>§23. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP24"></a><b>§24. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::locale</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
||||
|
@ -789,7 +820,7 @@ the page, and this drops one.
|
|||
|
||||
<p class="endnote">The function HTMLFormat::locale is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP24"></a><b>§24. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP25"></a><b>§25. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::xref</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">paragraph</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">section</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">,</span>
|
||||
|
@ -815,9 +846,9 @@ the page, and this drops one.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function HTMLFormat::xref is used in <a href="#SP8">§8</a>, <a href="#SP9">§9</a>, <a href="#SP23">§23</a>.</p>
|
||||
<p class="endnote">The function HTMLFormat::xref is used in <a href="#SP8">§8</a>, <a href="#SP9">§9</a>, <a href="#SP24">§24</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP25"></a><b>§25. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP26"></a><b>§26. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::tail</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
||||
|
@ -871,7 +902,7 @@ the page, and this drops one.
|
|||
|
||||
<p class="endnote">The function HTMLFormat::tail is used in <a href="#SP1_1_1">§1.1.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP26"></a><b>§26. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP27"></a><b>§27. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">HTMLFormat::sref</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">section</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">) {</span>
|
||||
|
@ -887,9 +918,9 @@ the page, and this drops one.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function HTMLFormat::sref is used in <a href="#SP25">§25</a>.</p>
|
||||
<p class="endnote">The function HTMLFormat::sref is used in <a href="#SP26">§26</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP27"></a><b>§27. EPUB-only methods. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP28"></a><b>§28. EPUB-only methods. </b></p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">HTMLFormat::begin_weaving_EPUB</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain">, </span><span class="reserved">web</span><span class="plain"> *</span><span class="identifier">W</span><span class="plain">, </span><span class="reserved">weave_pattern</span><span class="plain"> *</span><span class="identifier">pattern</span><span class="plain">) {</span>
|
||||
|
|
|
@ -144,7 +144,7 @@
|
|||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">PlainText::source_code</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">prefatory</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">matter</span><span class="plain">,</span>
|
||||
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">colouring</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">concluding_comment</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">,</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">linked</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">starts</span><span class="plain">) {</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"><</span><span class="identifier">tab_stops_of_indentation</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++)</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" "</span><span class="plain">);</span>
|
||||
|
|
|
@ -304,7 +304,7 @@ mode once again:
|
|||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">TeX::source_code</span><span class="plain">(</span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">self</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">prefatory</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">matter</span><span class="plain">,</span>
|
||||
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">colouring</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">concluding_comment</span><span class="plain">,</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">) {</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">linked</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">code_mode</span><span class="plain"> == </span><span class="constant">FALSE</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"\\smallskip\\par\\noindent"</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">starts</span><span class="plain">) {</span>
|
||||
<<span class="cwebmacro">Weave a suitable horizontal advance for that many tab stops</span> <span class="cwebmacronumber">8.1</span>><span class="plain">;</span>
|
||||
|
@ -857,7 +857,7 @@ To do this, the weaver calls the following.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function TeX::remove_math_mode is used in 5/wf (<a href="5-wf.html#SP23">§23</a>).</p>
|
||||
<p class="endnote">The function TeX::remove_math_mode is used in 5/wf (<a href="5-wf.html#SP24">§24</a>).</p>
|
||||
|
||||
<p class="endnote">The function TeX::remove_math_mode_range is used in <a href="#SP28_1">§28.1</a>, <a href="#SP28_2">§28.2</a>, <a href="#SP28_3">§28.3</a>.</p>
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
<!--Weave of 'Weave Formats' generated by 7-->
|
||||
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="index.html">inweb</a></li><li><a href="index.html#5">Chapter 5: Formats</a></li><li><b>Weave Formats</b></li></ul><p class="purpose">To characterise the different weaving output formats (text, typeset, web and so on).</p>
|
||||
|
||||
<ul class="toc"><li><a href="#SP1">§1. Formats</a></li><li><a href="#SP3">§3. Creation</a></li><li><a href="#SP4">§4. Methods</a></li><li><a href="#SP28">§28. Post-processing</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="#SP1">§1. Formats</a></li><li><a href="#SP3">§3. Creation</a></li><li><a href="#SP4">§4. Methods</a></li><li><a href="#SP29">§29. Post-processing</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§1. Formats. </b>Exactly as in the previous chapter, each format expresses its behaviour
|
||||
through optional method calls.
|
||||
|
@ -61,7 +61,7 @@ through optional method calls.
|
|||
|
||||
<p class="endnote">The function Formats::create_weave_format is used in 5/ptf (<a href="5-ptf.html#SP1">§1</a>), 5/tf (<a href="5-tf.html#SP1_1">§1.1</a>, <a href="5-tf.html#SP1_2">§1.2</a>, <a href="5-tf.html#SP1_3">§1.3</a>), 5/hf (<a href="5-hf.html#SP1_1">§1.1</a>, <a href="5-hf.html#SP1_2">§1.2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Formats::find_by_name is used in <a href="#SP30">§30</a>, 1/ptt (<a href="1-ptt.html#SP3_2">§3.2</a>).</p>
|
||||
<p class="endnote">The function Formats::find_by_name is used in <a href="#SP31">§31</a>, 1/ptt (<a href="1-ptt.html#SP3_2">§3.2</a>).</p>
|
||||
|
||||
<p class="endnote">The structure weave_format is accessed in 3/ts and here.</p>
|
||||
|
||||
|
@ -301,14 +301,14 @@ been syntax-coloured; there can also be some indentation, and perhaps even some
|
|||
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">SOURCE_CODE_FOR_MTID</span><span class="plain">, </span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">prefatory</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">matter</span><span class="plain">,</span>
|
||||
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">colouring</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">concluding_comment</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">,</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">)</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">linked</span><span class="plain">)</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::source_code</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">,</span>
|
||||
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">prefatory</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">matter</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">colouring</span><span class="plain">,</span>
|
||||
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">concluding_comment</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">) {</span>
|
||||
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">concluding_comment</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">starts</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">finishes</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">linked</span><span class="plain">) {</span>
|
||||
<span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">SOURCE_CODE_FOR_MTID</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">tab_stops_of_indentation</span><span class="plain">,</span>
|
||||
<span class="identifier">prefatory</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">concluding_comment</span><span class="plain">, </span><span class="identifier">starts</span><span class="plain">, </span><span class="identifier">finishes</span><span class="plain">, </span><span class="identifier">code_mode</span><span class="plain">);</span>
|
||||
<span class="identifier">prefatory</span><span class="plain">, </span><span class="identifier">matter</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">concluding_comment</span><span class="plain">, </span><span class="identifier">starts</span><span class="plain">, </span><span class="identifier">finishes</span><span class="plain">, </span><span class="identifier">code_mode</span><span class="plain">, </span><span class="identifier">linked</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
|
@ -333,7 +333,7 @@ drably in a uniform <code class="display"><span class="extract">EXTRACT_COLOUR</
|
|||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">INLINE_CODE_FOR_MTID</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">);</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">< </span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">fragment</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">, </span><span class="constant">EXTRACT_COLOUR</span><span class="plain">);</span>
|
||||
<span class="functiontext">Formats::source_code</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">0</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="identifier">fragment</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">);</span>
|
||||
<span class="functiontext">Formats::source_code</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">0</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="identifier">fragment</span><span class="plain">, </span><span class="identifier">colouring</span><span class="plain">, </span><span class="identifier">I</span><span class="string">""</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">, </span><span class="constant">TRUE</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">);</span>
|
||||
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">colouring</span><span class="plain">);</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">INLINE_CODE_FOR_MTID</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="constant">FALSE</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -341,9 +341,35 @@ drably in a uniform <code class="display"><span class="extract">EXTRACT_COLOUR</
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Formats::source_fragment is used in <a href="#SP22">§22</a>.</p>
|
||||
<p class="endnote">The function Formats::source_fragment is used in <a href="#SP23">§23</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP12"></a><b>§12. </b>This method produces the <code class="display"><span class="extract">>> Example</span></code> bits of example source text, really
|
||||
<p class="inwebparagraph"><a id="SP12"></a><b>§12. </b>And this weaves a URL, hyperlinking it where possible.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">URL_FOR_MTID</span>
|
||||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">URL_FOR_MTID</span><span class="plain">, </span><span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">,</span>
|
||||
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">url</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">content</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">external</span><span class="plain">)</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Formats::url</span><span class="plain">(</span><span class="constant">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">weave_target</span><span class="plain"> *</span><span class="identifier">wv</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">url</span><span class="plain">,</span>
|
||||
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">content</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">external</span><span class="plain">) {</span>
|
||||
<span class="reserved">weave_format</span><span class="plain"> *</span><span class="identifier">wf</span><span class="plain"> = </span><span class="identifier">wv</span><span class="plain">-></span><span class="element">format</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Methods::provided</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">-></span><span class="identifier">methods</span><span class="plain">, </span><span class="constant">URL_FOR_MTID</span><span class="plain">)) {</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">wf</span><span class="plain">, </span><span class="constant">URL_FOR_MTID</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">url</span><span class="plain">, </span><span class="identifier">content</span><span class="plain">, </span><span class="identifier">external</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">content</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Formats::url is used in <a href="#SP23">§23</a>, 5/hf (<a href="5-hf.html#SP10">§10</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP13"></a><b>§13. </b>This method produces the <code class="display"><span class="extract">>> Example</span></code> bits of example source text, really
|
||||
a convenience for Inform 7 code commentary.
|
||||
</p>
|
||||
|
||||
|
@ -364,7 +390,7 @@ a convenience for Inform 7 code commentary.
|
|||
|
||||
<p class="endnote">The function Formats::display_line is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_8_1">§1.3.3.1.8.1</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP13"></a><b>§13. </b><code class="display"><span class="extract">ITEM_FOR_MTID</span></code> produces an item marker in a typical (a), (b), (c), ... sort
|
||||
<p class="inwebparagraph"><a id="SP14"></a><b>§14. </b><code class="display"><span class="extract">ITEM_FOR_MTID</span></code> produces an item marker in a typical (a), (b), (c), ... sort
|
||||
of list. <code class="display"><span class="extract">depth</span></code> can be 1 or 2: you can have lists in lists, but not lists in
|
||||
lists in lists. <code class="display"><span class="extract">label</span></code> is the marker text, e.g., <code class="display"><span class="extract">a</span></code>, <code class="display"><span class="extract">b</span></code>, <code class="display"><span class="extract">c</span></code>, ...; it can
|
||||
also be empty, in which case the method should move to the matching level of
|
||||
|
@ -398,7 +424,7 @@ indentation but not weave any bracketed marker.
|
|||
|
||||
<p class="endnote">The function Formats::item is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_8_3">§1.3.3.1.8.3</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP14"></a><b>§14. </b>The "bar" is a horizontal line across the page, but it's woven only for
|
||||
<p class="inwebparagraph"><a id="SP15"></a><b>§15. </b>The "bar" is a horizontal line across the page, but it's woven only for
|
||||
very old webs nowadays. New formats really needn't implement this.
|
||||
</p>
|
||||
|
||||
|
@ -419,7 +445,7 @@ very old webs nowadays. New formats really needn't implement this.
|
|||
|
||||
<p class="endnote">The function Formats::bar is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_7">§1.3.3.1.7</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP15"></a><b>§15. </b><code class="display"><span class="extract">FIGURE_FOR_MTID</span></code> has to weave a figure, i.e., render an image in some way.
|
||||
<p class="inwebparagraph"><a id="SP16"></a><b>§16. </b><code class="display"><span class="extract">FIGURE_FOR_MTID</span></code> has to weave a figure, i.e., render an image in some way.
|
||||
<code class="display"><span class="extract">figname</span></code> should be (the text of) a leafname within the <code class="display"><span class="extract">Figures</span></code> directory
|
||||
of the web.
|
||||
</p>
|
||||
|
@ -443,7 +469,7 @@ of the web.
|
|||
|
||||
<p class="endnote">The function Formats::figure is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_2_1">§1.3.3.1.2.1</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP16"></a><b>§16. </b>This method weaves an angle-bracketed paragraph macro name. <code class="display"><span class="extract">defn</span></code> is set
|
||||
<p class="inwebparagraph"><a id="SP17"></a><b>§17. </b>This method weaves an angle-bracketed paragraph macro name. <code class="display"><span class="extract">defn</span></code> is set
|
||||
if and only if this is the place where the macro is defined — the usual
|
||||
thing is to render some sort of equals sign after it, if so.
|
||||
</p>
|
||||
|
@ -466,7 +492,7 @@ thing is to render some sort of equals sign after it, if so.
|
|||
|
||||
<p class="endnote">The function Formats::para_macro is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_9_6">§1.3.3.1.9.6</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP17"></a><b>§17. </b>For many formats, page breaks are meaningless, and in that case this method
|
||||
<p class="inwebparagraph"><a id="SP18"></a><b>§18. </b>For many formats, page breaks are meaningless, and in that case this method
|
||||
should not be provided. Inweb uses them only for cosmetic benefit (and rarely
|
||||
at that), so no harm is done if there's no visual indication here.
|
||||
</p>
|
||||
|
@ -488,7 +514,7 @@ at that), so no harm is done if there's no visual indication here.
|
|||
|
||||
<p class="endnote">The function Formats::pagebreak is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_2">§1.3.3.1.2</a>, <a href="3-tw.html#SP1_3_3_1_10_1">§1.3.3.1.10.1</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP18"></a><b>§18. </b>"Blank line" here might better be called "vertical skip of some kind". The
|
||||
<p class="inwebparagraph"><a id="SP19"></a><b>§19. </b>"Blank line" here might better be called "vertical skip of some kind". The
|
||||
following should render some kind of skip, and may want to take note of whether
|
||||
this happens in commentary or in code: the <code class="display"><span class="extract">in_comment</span></code> flag provides this
|
||||
information.
|
||||
|
@ -512,7 +538,7 @@ information.
|
|||
|
||||
<p class="endnote">The function Formats::blank_line is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_8_2">§1.3.3.1.8.2</a>, <a href="3-tw.html#SP1_3_3_1_9_2">§1.3.3.1.9.2</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP19"></a><b>§19. </b>Another opportunity for vertical tidying-up. At the beginning of a code
|
||||
<p class="inwebparagraph"><a id="SP20"></a><b>§20. </b>Another opportunity for vertical tidying-up. At the beginning of a code
|
||||
line which occurs after a run of <code class="display"><span class="extract">@d</span></code> or <code class="display"><span class="extract">@e</span></code> definitions, this method is
|
||||
called. It can then insert a little vertical gap to separate the code from
|
||||
the definitions.
|
||||
|
@ -535,7 +561,7 @@ the definitions.
|
|||
|
||||
<p class="endnote">The function Formats::after_definitions is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_9">§1.3.3.1.9</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP20"></a><b>§20. </b>This method is called when the weaver changes "material" — for example,
|
||||
<p class="inwebparagraph"><a id="SP21"></a><b>§21. </b>This method is called when the weaver changes "material" — for example,
|
||||
from <code class="display"><span class="extract">REGULAR_MATERIAL</span></code> to <code class="display"><span class="extract">CODE_MATERIAL</span></code>. The flag <code class="display"><span class="extract">content</span></code> is set if
|
||||
the line on which this happens contains some content which will then be
|
||||
woven; it will be clear for blank lines, or lines intercepted by the
|
||||
|
@ -562,7 +588,7 @@ weaver and turned into something else (such as list items).
|
|||
|
||||
<p class="endnote">The function Formats::change_material is used in 3/tw (<a href="3-tw.html#SP1_3_3_1_1">§1.3.3.1.1</a>, <a href="3-tw.html#SP1_3_3_1_8_3">§1.3.3.1.8.3</a>, <a href="3-tw.html#SP1_3_3_1_8_4">§1.3.3.1.8.4</a>, <a href="3-tw.html#SP1_3_3_1_9_1">§1.3.3.1.9.1</a>, <a href="3-tw.html#SP1_3_3_2">§1.3.3.2</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP21"></a><b>§21. </b>This is called on a change of colour. "Colour" is really a shorthand way
|
||||
<p class="inwebparagraph"><a id="SP22"></a><b>§22. </b>This is called on a change of colour. "Colour" is really a shorthand way
|
||||
of saying something more like "style", but seemed less ambiguous. In HTML,
|
||||
this might trigger a change of CSS span style; in plain text, it would do
|
||||
nothing.
|
||||
|
@ -586,7 +612,7 @@ nothing.
|
|||
|
||||
<p class="endnote">The function Formats::change_colour is used in 5/tf (<a href="5-tf.html#SP8_2">§8.2</a>, <a href="5-tf.html#SP15">§15</a>), 5/hf (<a href="5-hf.html#SP10_1">§10.1</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP22"></a><b>§22. </b>The following takes text, divides it up at stroke-mark boundaries —
|
||||
<p class="inwebparagraph"><a id="SP23"></a><b>§23. </b>The following takes text, divides it up at stroke-mark boundaries —
|
||||
that is, <code class="display"><span class="extract">this is inside</span></code>, this is outside — and sends contiguous pieces
|
||||
of it either to <code class="display"><span class="extract">Formats::source_fragment</span></code> or <code class="display"><span class="extract">Formats::text_fragment</span></code>
|
||||
as appropriate.
|
||||
|
@ -620,12 +646,31 @@ as appropriate.
|
|||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">within</span><span class="plain">) {</span>
|
||||
<span class="functiontext">Formats::source_fragment</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">);</span>
|
||||
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
|
||||
<span class="functiontext">Formats::text_fragment</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">wv</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain"> < </span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">); </span><span class="identifier">i</span><span class="plain">++) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">within</span><span class="plain"> == </span><span class="constant">FALSE</span><span class="plain">) &&</span>
|
||||
<span class="plain">((</span><span class="functiontext">ACMESupport::text_at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"http:</span><span class="comment">")) <code class="display"></code></span>
|
||||
<span class="string">(ACMESupport::text_at(id, i, I"</span><span class="identifier">https:</span><span class="comment">")))) {</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">);</span>
|
||||
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">, </span><span class="identifier">id</span><span class="plain">); </span><span class="functiontext">Str::truncate</span><span class="plain">(</span><span class="identifier">before</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">);</span>
|
||||
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">after</span><span class="plain">);</span>
|
||||
<span class="functiontext">Str::substr</span><span class="plain">(</span><span class="identifier">after</span><span class="plain">, </span><span class="functiontext">Str::at</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">, </span><span class="identifier">i</span><span class="plain">), </span><span class="functiontext">Str::end</span><span class="plain">(</span><span class="identifier">id</span><span class="plain">));</span>
|
||||
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="functiontext">Regexp::create_mr</span><span class="plain">();</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Regexp::match</span><span class="plain">(&</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">after</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"(https*:</span><span class="comment">%C+)(%c*)")) {</span>
|
||||
<span class="string">Formats::text_r(OUT, wv, before, within, comments);</span>
|
||||
<span class="string">Formats::url(OUT, wv, mr.exp[0], mr.exp[0], TRUE);</span>
|
||||
<span class="string">Formats::text_r(OUT, wv, mr.exp[1], within, comments);</span>
|
||||
<span class="string">return;</span>
|
||||
<span class="string">}</span>
|
||||
<span class="string">DISCARD_TEXT(before);</span>
|
||||
<span class="string">DISCARD_TEXT(after);</span>
|
||||
<span class="string">}</span>
|
||||
<span class="string">}</span>
|
||||
<span class="string">if (within) {</span>
|
||||
<span class="string">Formats::source_fragment(OUT, wv, id);</span>
|
||||
<span class="string">} else {</span>
|
||||
<span class="string">Formats::text_fragment(OUT, wv, id);</span>
|
||||
<span class="string">}</span>
|
||||
<span class="string">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
@ -636,7 +681,7 @@ as appropriate.
|
|||
|
||||
<p class="endnote">The function Formats::text_r appears nowhere else.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP23"></a><b>§23. </b><code class="display"><span class="extract">COMMENTARY_TEXT_FOR_MTID</span></code> straightforwardly weaves out a run of contiguous
|
||||
<p class="inwebparagraph"><a id="SP24"></a><b>§24. </b><code class="display"><span class="extract">COMMENTARY_TEXT_FOR_MTID</span></code> straightforwardly weaves out a run of contiguous
|
||||
text. Ordinarily, any formulae written in TeX notation (i.e., in dollar signs
|
||||
used as brackets) will be transmogrified into a plain text paraphrase, but
|
||||
the <code class="display"><span class="extract">PRESERVE_MATH_MODE_FOR_MTID</span></code> can prevent this. (And of course the TeX
|
||||
|
@ -673,9 +718,9 @@ format does, because it wants to keep the formulae in all their glory.)
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Formats::text_fragment is used in <a href="#SP22">§22</a>.</p>
|
||||
<p class="endnote">The function Formats::text_fragment is used in <a href="#SP23">§23</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP24"></a><b>§24. </b>The weaver has special typographical support for the stand-alone Inform
|
||||
<p class="inwebparagraph"><a id="SP25"></a><b>§25. </b>The weaver has special typographical support for the stand-alone Inform
|
||||
document of Preform grammar, and this is the hook for it. Most formats
|
||||
should ignore it.
|
||||
</p>
|
||||
|
@ -704,7 +749,7 @@ should ignore it.
|
|||
|
||||
<p class="endnote">The function Formats::preform_document is used in 4/is (<a href="4-is.html#SP16">§16</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP25"></a><b>§25. </b>When the weaver adds one of its endnotes — "This function is used in...",
|
||||
<p class="inwebparagraph"><a id="SP26"></a><b>§26. </b>When the weaver adds one of its endnotes — "This function is used in...",
|
||||
or some such — it calls this method twice, once before the start, with
|
||||
<code class="display"><span class="extract">end</span></code> set to 1, and once after the end, with <code class="display"><span class="extract">end</span></code> set to 2.
|
||||
</p>
|
||||
|
@ -726,7 +771,7 @@ or some such — it calls this method twice, once before the start, with
|
|||
|
||||
<p class="endnote">The function Formats::endnote is used in 2/tgs (<a href="2-tgs.html#SP7">§7</a>, <a href="2-tgs.html#SP7_1">§7.1</a>), 3/tw (<a href="3-tw.html#SP2_1">§2.1</a>, <a href="3-tw.html#SP2_2">§2.2</a>, <a href="3-tw.html#SP2_3">§2.3</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP26"></a><b>§26. </b>"Locale" here isn't used in the Unix sense. It means text which describes
|
||||
<p class="inwebparagraph"><a id="SP27"></a><b>§27. </b>"Locale" here isn't used in the Unix sense. It means text which describes
|
||||
a range of numbered paragraphs, from <code class="display"><span class="extract">par1</span></code> to <code class="display"><span class="extract">par2</span></code>, though <code class="display"><span class="extract">par2</span></code> can
|
||||
instead be null, in which case the description is of just one para. (This
|
||||
is often used in endnotes.)
|
||||
|
@ -750,7 +795,7 @@ is often used in endnotes.)
|
|||
|
||||
<p class="endnote">The function Formats::locale is used in 3/tw (<a href="3-tw.html#SP2_1">§2.1</a>, <a href="3-tw.html#SP2_2_1">§2.2.1</a>), 5/ptf (<a href="5-ptf.html#SP6">§6</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP27"></a><b>§27. </b>And finally: the bottom of the woven file. The <code class="display"><span class="extract">comment</span></code> is, again, not
|
||||
<p class="inwebparagraph"><a id="SP28"></a><b>§28. </b>And finally: the bottom of the woven file. The <code class="display"><span class="extract">comment</span></code> is, again, not
|
||||
intended for human eyes, and will be some sort of "End of weave" remark.
|
||||
</p>
|
||||
|
||||
|
@ -772,7 +817,7 @@ intended for human eyes, and will be some sort of "End of weave" remark.
|
|||
|
||||
<p class="endnote">The function Formats::tail is used in 3/tw (<a href="3-tw.html#SP1_5">§1.5</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP28"></a><b>§28. Post-processing. </b>Consider what happens when Inweb makes a PDF, via TeX. The initial weave is
|
||||
<p class="inwebparagraph"><a id="SP29"></a><b>§29. Post-processing. </b>Consider what happens when Inweb makes a PDF, via TeX. The initial weave is
|
||||
to a TeX file; it's then "post-processing" which will turn this into a PDF.
|
||||
The following method calls allow such two-stage formats to function; in
|
||||
this case, it would be the PDF format which provides the necessary methods
|
||||
|
@ -795,7 +840,7 @@ to turn TeX into PDF. The important method is this one:
|
|||
|
||||
<p class="endnote">The function Formats::post_process_weave is used in 3/ts (<a href="3-ts.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP29"></a><b>§29. </b>Optionally, a fancy report can be printed out, to describe what has been
|
||||
<p class="inwebparagraph"><a id="SP30"></a><b>§30. </b>Optionally, a fancy report can be printed out, to describe what has been
|
||||
done:
|
||||
</p>
|
||||
|
||||
|
@ -815,7 +860,7 @@ done:
|
|||
|
||||
<p class="endnote">The function Formats::report_on_post_processing is used in 3/ts (<a href="3-ts.html#SP2_3">§2.3</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP30"></a><b>§30. </b>After post-processing, an index file is sometimes needed. For example, if a
|
||||
<p class="inwebparagraph"><a id="SP31"></a><b>§31. </b>After post-processing, an index file is sometimes needed. For example, if a
|
||||
big web is woven to a swarm of PDFs, one for each section, then we also want
|
||||
to make an index page in HTML which provides annotated links to those PDFs.
|
||||
</p>
|
||||
|
@ -840,7 +885,7 @@ to make an index page in HTML which provides annotated links to those PDFs.
|
|||
|
||||
<p class="endnote">The function Formats::index_pdfs appears nowhere else.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP31"></a><b>§31. </b>And in that index file, we may want to substitute in values for placeholder
|
||||
<p class="inwebparagraph"><a id="SP32"></a><b>§32. </b>And in that index file, we may want to substitute in values for placeholder
|
||||
text like <code class="display"><span class="extract">[[PDF Size]]</span></code> in the template file. This is the <code class="display"><span class="extract">detail</span></code>.
|
||||
</p>
|
||||
|
||||
|
|
|
@ -524,7 +524,40 @@ For example,
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP13"></a><b>§13. </b>Pictures must be in PNG, JPG or PDF format and can be included with lines
|
||||
<p class="inwebparagraph"><a id="SP13"></a><b>§13. </b>URLs in the web are automatically recognised and a weave to HTML will
|
||||
make them into links. For example:
|
||||
</p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="plain">For further reading, see: https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph">For further reading, see: <a href="https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships
|
||||
" class="external">https://en.wikipedia.org/wiki/How_to_Avoid_Huge_Ships
|
||||
</a></p>
|
||||
|
||||
<p class="inwebparagraph">Note that URLs are considered to continue to the next white space, so don't
|
||||
end them with full stops or commas.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">URLs will also be recognised in any text extract marked as <code class="display"><span class="extract">hyperlinked</span></code>.
|
||||
For example,
|
||||
</p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="plain">Compare: https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph">produces:
|
||||
</p>
|
||||
|
||||
<pre class="display">
|
||||
<span class="plain">Compare: <a href="https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes" class="external">https://en.wikipedia.org/wiki/Crocheting_Adventures_with_Hyperbolic_Planes</a></span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP14"></a><b>§14. </b>Pictures must be in PNG, JPG or PDF format and can be included with lines
|
||||
like:
|
||||
</p>
|
||||
|
||||
|
@ -544,7 +577,7 @@ the web called <code class="display"><span class="extract">Figures</span></code>
|
|||
pathname <code class="display"><span class="extract">Figures/Fig_2_3.pdf</span></code>.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP14"></a><b>§14. </b>Mathematical formulae can be typed in TeX notation between dollar signs,
|
||||
<p class="inwebparagraph"><a id="SP15"></a><b>§15. </b>Mathematical formulae can be typed in TeX notation between dollar signs,
|
||||
as usual for TeX formulae. This can of course only really be rendered if
|
||||
the weave is to TeX, but a few very approximate attempts are made by Inweb
|
||||
so that the HTML version may also make sense. For example, <code class="display"><span class="extract">$x \leq y$</span></code> would
|
||||
|
|
|
@ -840,6 +840,10 @@ or semver, for the web. For example, if the Contents included:
|
|||
the web as the variable <code class="display"><span class="extract">Semantic Version Number</span></code>.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">For more on semvers, see: <a href="https://semver.org
|
||||
" class="external">https://semver.org
|
||||
</a></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP25"></a><b>§25. </b>A special advancing mechanism exists to update build numbers and dates.
|
||||
Running Inweb with <code class="display"><span class="extract">-advance-build W</span></code> checks the build date for web <code class="display"><span class="extract">W</span></code>:
|
||||
if it differs from today, then it is changed to today, and the build code
|
||||
|
|
Loading…
Reference in a new issue