From ecf2c4b38ab25cf0e272ae81dcd9bb7ba833802b Mon Sep 17 00:00:00 2001
From: Graham Nelson
Date: Wed, 6 May 2020 10:15:34 +0100
Subject: [PATCH] Completed downloads feature
---
Chapter 2/The Parser.w | 10 +
Chapter 3/The Collater.w | 8 +
Chapter 3/The Weaver.w | 3 +-
Chapter 5/Debugging Format.w | 2 +-
Chapter 5/HTML Formats.w | 47 +-
Chapter 5/Weave Tree.w | 4 +-
Manual/Advanced Weaving with Patterns.w | 3 +
Manual/How to Write a Web.w | 7 +-
Patterns/HTML/Downloads/Downloads.css | 16 +
Patterns/HTML/Downloads/download.png | Bin 0 -> 1085 bytes
Patterns/HTML/Embedding/Download.html | 10 +
Tangled/inweb.c | 2760 +++++++++--------
docs/docs-assets/Downloads.css | 16 +
docs/docs-assets/download.png | Bin 0 -> 1085 bytes
docs/foundation-module/1-pp.html | 14 +-
docs/foundation-module/1-wp.html | 12 +-
docs/foundation-module/3-fln.html | 14 +-
docs/goldbach/goldbach.pdf | Bin 252026 -> 252026 bytes
docs/inweb/1-pc.html | 2 +-
docs/inweb/1-ptt.html | 2 +-
docs/inweb/1-ts.html | 2 +-
docs/inweb/2-tp.html | 10 +
docs/inweb/3-tc.html | 58 +-
docs/inweb/3-tw.html | 3 +-
docs/inweb/5-df.html | 2 +-
docs/inweb/5-hf.html | 51 +-
docs/inweb/5-wt.html | 4 +-
docs/inweb/6-cln.html | 8 +-
docs/inweb/M-awwp.html | 3 +
docs/inweb/M-htwaw.html | 18 +-
foundation-module/Chapter 1/POSIX Platforms.w | 10 +-
.../Chapter 1/Windows Platform.w | 10 +-
foundation-module/Chapter 3/Filenames.w | 12 +-
33 files changed, 1709 insertions(+), 1412 deletions(-)
create mode 100644 Patterns/HTML/Downloads/Downloads.css
create mode 100644 Patterns/HTML/Downloads/download.png
create mode 100644 Patterns/HTML/Embedding/Download.html
create mode 100644 docs/docs-assets/Downloads.css
create mode 100644 docs/docs-assets/download.png
diff --git a/Chapter 2/The Parser.w b/Chapter 2/The Parser.w
index bff05c4..a668a46 100644
--- a/Chapter 2/The Parser.w
+++ b/Chapter 2/The Parser.w
@@ -391,6 +391,15 @@ division in the current section.
code_lcat_for_body = COMMENT_BODY_LCAT;
L->text_operand = Str::duplicate(mr2.exp[0]);
comment_mode = TRUE;
+ } else if ((current_paragraph) &&
+ (Regexp::match(&mr2, mr.exp[0], L"%(download (%c+) \"(%c*)\"%)"))) {
+ Tags::add_by_name(L->owning_paragraph, I"Download");
+ L->command_code = DOWNLOAD_CMD;
+ L->category = COMMAND_LCAT;
+ code_lcat_for_body = COMMENT_BODY_LCAT;
+ L->text_operand = Str::duplicate(mr2.exp[0]);
+ L->text_operand2 = Str::duplicate(mr2.exp[1]);
+ comment_mode = TRUE;
} else if ((current_paragraph) &&
(Regexp::match(&mr2, mr.exp[0], L"%(download (%c+)%)"))) {
Tags::add_by_name(L->owning_paragraph, I"Download");
@@ -398,6 +407,7 @@ division in the current section.
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
L->text_operand = Str::duplicate(mr2.exp[0]);
+ L->text_operand2 = Str::new();
comment_mode = TRUE;
} else if ((current_paragraph) &&
(Regexp::match(&mr2, mr.exp[0], L"%(carousel%)"))) {
diff --git a/Chapter 3/The Collater.w b/Chapter 3/The Collater.w
index cd4f4a1..280a0c8 100644
--- a/Chapter 3/The Collater.w
+++ b/Chapter 3/The Collater.w
@@ -495,6 +495,8 @@ used by the HTML renderer, would cause a modest-sized explosion on some pages.
@;
} else if (Regexp::match(&mr, varname, L"Docs")) {
@;
+ } else if (Regexp::match(&mr, varname, L"Assets")) {
+ @;
} else if (Regexp::match(&mr, varname, L"URL \"(%c+)\"")) {
text_stream *link_text = mr.exp[0];
@;
@@ -665,6 +667,12 @@ navigation purposes.
Filenames::up(cls->into_file),
Pathnames::from_text(Colonies::home()));
+@ =
+ pathname *P = Colonies::assets_path();
+ if (P == NULL) P = Filenames::up(cls->into_file);
+ Pathnames::relative_URL(substituted,
+ Filenames::up(cls->into_file), P);
+
@ =
Pathnames::relative_URL(substituted,
Filenames::up(cls->into_file),
diff --git a/Chapter 3/The Weaver.w b/Chapter 3/The Weaver.w
index a8b2f24..0518098 100644
--- a/Chapter 3/The Weaver.w
+++ b/Chapter 3/The Weaver.w
@@ -308,7 +308,8 @@ at us; but we don't weave them into the output, that's for sure.
Trees::make_child(WeaveTree::video(tree, figname, w, h), state->ap);
@ =
- Trees::make_child(WeaveTree::download(tree, L->text_operand), state->ap);
+ Trees::make_child(WeaveTree::download(tree, L->text_operand, L->text_operand2),
+ state->ap);
@ =
int w, h;
diff --git a/Chapter 5/Debugging Format.w b/Chapter 5/Debugging Format.w
index 9977ada..13e63f1 100644
--- a/Chapter 5/Debugging Format.w
+++ b/Chapter 5/Debugging Format.w
@@ -157,7 +157,7 @@ int Debugging::render_visit(tree_node *N, void *state, int L) {
@ =
weave_download_node *C = RETRIEVE_POINTER_weave_download_node(N->content);
- WRITE(" <%S>", C->download_name);
+ WRITE(" <%S> %S", C->download_name, C->filetype);
@ =
weave_material_node *C = RETRIEVE_POINTER_weave_material_node(N->content);
diff --git a/Chapter 5/HTML Formats.w b/Chapter 5/HTML Formats.w
index 0145da8..c36aca0 100644
--- a/Chapter 5/HTML Formats.w
+++ b/Chapter 5/HTML Formats.w
@@ -366,19 +366,40 @@ int HTMLFormat::render_visit(tree_node *N, void *state, int L) {
filename *F = Filenames::in(
Pathnames::down(hrs->wv->weave_web->md->path_to_web, I"Downloads"),
C->download_name);
- Assets::include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL,
- hrs->wv->pattern, hrs->wv->weave_to);
- HTML_OPEN_WITH("p", "class=\"center-p\"");
- WRITE("Download: ");
- TEMPORARY_TEXT(url);
- Pathnames::relative_URL(url, Filenames::up(hrs->wv->weave_to), Filenames::up(F));
- WRITE_TO(url, "%S", Filenames::get_leafname(F));
- HTML::begin_download_link(OUT, url);
- WRITE("%S", C->download_name);
- HTML::end_link(OUT);
- DISCARD_TEXT(url);
- HTML_CLOSE("p");
- WRITE("\n");
+ filename *TF = Patterns::find_file_in_subdirectory(hrs->wv->pattern, I"Embedding",
+ I"Download.html");
+ if (TF == NULL) {
+ Main::error_in_web(I"Downloads are not supported", hrs->wv->current_weave_line);
+ } else {
+ Swarm::ensure_plugin(hrs->wv, I"Downloads");
+ Assets::include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL,
+ hrs->wv->pattern, hrs->wv->weave_to);
+ TEMPORARY_TEXT(url);
+ TEMPORARY_TEXT(size);
+ Pathnames::relative_URL(url, Filenames::up(hrs->wv->weave_to), Filenames::up(F));
+ WRITE_TO(url, "%S", Filenames::get_leafname(F));
+ int N = Filenames::size(F);
+ if (N > 0) @
+ else Main::error_in_web(I"Download file missing or empty",
+ hrs->wv->current_weave_line);
+ Bibliographic::set_datum(hrs->wv->weave_web->md, I"File Name", C->download_name);
+ Bibliographic::set_datum(hrs->wv->weave_web->md, I"File URL", url);
+ Bibliographic::set_datum(hrs->wv->weave_web->md, I"File Details", size);
+ Collater::for_web_and_pattern(OUT, hrs->wv->weave_web, hrs->wv->pattern,
+ TF, hrs->into_file);
+ WRITE("\n");
+ DISCARD_TEXT(url);
+ DISCARD_TEXT(size);
+ }
+
+@ =
+ WRITE_TO(size, " (");
+ if (Str::len(C->filetype) > 0) WRITE_TO(size, "%S, ", C->filetype);
+ if (N < 1024) WRITE_TO(size, "%d byte%s", N, (N!=1)?"s":"");
+ else if (N < 1024*1024) WRITE_TO(size, "%dkB", N/1024);
+ else if (N < 1024*1024*1024) WRITE_TO(size, "%dMB", N/1024/1024);
+ else WRITE_TO(size, "%dGB", N/1024/1024/1024);
+ WRITE_TO(size, ")");
@ =
weave_material_node *C = RETRIEVE_POINTER_weave_material_node(N->content);
diff --git a/Chapter 5/Weave Tree.w b/Chapter 5/Weave Tree.w
index 72c3e8a..c56dadf 100644
--- a/Chapter 5/Weave Tree.w
+++ b/Chapter 5/Weave Tree.w
@@ -96,6 +96,7 @@ typedef struct weave_video_node {
typedef struct weave_download_node {
struct text_stream *download_name;
+ struct text_stream *filetype;
MEMORY_MANAGEMENT
} weave_download_node;
@@ -534,9 +535,10 @@ tree_node *WeaveTree::video(heterogeneous_tree *tree,
}
tree_node *WeaveTree::download(heterogeneous_tree *tree,
- text_stream *download_name) {
+ text_stream *download_name, text_stream *filetype) {
weave_download_node *C = CREATE(weave_download_node);
C->download_name = Str::duplicate(download_name);
+ C->filetype = Str::duplicate(filetype);
return Trees::new_node(tree, weave_download_node_type,
STORE_POINTER_weave_download_node(C));
}
diff --git a/Manual/Advanced Weaving with Patterns.w b/Manual/Advanced Weaving with Patterns.w
index 00a6661..c3fdd27 100644
--- a/Manual/Advanced Weaving with Patterns.w
+++ b/Manual/Advanced Weaving with Patterns.w
@@ -352,6 +352,9 @@ in BLOCK CAPITAL LETTERS.
a colony of webs -- see //Making Weaves into Websites// for more, and for
syntaxes to do with links and URLs.
(b) |[[Breadcrumbs]]| expands to the HTML for the breadcrumb trail.
+(c) |[[Docs]]| expands to the URL to the home page of a colony.
+(d) |[[Assets]]| expands to the URL of the directory into which plugin
+assets such as images are placed.
@ The |template-index.html| file has access to additional placeholders
enabling it to generate contents pages:
diff --git a/Manual/How to Write a Web.w b/Manual/How to Write a Web.w
index baa80d5..37a21a0 100644
--- a/Manual/How to Write a Web.w
+++ b/Manual/How to Write a Web.w
@@ -602,12 +602,13 @@ arguably music has width and not height, but SoundCloud thinks otherwise).
Occasional small downloads may be useful as a way to present examples to
try with a program being documented. These are very simple:
= (text as Inweb)
- = (download alice.crt)
+ = (download alice.crt "certificate file")
=
produces:
-= (download alice.crt)
+= (download alice.crt "certificate file")
The file to download, in this case |alice.crt|, must be placed in a |Downloads|
-subdirectory of the web.
+subdirectory of the web. The explanatory text -- usually just an indication
+of what sort of file this is -- is optional.
@h Mathematics notation.
Literate programming is a good technique to justify code which hangs on
diff --git a/Patterns/HTML/Downloads/Downloads.css b/Patterns/HTML/Downloads/Downloads.css
new file mode 100644
index 0000000..c1b9f07
--- /dev/null
+++ b/Patterns/HTML/Downloads/Downloads.css
@@ -0,0 +1,16 @@
+div.download-container p {
+ text-align: center;
+}
+
+div.download-container button.download-button {
+ background-color: DodgerBlue;
+ border: none;
+ color: white;
+ padding: 10px 24px;
+ cursor: pointer;
+ font-size: 18px;
+}
+
+div.download-container button.download-button:hover {
+ background-color: RoyalBlue;
+}
diff --git a/Patterns/HTML/Downloads/download.png b/Patterns/HTML/Downloads/download.png
new file mode 100644
index 0000000000000000000000000000000000000000..3834ae9212f376c15c032626f6bb1af1ac31bd78
GIT binary patch
literal 1085
zcmaJ=Pe>F|7=N~~iMl}$k#=w#=@7X)GpoDnPHwu+thwdLvb&UY(Q)RfgU-Bh=IO2r
zvRbF0Lw1QkMLN_igbo%(+9eADI~jN>sBTse2K_;{H|lDKwt<=VzK`GU_x;}czPX<0
zKJTfhsQ>_Y;+Ly_W(9)VUWn~y*sviz&Muh(QWSOQkH9}twNUUTEa7gRS
zSumCBPAj=#C9Kk|=ctw}PXu&`Wh$$W7&f1c&^x+3**j^5rgk8BI7085>X8zZfGkJ_
ze5_YtgDe%~d|YEwC=_a-{4B>Zte@fhUM|Ep`gxY6_8yv4v(y1TDR%7DB2k1M!r0^)
zCX>ndGL1fD4KiFf9CkGPelJ0I?Fj?RS+8N&7ZpTkE0$(r4H=Z9DEFf=9HEKR-6QDc
zzN}&IT@$%5CM%l^=VP5C6@ilUf2gkSqivjo2Y&x4Y^Nto$RweS#w>+2ZlK;NW%7ar
zWsIyeLL>*@QLMlK>vZ5JIyn~k{K5p1pHWU~aBQ#O)X`0IWg;+;W5P~5g
z8sNBCG|aV!qe3$$iZOu;u)!i%M9P>B4P4}^2i#Cet}_a{Nh*ub(#E0MVIiH`IWn)6
z_R>^RZ;z{%_7W(`Wr!KZY3yH(E~d!zINSZPCBgpSLxW7aMaH`9zGt5N67ED-I<~#N
zT__Y@POjY`nL{|)ohpD&OY8*_&BVoMI=iv?_W6-1s>=1|dm+D3`JxiTg}QrZ?@qe!
zT&!xiH0u%1xZG7I*uI4d@d|QP*FC)kLF(t1)2~1NUTvPK-I|`S4cwZ2=h`wlzpZVQ
zgZwiv6
+
+
+
+
+ Download [[File Name]] [[File Details]]
+
+
+
+
diff --git a/Tangled/inweb.c b/Tangled/inweb.c
index 4c778c4..7340f53 100644
--- a/Tangled/inweb.c
+++ b/Tangled/inweb.c
@@ -110,7 +110,7 @@ void Platform__where_am_i(wchar_t *p, size_t length) {
#endif /* PLATFORM_MACOS */
#endif /* PLATFORM_POSIX */
#ifdef PLATFORM_POSIX
-#line 340 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+#line 346 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
typedef pthread_t foundation_thread;
typedef pthread_attr_t foundation_thread_attributes;
@@ -207,7 +207,7 @@ typedef struct Win32_Thread_Attrs foundation_thread_attributes;
#endif /* PLATFORM_WINDOWS */
#ifdef PLATFORM_WINDOWS
-#line 250 "inweb/foundation-module/Chapter 1/Windows Platform.w"
+#line 256 "inweb/foundation-module/Chapter 1/Windows Platform.w"
struct Win32_Critical_Section {
void* v1; long v2; long v3; long v4; long v5; void* v6; };
void __stdcall EnterCriticalSection(struct Win32_Critical_Section* cs);
@@ -1676,7 +1676,7 @@ typedef struct source_line {
struct source_line *next_line; /* within the owning section's linked list */
struct paragraph *owning_paragraph; /* for lines falling under paragraphs; |NULL| if not */
} source_line;
-#line 722 "inweb/Chapter 2/The Parser.w"
+#line 732 "inweb/Chapter 2/The Parser.w"
typedef struct paragraph {
int above_bar; /* placed above the dividing bar in its section (in Version 1 syntax) */
int placed_early; /* should appear early in the tangled code */
@@ -1699,7 +1699,7 @@ typedef struct paragraph {
struct section *under_section;
MEMORY_MANAGEMENT
} paragraph;
-#line 833 "inweb/Chapter 2/The Parser.w"
+#line 843 "inweb/Chapter 2/The Parser.w"
typedef struct footnote {
int footnote_cue_number; /* used only for |FOOTNOTE_TEXT_LCAT| lines */
int footnote_text_number; /* used only for |FOOTNOTE_TEXT_LCAT| lines */
@@ -2037,16 +2037,17 @@ typedef struct weave_video_node {
#line 97 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_download_node {
struct text_stream *download_name;
+ struct text_stream *filetype;
MEMORY_MANAGEMENT
} weave_download_node;
-#line 102 "inweb/Chapter 5/Weave Tree.w"
+#line 103 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_material_node {
int material_type;
int plainly;
struct programming_language *styling;
MEMORY_MANAGEMENT
} weave_material_node;
-#line 109 "inweb/Chapter 5/Weave Tree.w"
+#line 110 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_embed_node {
struct text_stream *service;
struct text_stream *ID;
@@ -2054,130 +2055,130 @@ typedef struct weave_embed_node {
int h;
MEMORY_MANAGEMENT
} weave_embed_node;
-#line 117 "inweb/Chapter 5/Weave Tree.w"
+#line 118 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_pmac_node {
struct para_macro *pmac;
int defn;
MEMORY_MANAGEMENT
} weave_pmac_node;
-#line 123 "inweb/Chapter 5/Weave Tree.w"
+#line 124 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_vskip_node {
int in_comment;
MEMORY_MANAGEMENT
} weave_vskip_node;
-#line 128 "inweb/Chapter 5/Weave Tree.w"
+#line 129 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_chapter_node {
struct chapter *chap;
MEMORY_MANAGEMENT
} weave_chapter_node;
-#line 133 "inweb/Chapter 5/Weave Tree.w"
+#line 134 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_section_node {
struct section *sect;
MEMORY_MANAGEMENT
} weave_section_node;
-#line 138 "inweb/Chapter 5/Weave Tree.w"
+#line 139 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_code_line_node {
MEMORY_MANAGEMENT
} weave_code_line_node;
-#line 142 "inweb/Chapter 5/Weave Tree.w"
+#line 143 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_function_usage_node {
struct text_stream *url;
struct language_function *fn;
MEMORY_MANAGEMENT
} weave_function_usage_node;
-#line 148 "inweb/Chapter 5/Weave Tree.w"
+#line 149 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_commentary_node {
struct text_stream *text;
int in_code;
MEMORY_MANAGEMENT
} weave_commentary_node;
-#line 154 "inweb/Chapter 5/Weave Tree.w"
+#line 155 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_carousel_slide_node {
struct text_stream *caption;
int caption_command;
MEMORY_MANAGEMENT
} weave_carousel_slide_node;
-#line 160 "inweb/Chapter 5/Weave Tree.w"
+#line 161 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_toc_node {
struct text_stream *text1;
MEMORY_MANAGEMENT
} weave_toc_node;
-#line 165 "inweb/Chapter 5/Weave Tree.w"
+#line 166 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_toc_line_node {
struct text_stream *text1;
struct text_stream *text2;
struct paragraph *para;
MEMORY_MANAGEMENT
} weave_toc_line_node;
-#line 172 "inweb/Chapter 5/Weave Tree.w"
+#line 173 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_chapter_title_page_node {
MEMORY_MANAGEMENT
} weave_chapter_title_page_node;
-#line 176 "inweb/Chapter 5/Weave Tree.w"
+#line 177 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_defn_node {
struct text_stream *keyword;
MEMORY_MANAGEMENT
} weave_defn_node;
-#line 181 "inweb/Chapter 5/Weave Tree.w"
+#line 182 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_inline_node {
MEMORY_MANAGEMENT
} weave_inline_node;
-#line 185 "inweb/Chapter 5/Weave Tree.w"
+#line 186 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_locale_node {
struct paragraph *par1;
struct paragraph *par2;
MEMORY_MANAGEMENT
} weave_locale_node;
-#line 191 "inweb/Chapter 5/Weave Tree.w"
+#line 192 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_source_code_node {
struct text_stream *matter;
struct text_stream *colouring;
MEMORY_MANAGEMENT
} weave_source_code_node;
-#line 197 "inweb/Chapter 5/Weave Tree.w"
+#line 198 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_url_node {
struct text_stream *url;
struct text_stream *content;
int external;
MEMORY_MANAGEMENT
} weave_url_node;
-#line 204 "inweb/Chapter 5/Weave Tree.w"
+#line 205 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_footnote_cue_node {
struct text_stream *cue_text;
MEMORY_MANAGEMENT
} weave_footnote_cue_node;
-#line 209 "inweb/Chapter 5/Weave Tree.w"
+#line 210 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_begin_footnote_text_node {
struct text_stream *cue_text;
MEMORY_MANAGEMENT
} weave_begin_footnote_text_node;
-#line 214 "inweb/Chapter 5/Weave Tree.w"
+#line 215 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_display_line_node {
struct text_stream *text;
MEMORY_MANAGEMENT
} weave_display_line_node;
-#line 219 "inweb/Chapter 5/Weave Tree.w"
+#line 220 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_function_defn_node {
struct language_function *fn;
MEMORY_MANAGEMENT
} weave_function_defn_node;
-#line 224 "inweb/Chapter 5/Weave Tree.w"
+#line 225 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_item_node {
int depth;
struct text_stream *label;
MEMORY_MANAGEMENT
} weave_item_node;
-#line 230 "inweb/Chapter 5/Weave Tree.w"
+#line 231 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_grammar_index_node {
MEMORY_MANAGEMENT
} weave_grammar_index_node;
-#line 234 "inweb/Chapter 5/Weave Tree.w"
+#line 235 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_maths_node {
struct text_stream *content;
int displayed;
MEMORY_MANAGEMENT
} weave_maths_node;
-#line 240 "inweb/Chapter 5/Weave Tree.w"
+#line 241 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_verbatim_node {
struct text_stream *content;
MEMORY_MANAGEMENT
@@ -2383,43 +2384,47 @@ time_t Platform__never_time(void) ;
time_t Platform__timestamp(char *transcoded_filename) ;
#endif /* PLATFORM_POSIX */
#ifdef PLATFORM_POSIX
-#line 280 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+#line 272 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+off_t Platform__size(char *transcoded_filename) ;
+#endif /* PLATFORM_POSIX */
+#ifdef PLATFORM_POSIX
+#line 286 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
void Platform__rsync(char *transcoded_source, char *transcoded_dest) ;
#endif /* PLATFORM_POSIX */
#ifdef PLATFORM_POSIX
-#line 289 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+#line 295 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
void Platform__quote_text(char *quoted, char *raw, int terminate) ;
#endif /* PLATFORM_POSIX */
#ifdef PLATFORM_POSIX
-#line 305 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+#line 311 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
void Platform__sleep(int seconds) ;
#endif /* PLATFORM_POSIX */
#ifdef PLATFORM_MACOS
#ifdef PLATFORM_POSIX
-#line 321 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+#line 327 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
void Platform__notification(text_stream *text, int happy) ;
#endif /* PLATFORM_MACOS */
#endif /* PLATFORM_POSIX */
#ifndef PLATFORM_MACOS
#ifdef PLATFORM_POSIX
-#line 334 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+#line 340 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
void Platform__notification(text_stream *text, int happy) ;
#endif /* PLATFORM_MACOS */
#endif /* PLATFORM_POSIX */
#ifdef PLATFORM_POSIX
-#line 346 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+#line 352 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
int Platform__create_thread(foundation_thread *pt, const foundation_thread_attributes *pa, void *(*fn)(void *), void *arg) ;
#endif /* PLATFORM_POSIX */
#ifdef PLATFORM_POSIX
-#line 351 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+#line 357 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
int Platform__join_thread(pthread_t pt, void** rv) ;
#endif /* PLATFORM_POSIX */
#ifdef PLATFORM_POSIX
-#line 355 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+#line 361 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
void Platform__init_thread(pthread_attr_t* pa, size_t size) ;
#endif /* PLATFORM_POSIX */
#ifdef PLATFORM_POSIX
-#line 360 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+#line 366 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
size_t Platform__get_thread_stack_size(pthread_attr_t* pa) ;
#endif /* PLATFORM_POSIX */
#ifdef PLATFORM_WINDOWS
@@ -2478,6 +2483,10 @@ time_t Platform__never_time(void) ;
#line 236 "inweb/foundation-module/Chapter 1/Windows Platform.w"
time_t Platform__timestamp(char *transcoded_filename) ;
#endif /* PLATFORM_WINDOWS */
+#ifdef PLATFORM_WINDOWS
+#line 242 "inweb/foundation-module/Chapter 1/Windows Platform.w"
+off_t Platform__size(char *transcoded_filename) ;
+#endif /* PLATFORM_WINDOWS */
#line 64 "inweb/foundation-module/Chapter 2/Debugging Log.w"
void Log__declare_aspect(int a, wchar_t *name, int def, int alt) ;
#line 111 "inweb/foundation-module/Chapter 2/Debugging Log.w"
@@ -2898,6 +2907,8 @@ FILE * Filenames__fopen_caseless(filename *F, char *usage) ;
int Filenames__eq(filename *F1, filename *F2) ;
#line 266 "inweb/foundation-module/Chapter 3/Filenames.w"
time_t Filenames__timestamp(filename *F) ;
+#line 276 "inweb/foundation-module/Chapter 3/Filenames.w"
+int Filenames__size(filename *F) ;
#ifdef PLATFORM_POSIX
#line 50 "inweb/foundation-module/Chapter 3/Case-Insensitive Filenames.w"
FILE * CIFilingSystem__fopen(const char *path, const char *mode) ;
@@ -3628,13 +3639,13 @@ source_line * Lines__new_source_line_in(text_stream *line, text_file_position *t
char * Lines__category_name(int cat) ;
#line 17 "inweb/Chapter 2/The Parser.w"
void Parser__parse_web(web *W, int inweb_mode) ;
-#line 815 "inweb/Chapter 2/The Parser.w"
+#line 825 "inweb/Chapter 2/The Parser.w"
text_stream * Parser__extract_purpose(text_stream *prologue, source_line *XL, section *S, source_line **adjust) ;
-#line 887 "inweb/Chapter 2/The Parser.w"
+#line 897 "inweb/Chapter 2/The Parser.w"
int Parser__detect_footnote(web *W, text_stream *matter, text_stream *before, text_stream *cue, text_stream *after) ;
-#line 930 "inweb/Chapter 2/The Parser.w"
+#line 940 "inweb/Chapter 2/The Parser.w"
footnote * Parser__find_footnote_in_para(paragraph *P, text_stream *cue) ;
-#line 946 "inweb/Chapter 2/The Parser.w"
+#line 956 "inweb/Chapter 2/The Parser.w"
void Parser__wrong_version(int using, source_line *L, char *feature, int need) ;
#line 20 "inweb/Chapter 2/Paragraph Macros.w"
para_macro * Macros__create(section *S, paragraph *P, source_line *L, text_stream *name) ;
@@ -3718,35 +3729,35 @@ linked_list_item * Collater__heading_topmost_on_stack(collater_state *cls, int l
void Collater__start_CI_loop(collater_state *cls, int level, linked_list_item *from, linked_list_item *to, int pos) ;
#line 450 "inweb/Chapter 3/The Collater.w"
void Collater__end_CI_loop(collater_state *cls) ;
-#line 742 "inweb/Chapter 3/The Collater.w"
+#line 750 "inweb/Chapter 3/The Collater.w"
text_stream * Collater__module_owner(const module *M, web *W) ;
-#line 758 "inweb/Chapter 3/The Collater.w"
+#line 766 "inweb/Chapter 3/The Collater.w"
void Collater__sort_web(web *W) ;
-#line 761 "inweb/Chapter 3/The Collater.w"
+#line 769 "inweb/Chapter 3/The Collater.w"
int Collater__sort_comparison(const void *ent1, const void *ent2) ;
-#line 771 "inweb/Chapter 3/The Collater.w"
+#line 779 "inweb/Chapter 3/The Collater.w"
int Collater__cmp_owners(text_stream *O1, text_stream *O2) ;
#line 16 "inweb/Chapter 3/The Weaver.w"
int Weaver__weave(weave_order *wv) ;
#line 42 "inweb/Chapter 3/The Weaver.w"
int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *body) ;
-#line 576 "inweb/Chapter 3/The Weaver.w"
+#line 577 "inweb/Chapter 3/The Weaver.w"
void Weaver__show_endnotes_on_previous_paragraph(heterogeneous_tree *tree, weave_order *wv, tree_node *ap, paragraph *P) ;
-#line 674 "inweb/Chapter 3/The Weaver.w"
+#line 675 "inweb/Chapter 3/The Weaver.w"
void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv, tree_node *ap, paragraph *P, language_function *fn, int as_list) ;
-#line 739 "inweb/Chapter 3/The Weaver.w"
+#line 740 "inweb/Chapter 3/The Weaver.w"
void Weaver__weave_subheading(heterogeneous_tree *tree, weave_order *wv, tree_node *ap, text_stream *text) ;
-#line 745 "inweb/Chapter 3/The Weaver.w"
+#line 746 "inweb/Chapter 3/The Weaver.w"
void Weaver__change_material(heterogeneous_tree *tree, weaver_state *state, int new_material, int plainly, programming_language *pl) ;
-#line 757 "inweb/Chapter 3/The Weaver.w"
+#line 758 "inweb/Chapter 3/The Weaver.w"
void Weaver__change_material_for_para(heterogeneous_tree *tree, weaver_state *state) ;
-#line 765 "inweb/Chapter 3/The Weaver.w"
+#line 766 "inweb/Chapter 3/The Weaver.w"
void Weaver__figure(heterogeneous_tree *tree, weave_order *wv, tree_node *ap, text_stream *figname, int w, int h) ;
-#line 771 "inweb/Chapter 3/The Weaver.w"
+#line 772 "inweb/Chapter 3/The Weaver.w"
void Weaver__commentary_text(heterogeneous_tree *tree, weave_order *wv, tree_node *ap, text_stream *matter) ;
-#line 781 "inweb/Chapter 3/The Weaver.w"
+#line 782 "inweb/Chapter 3/The Weaver.w"
text_stream * Weaver__dimensions(text_stream *item, int *w, int *h, source_line *L) ;
-#line 828 "inweb/Chapter 3/The Weaver.w"
+#line 829 "inweb/Chapter 3/The Weaver.w"
int Weaver__weave_table_of_contents(heterogeneous_tree *tree, tree_node *ap, section *S) ;
#line 12 "inweb/Chapter 3/The Weaver of Text.w"
void TextWeaver__commentary_text(heterogeneous_tree *tree, tree_node *ap, text_stream *matter) ;
@@ -4004,103 +4015,103 @@ void InCSupport__new_tag_declared(programming_language *self, theme_tag *tag) ;
void InCSupport__analyse_code(programming_language *self, web *W) ;
#line 968 "inweb/Chapter 4/InC Support.w"
int InCSupport__share_element(programming_language *self, text_stream *elname) ;
-#line 293 "inweb/Chapter 5/Weave Tree.w"
+#line 294 "inweb/Chapter 5/Weave Tree.w"
heterogeneous_tree * WeaveTree__new_tree(weave_order *wv) ;
-#line 394 "inweb/Chapter 5/Weave Tree.w"
+#line 395 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__document(heterogeneous_tree *tree, weave_order *wv) ;
-#line 401 "inweb/Chapter 5/Weave Tree.w"
+#line 402 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__head(heterogeneous_tree *tree, text_stream *banner) ;
-#line 408 "inweb/Chapter 5/Weave Tree.w"
+#line 409 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__body(heterogeneous_tree *tree) ;
-#line 414 "inweb/Chapter 5/Weave Tree.w"
+#line 415 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__tail(heterogeneous_tree *tree, text_stream *rennab) ;
-#line 421 "inweb/Chapter 5/Weave Tree.w"
+#line 422 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__verbatim(heterogeneous_tree *tree, text_stream *content) ;
-#line 428 "inweb/Chapter 5/Weave Tree.w"
+#line 429 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__section_header(heterogeneous_tree *tree, section *S) ;
-#line 435 "inweb/Chapter 5/Weave Tree.w"
+#line 436 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__section_footer(heterogeneous_tree *tree, section *S) ;
-#line 442 "inweb/Chapter 5/Weave Tree.w"
+#line 443 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__chapter(heterogeneous_tree *tree, chapter *Ch) ;
-#line 448 "inweb/Chapter 5/Weave Tree.w"
+#line 449 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__chapter_header(heterogeneous_tree *tree, chapter *Ch) ;
-#line 455 "inweb/Chapter 5/Weave Tree.w"
+#line 456 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__chapter_footer(heterogeneous_tree *tree, chapter *Ch) ;
-#line 462 "inweb/Chapter 5/Weave Tree.w"
+#line 463 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__purpose(heterogeneous_tree *tree, text_stream *P) ;
-#line 469 "inweb/Chapter 5/Weave Tree.w"
+#line 470 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__subheading(heterogeneous_tree *tree, text_stream *P) ;
-#line 476 "inweb/Chapter 5/Weave Tree.w"
+#line 477 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__pagebreak(heterogeneous_tree *tree) ;
-#line 482 "inweb/Chapter 5/Weave Tree.w"
+#line 483 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__linebreak(heterogeneous_tree *tree) ;
-#line 488 "inweb/Chapter 5/Weave Tree.w"
+#line 489 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__bar(heterogeneous_tree *tree) ;
-#line 494 "inweb/Chapter 5/Weave Tree.w"
+#line 495 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__paragraph_heading(heterogeneous_tree *tree, paragraph *P, int no_skip) ;
-#line 502 "inweb/Chapter 5/Weave Tree.w"
+#line 503 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__endnote(heterogeneous_tree *tree) ;
-#line 508 "inweb/Chapter 5/Weave Tree.w"
+#line 509 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__figure(heterogeneous_tree *tree, text_stream *figname, int w, int h) ;
-#line 518 "inweb/Chapter 5/Weave Tree.w"
+#line 519 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__audio(heterogeneous_tree *tree, text_stream *audio_name, int w) ;
-#line 527 "inweb/Chapter 5/Weave Tree.w"
+#line 528 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__video(heterogeneous_tree *tree, text_stream *video_name, int w, int h) ;
-#line 536 "inweb/Chapter 5/Weave Tree.w"
-tree_node * WeaveTree__download(heterogeneous_tree *tree, text_stream *download_name) ;
-#line 544 "inweb/Chapter 5/Weave Tree.w"
+#line 537 "inweb/Chapter 5/Weave Tree.w"
+tree_node * WeaveTree__download(heterogeneous_tree *tree, text_stream *download_name, text_stream *filetype) ;
+#line 546 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__material(heterogeneous_tree *tree, int material_type, int plainly, programming_language *styling) ;
-#line 553 "inweb/Chapter 5/Weave Tree.w"
+#line 555 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__embed(heterogeneous_tree *tree, text_stream *service, text_stream *ID, int w, int h) ;
-#line 568 "inweb/Chapter 5/Weave Tree.w"
+#line 570 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__pmac(heterogeneous_tree *tree, para_macro *pmac, int defn) ;
-#line 580 "inweb/Chapter 5/Weave Tree.w"
+#line 582 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__vskip(heterogeneous_tree *tree, int in_comment) ;
-#line 586 "inweb/Chapter 5/Weave Tree.w"
+#line 588 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__section(heterogeneous_tree *tree, section *sect) ;
-#line 592 "inweb/Chapter 5/Weave Tree.w"
+#line 594 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__code_line(heterogeneous_tree *tree) ;
-#line 597 "inweb/Chapter 5/Weave Tree.w"
+#line 599 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__function_usage(heterogeneous_tree *tree, text_stream *url, language_function *fn) ;
-#line 605 "inweb/Chapter 5/Weave Tree.w"
+#line 607 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__commentary(heterogeneous_tree *tree, text_stream *text, int in_code) ;
-#line 612 "inweb/Chapter 5/Weave Tree.w"
+#line 614 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__carousel_slide(heterogeneous_tree *tree, text_stream *caption, int c) ;
-#line 619 "inweb/Chapter 5/Weave Tree.w"
+#line 621 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__table_of_contents(heterogeneous_tree *tree, text_stream *text1) ;
-#line 625 "inweb/Chapter 5/Weave Tree.w"
+#line 627 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__contents_line(heterogeneous_tree *tree, text_stream *text1, text_stream *text2, paragraph *P) ;
-#line 634 "inweb/Chapter 5/Weave Tree.w"
+#line 636 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__weave_chapter_title_page_node(heterogeneous_tree *tree) ;
-#line 639 "inweb/Chapter 5/Weave Tree.w"
+#line 641 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__weave_defn_node(heterogeneous_tree *tree, text_stream *keyword) ;
-#line 649 "inweb/Chapter 5/Weave Tree.w"
+#line 651 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__source_code(heterogeneous_tree *tree, text_stream *matter, text_stream *colouring) ;
-#line 660 "inweb/Chapter 5/Weave Tree.w"
+#line 662 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__url(heterogeneous_tree *tree, text_stream *url, text_stream *content, int external) ;
-#line 669 "inweb/Chapter 5/Weave Tree.w"
+#line 671 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__footnote_cue(heterogeneous_tree *tree, text_stream *cue) ;
-#line 675 "inweb/Chapter 5/Weave Tree.w"
+#line 677 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__footnote(heterogeneous_tree *tree, text_stream *cue) ;
-#line 685 "inweb/Chapter 5/Weave Tree.w"
+#line 687 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__function_defn(heterogeneous_tree *tree, language_function *fn) ;
-#line 695 "inweb/Chapter 5/Weave Tree.w"
+#line 697 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__display_line(heterogeneous_tree *tree, text_stream *text) ;
-#line 714 "inweb/Chapter 5/Weave Tree.w"
+#line 716 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__weave_item_node(heterogeneous_tree *tree, int depth, text_stream *label) ;
-#line 721 "inweb/Chapter 5/Weave Tree.w"
+#line 723 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__grammar_index(heterogeneous_tree *tree) ;
-#line 726 "inweb/Chapter 5/Weave Tree.w"
+#line 728 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__inline(heterogeneous_tree *tree) ;
-#line 731 "inweb/Chapter 5/Weave Tree.w"
+#line 733 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__locale(heterogeneous_tree *tree, paragraph *par1, paragraph *par2) ;
-#line 738 "inweb/Chapter 5/Weave Tree.w"
+#line 740 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__mathematics(heterogeneous_tree *tree, text_stream *content, int displayed) ;
-#line 745 "inweb/Chapter 5/Weave Tree.w"
+#line 747 "inweb/Chapter 5/Weave Tree.w"
void WeaveTree__show(text_stream *OUT, heterogeneous_tree *T) ;
-#line 752 "inweb/Chapter 5/Weave Tree.w"
+#line 754 "inweb/Chapter 5/Weave Tree.w"
void WeaveTree__prune(heterogeneous_tree *T) ;
-#line 756 "inweb/Chapter 5/Weave Tree.w"
+#line 758 "inweb/Chapter 5/Weave Tree.w"
int WeaveTree__prune_visit(tree_node *N, void *state) ;
#line 18 "inweb/Chapter 5/Format Methods.w"
weave_format * Formats__create_weave_format(text_stream *name, text_stream *ext) ;
@@ -4160,19 +4171,19 @@ void HTMLFormat__render(weave_format *self, text_stream *OUT, heterogeneous_tre
void HTMLFormat__render_EPUB(weave_format *self, text_stream *OUT, heterogeneous_tree *tree) ;
#line 86 "inweb/Chapter 5/HTML Formats.w"
int HTMLFormat__render_visit(tree_node *N, void *state, int L) ;
-#line 856 "inweb/Chapter 5/HTML Formats.w"
+#line 877 "inweb/Chapter 5/HTML Formats.w"
int HTMLFormat__interior_material(tree_node *N) ;
-#line 870 "inweb/Chapter 5/HTML Formats.w"
+#line 891 "inweb/Chapter 5/HTML Formats.w"
void HTMLFormat__go_to_depth(HTML_render_state *hrs, int from_depth, int to_depth) ;
-#line 888 "inweb/Chapter 5/HTML Formats.w"
+#line 909 "inweb/Chapter 5/HTML Formats.w"
void HTMLFormat__paragraph_number(text_stream *OUT, paragraph *P) ;
-#line 901 "inweb/Chapter 5/HTML Formats.w"
+#line 922 "inweb/Chapter 5/HTML Formats.w"
void HTMLFormat__change_colour(text_stream *OUT, int col, colour_scheme *cs) ;
-#line 925 "inweb/Chapter 5/HTML Formats.w"
+#line 946 "inweb/Chapter 5/HTML Formats.w"
void HTMLFormat__escape_text(text_stream *OUT, text_stream *id) ;
-#line 937 "inweb/Chapter 5/HTML Formats.w"
+#line 958 "inweb/Chapter 5/HTML Formats.w"
int HTMLFormat__begin_weaving_EPUB(weave_format *wf, web *W, weave_pattern *pattern) ;
-#line 952 "inweb/Chapter 5/HTML Formats.w"
+#line 973 "inweb/Chapter 5/HTML Formats.w"
void HTMLFormat__end_weaving_EPUB(weave_format *wf, web *W, weave_pattern *pattern) ;
#line 9 "inweb/Chapter 5/Debugging Format.w"
void Debugging__create(void) ;
@@ -4897,6 +4908,15 @@ text_stream *TL_IS_616 = NULL;
text_stream *TL_IS_617 = NULL;
text_stream *TL_IS_618 = NULL;
text_stream *TL_IS_619 = NULL;
+text_stream *TL_IS_620 = NULL;
+text_stream *TL_IS_621 = NULL;
+text_stream *TL_IS_622 = NULL;
+text_stream *TL_IS_623 = NULL;
+text_stream *TL_IS_624 = NULL;
+text_stream *TL_IS_625 = NULL;
+text_stream *TL_IS_626 = NULL;
+text_stream *TL_IS_627 = NULL;
+text_stream *TL_IS_628 = NULL;
void register_tangled_text_literals(void);
#line 57 "inweb/foundation-module/Chapter 2/Streams.w"
#define WRITE(args...) Writers__printf(OUT, args)
@@ -5179,9 +5199,15 @@ time_t Platform__timestamp(char *transcoded_filename) {
return Platform__never_time();
}
+off_t Platform__size(char *transcoded_filename) {
+ struct stat filestat;
+ if (stat(transcoded_filename, &filestat) != -1) return filestat.st_size;
+ return (off_t) 0;
+}
+
#endif /* PLATFORM_POSIX */
#ifdef PLATFORM_POSIX
-#line 280 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+#line 286 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
void Platform__rsync(char *transcoded_source, char *transcoded_dest) {
char rsync_command[10*MAX_FILENAME_LENGTH];
sprintf(rsync_command, "rsync -a --delete ");
@@ -5206,7 +5232,7 @@ void Platform__quote_text(char *quoted, char *raw, int terminate) {
#endif /* PLATFORM_POSIX */
#ifdef PLATFORM_POSIX
-#line 305 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+#line 311 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
void Platform__sleep(int seconds) {
sleep((unsigned int) seconds);
}
@@ -5214,7 +5240,7 @@ void Platform__sleep(int seconds) {
#endif /* PLATFORM_POSIX */
#ifdef PLATFORM_MACOS
#ifdef PLATFORM_POSIX
-#line 321 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+#line 327 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
void Platform__notification(text_stream *text, int happy) {
char *sound_name = "Bell.aiff";
if (happy == FALSE) sound_name = "Submarine.aiff";
@@ -5229,14 +5255,14 @@ void Platform__notification(text_stream *text, int happy) {
#endif /* PLATFORM_POSIX */
#ifndef PLATFORM_MACOS
#ifdef PLATFORM_POSIX
-#line 334 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+#line 340 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
void Platform__notification(text_stream *text, int happy) {
}
#endif /* PLATFORM_MACOS */
#endif /* PLATFORM_POSIX */
#ifdef PLATFORM_POSIX
-#line 346 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
+#line 352 "inweb/foundation-module/Chapter 1/POSIX Platforms.w"
int Platform__create_thread(foundation_thread *pt,
const foundation_thread_attributes *pa, void *(*fn)(void *), void *arg) {
return pthread_create(pt, pa, fn, arg);
@@ -5369,6 +5395,12 @@ time_t Platform__timestamp(char *transcoded_filename) {
return Platform__never_time();
}
+off_t Platform__size(char *transcoded_filename) {
+ struct stat filestat;
+ if (stat(transcoded_filename, &filestat) != -1) return filestat.st_size;
+ return (off_t) 0;
+}
+
#endif /* PLATFORM_WINDOWS */
#line 10 "inweb/foundation-module/Chapter 2/Debugging Log.w"
text_stream debug_log_file_struct; /* The actual debugging log file */
@@ -8506,6 +8538,16 @@ time_t Filenames__timestamp(filename *F) {
return t;
}
+int Filenames__size(filename *F) {
+ char transcoded_pathname[4*MAX_FILENAME_LENGTH];
+ TEMPORARY_TEXT(FN);
+ WRITE_TO(FN, "%f", F);
+ Str__copy_to_locale_string(transcoded_pathname, FN, 4*MAX_FILENAME_LENGTH);
+ int t = (int) Platform__size(transcoded_pathname);
+ DISCARD_TEXT(FN);
+ return t;
+}
+
#ifdef PLATFORM_POSIX
#line 50 "inweb/foundation-module/Chapter 3/Case-Insensitive Filenames.w"
FILE *CIFilingSystem__fopen(const char *path, const char *mode) {
@@ -16756,15 +16798,15 @@ void Parser__parse_web(web *W, int inweb_mode) {
(Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text%)"))) {
{
-#line 464 "inweb/Chapter 2/The Parser.w"
+#line 474 "inweb/Chapter 2/The Parser.w"
match_results mr3 = Regexp__create_mr();
while (TRUE) {
if (Regexp__match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) {
- if (Str__eq(mr3.exp[0], TL_IS_187)) L->plainer = TRUE;
- else if (Str__eq(mr3.exp[0], TL_IS_188)) L->enable_hyperlinks = TRUE;
+ if (Str__eq(mr3.exp[0], TL_IS_188)) L->plainer = TRUE;
+ else if (Str__eq(mr3.exp[0], TL_IS_189)) L->enable_hyperlinks = TRUE;
else {
Main__error_in_web(
- TL_IS_189, L);
+ TL_IS_190, L);
}
} else break;
Str__clear(mr2.exp[0]);
@@ -16782,15 +16824,15 @@ void Parser__parse_web(web *W, int inweb_mode) {
(Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text as code%)"))) {
{
-#line 464 "inweb/Chapter 2/The Parser.w"
+#line 474 "inweb/Chapter 2/The Parser.w"
match_results mr3 = Regexp__create_mr();
while (TRUE) {
if (Regexp__match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) {
- if (Str__eq(mr3.exp[0], TL_IS_187)) L->plainer = TRUE;
- else if (Str__eq(mr3.exp[0], TL_IS_188)) L->enable_hyperlinks = TRUE;
+ if (Str__eq(mr3.exp[0], TL_IS_188)) L->plainer = TRUE;
+ else if (Str__eq(mr3.exp[0], TL_IS_189)) L->enable_hyperlinks = TRUE;
else {
Main__error_in_web(
- TL_IS_189, L);
+ TL_IS_190, L);
}
} else break;
Str__clear(mr2.exp[0]);
@@ -16808,15 +16850,15 @@ void Parser__parse_web(web *W, int inweb_mode) {
(Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text as (%c+)%)"))) {
{
-#line 464 "inweb/Chapter 2/The Parser.w"
+#line 474 "inweb/Chapter 2/The Parser.w"
match_results mr3 = Regexp__create_mr();
while (TRUE) {
if (Regexp__match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) {
- if (Str__eq(mr3.exp[0], TL_IS_187)) L->plainer = TRUE;
- else if (Str__eq(mr3.exp[0], TL_IS_188)) L->enable_hyperlinks = TRUE;
+ if (Str__eq(mr3.exp[0], TL_IS_188)) L->plainer = TRUE;
+ else if (Str__eq(mr3.exp[0], TL_IS_189)) L->enable_hyperlinks = TRUE;
else {
Main__error_in_web(
- TL_IS_189, L);
+ TL_IS_190, L);
}
} else break;
Str__clear(mr2.exp[0]);
@@ -16834,15 +16876,15 @@ void Parser__parse_web(web *W, int inweb_mode) {
(Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text from (%c+) as code%)"))) {
{
-#line 464 "inweb/Chapter 2/The Parser.w"
+#line 474 "inweb/Chapter 2/The Parser.w"
match_results mr3 = Regexp__create_mr();
while (TRUE) {
if (Regexp__match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) {
- if (Str__eq(mr3.exp[0], TL_IS_187)) L->plainer = TRUE;
- else if (Str__eq(mr3.exp[0], TL_IS_188)) L->enable_hyperlinks = TRUE;
+ if (Str__eq(mr3.exp[0], TL_IS_188)) L->plainer = TRUE;
+ else if (Str__eq(mr3.exp[0], TL_IS_189)) L->enable_hyperlinks = TRUE;
else {
Main__error_in_web(
- TL_IS_189, L);
+ TL_IS_190, L);
}
} else break;
Str__clear(mr2.exp[0]);
@@ -16856,7 +16898,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
code_pl_for_body = S->sect_language;
{
-#line 480 "inweb/Chapter 2/The Parser.w"
+#line 490 "inweb/Chapter 2/The Parser.w"
L->category = BEGIN_CODE_LCAT;
pathname *P = W->md->path_to_web;
filename *F = Filenames__from_text_relative(P, mr2.exp[1]);
@@ -16870,7 +16912,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
latest->next_line = TL;
latest = TL;
}
- source_line *EEL = Lines__new_source_line_in(TL_IS_190, &(L->source), S);
+ source_line *EEL = Lines__new_source_line_in(TL_IS_191, &(L->source), S);
EEL->next_line = latest->next_line;
latest->next_line = EEL;
code_lcat_for_body = TEXT_EXTRACT_LCAT;
@@ -16883,15 +16925,15 @@ void Parser__parse_web(web *W, int inweb_mode) {
(Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text from (%c+) as (%c+)%)"))) {
{
-#line 464 "inweb/Chapter 2/The Parser.w"
+#line 474 "inweb/Chapter 2/The Parser.w"
match_results mr3 = Regexp__create_mr();
while (TRUE) {
if (Regexp__match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) {
- if (Str__eq(mr3.exp[0], TL_IS_187)) L->plainer = TRUE;
- else if (Str__eq(mr3.exp[0], TL_IS_188)) L->enable_hyperlinks = TRUE;
+ if (Str__eq(mr3.exp[0], TL_IS_188)) L->plainer = TRUE;
+ else if (Str__eq(mr3.exp[0], TL_IS_189)) L->enable_hyperlinks = TRUE;
else {
Main__error_in_web(
- TL_IS_189, L);
+ TL_IS_190, L);
}
} else break;
Str__clear(mr2.exp[0]);
@@ -16905,7 +16947,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
code_pl_for_body = Languages__find_by_name(mr2.exp[2], W);
{
-#line 480 "inweb/Chapter 2/The Parser.w"
+#line 490 "inweb/Chapter 2/The Parser.w"
L->category = BEGIN_CODE_LCAT;
pathname *P = W->md->path_to_web;
filename *F = Filenames__from_text_relative(P, mr2.exp[1]);
@@ -16919,7 +16961,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
latest->next_line = TL;
latest = TL;
}
- source_line *EEL = Lines__new_source_line_in(TL_IS_190, &(L->source), S);
+ source_line *EEL = Lines__new_source_line_in(TL_IS_191, &(L->source), S);
EEL->next_line = latest->next_line;
latest->next_line = EEL;
code_lcat_for_body = TEXT_EXTRACT_LCAT;
@@ -16932,15 +16974,15 @@ void Parser__parse_web(web *W, int inweb_mode) {
(Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text from (%c+)%)"))) {
{
-#line 464 "inweb/Chapter 2/The Parser.w"
+#line 474 "inweb/Chapter 2/The Parser.w"
match_results mr3 = Regexp__create_mr();
while (TRUE) {
if (Regexp__match(&mr3, mr2.exp[0], L" *(%C+) *(%c*?)")) {
- if (Str__eq(mr3.exp[0], TL_IS_187)) L->plainer = TRUE;
- else if (Str__eq(mr3.exp[0], TL_IS_188)) L->enable_hyperlinks = TRUE;
+ if (Str__eq(mr3.exp[0], TL_IS_188)) L->plainer = TRUE;
+ else if (Str__eq(mr3.exp[0], TL_IS_189)) L->enable_hyperlinks = TRUE;
else {
Main__error_in_web(
- TL_IS_189, L);
+ TL_IS_190, L);
}
} else break;
Str__clear(mr2.exp[0]);
@@ -16954,7 +16996,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
code_pl_for_body = NULL;
{
-#line 480 "inweb/Chapter 2/The Parser.w"
+#line 490 "inweb/Chapter 2/The Parser.w"
L->category = BEGIN_CODE_LCAT;
pathname *P = W->md->path_to_web;
filename *F = Filenames__from_text_relative(P, mr2.exp[1]);
@@ -16968,7 +17010,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
latest->next_line = TL;
latest = TL;
}
- source_line *EEL = Lines__new_source_line_in(TL_IS_190, &(L->source), S);
+ source_line *EEL = Lines__new_source_line_in(TL_IS_191, &(L->source), S);
EEL->next_line = latest->next_line;
latest->next_line = EEL;
code_lcat_for_body = TEXT_EXTRACT_LCAT;
@@ -17002,16 +17044,26 @@ void Parser__parse_web(web *W, int inweb_mode) {
L->text_operand = Str__duplicate(mr2.exp[0]);
comment_mode = TRUE;
} else if ((current_paragraph) &&
- (Regexp__match(&mr2, mr.exp[0], L"%(download (%c+)%)"))) {
+ (Regexp__match(&mr2, mr.exp[0], L"%(download (%c+) \"(%c*)\"%)"))) {
Tags__add_by_name(L->owning_paragraph, TL_IS_178);
L->command_code = DOWNLOAD_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
L->text_operand = Str__duplicate(mr2.exp[0]);
+ L->text_operand2 = Str__duplicate(mr2.exp[1]);
+ comment_mode = TRUE;
+ } else if ((current_paragraph) &&
+ (Regexp__match(&mr2, mr.exp[0], L"%(download (%c+)%)"))) {
+ Tags__add_by_name(L->owning_paragraph, TL_IS_179);
+ L->command_code = DOWNLOAD_CMD;
+ L->category = COMMAND_LCAT;
+ code_lcat_for_body = COMMENT_BODY_LCAT;
+ L->text_operand = Str__duplicate(mr2.exp[0]);
+ L->text_operand2 = Str__new();
comment_mode = TRUE;
} else if ((current_paragraph) &&
(Regexp__match(&mr2, mr.exp[0], L"%(carousel%)"))) {
- Tags__add_by_name(L->owning_paragraph, TL_IS_179);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_180);
L->command_code = CAROUSEL_UNCAPTIONED_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -17019,7 +17071,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
comment_mode = TRUE;
} else if ((current_paragraph) &&
(Regexp__match(&mr2, mr.exp[0], L"%(carousel \"(%c+)\" below%)"))) {
- Tags__add_by_name(L->owning_paragraph, TL_IS_180);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_181);
L->command_code = CAROUSEL_BELOW_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -17027,7 +17079,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
comment_mode = TRUE;
} else if ((current_paragraph) &&
(Regexp__match(&mr2, mr.exp[0], L"%(carousel \"(%c+)\" above%)"))) {
- Tags__add_by_name(L->owning_paragraph, TL_IS_181);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_182);
L->command_code = CAROUSEL_ABOVE_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -17035,7 +17087,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
comment_mode = TRUE;
} else if ((current_paragraph) &&
(Regexp__match(&mr2, mr.exp[0], L"%(carousel \"(%c+)\"%)"))) {
- Tags__add_by_name(L->owning_paragraph, TL_IS_182);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_183);
L->command_code = CAROUSEL_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -17043,7 +17095,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
comment_mode = TRUE;
} else if ((current_paragraph) &&
(Regexp__match(&mr2, mr.exp[0], L"%(carousel end%)"))) {
- Tags__add_by_name(L->owning_paragraph, TL_IS_183);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_184);
L->command_code = CAROUSEL_END_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -17051,7 +17103,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
} else if ((current_paragraph) &&
((Regexp__match(&mr2, mr.exp[0], L"%(embedded (%C+) video (%c+)%)")) ||
(Regexp__match(&mr2, mr.exp[0], L"%(embedded (%C+) audio (%c+)%)")))) {
- Tags__add_by_name(L->owning_paragraph, TL_IS_184);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_185);
L->command_code = EMBED_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -17059,10 +17111,10 @@ void Parser__parse_web(web *W, int inweb_mode) {
L->text_operand2 = Str__duplicate(mr2.exp[1]);
comment_mode = TRUE;
} else {
- Main__error_in_web(TL_IS_185, L);
+ Main__error_in_web(TL_IS_186, L);
}
} else if (Regexp__match(&mr, L->text, L"= *%C%c*")) {
- Main__error_in_web(TL_IS_186, L);
+ Main__error_in_web(TL_IS_187, L);
}
code_plainness_for_body = L->plainer;
hyperlink_body = L->enable_hyperlinks;
@@ -17091,12 +17143,12 @@ void Parser__parse_web(web *W, int inweb_mode) {
}
{
-#line 506 "inweb/Chapter 2/The Parser.w"
+#line 516 "inweb/Chapter 2/The Parser.w"
extract_mode = FALSE;
if (Str__eq_wide_string(command_text, L"Purpose:"))
{
-#line 554 "inweb/Chapter 2/The Parser.w"
- if (before_bar == FALSE) Main__error_in_web(TL_IS_192, L);
+#line 564 "inweb/Chapter 2/The Parser.w"
+ if (before_bar == FALSE) Main__error_in_web(TL_IS_193, L);
if (S->md->using_syntax >= V2_SYNTAX)
Parser__wrong_version(S->md->using_syntax, L, "'@Purpose'", V1_SYNTAX);
L->category = PURPOSE_LCAT;
@@ -17105,14 +17157,14 @@ void Parser__parse_web(web *W, int inweb_mode) {
S->sect_purpose = Parser__extract_purpose(remainder, L->next_line, L->owning_section, &L);
}
-#line 507 "inweb/Chapter 2/The Parser.w"
+#line 517 "inweb/Chapter 2/The Parser.w"
else if (Str__eq_wide_string(command_text, L"Interface:"))
{
-#line 563 "inweb/Chapter 2/The Parser.w"
+#line 573 "inweb/Chapter 2/The Parser.w"
if (S->md->using_syntax >= V2_SYNTAX)
Parser__wrong_version(S->md->using_syntax, L, "'@Interface'", V1_SYNTAX);
- if (before_bar == FALSE) Main__error_in_web(TL_IS_193, L);
+ if (before_bar == FALSE) Main__error_in_web(TL_IS_194, L);
L->category = INTERFACE_LCAT;
L->owning_paragraph = NULL;
L->is_commentary = TRUE;
@@ -17125,14 +17177,14 @@ void Parser__parse_web(web *W, int inweb_mode) {
}
}
-#line 508 "inweb/Chapter 2/The Parser.w"
+#line 518 "inweb/Chapter 2/The Parser.w"
else if (Str__eq_wide_string(command_text, L"Definitions:"))
{
-#line 578 "inweb/Chapter 2/The Parser.w"
+#line 588 "inweb/Chapter 2/The Parser.w"
if (S->md->using_syntax >= V2_SYNTAX)
Parser__wrong_version(S->md->using_syntax, L, "'@Definitions' headings", V1_SYNTAX);
- if (before_bar == FALSE) Main__error_in_web(TL_IS_194, L);
+ if (before_bar == FALSE) Main__error_in_web(TL_IS_195, L);
L->category = DEFINITIONS_LCAT;
L->owning_paragraph = NULL;
L->is_commentary = TRUE;
@@ -17140,14 +17192,14 @@ void Parser__parse_web(web *W, int inweb_mode) {
next_par_number = 1;
}
-#line 509 "inweb/Chapter 2/The Parser.w"
+#line 519 "inweb/Chapter 2/The Parser.w"
else if (Regexp__match(&mr, command_text, L"----+"))
{
-#line 591 "inweb/Chapter 2/The Parser.w"
+#line 601 "inweb/Chapter 2/The Parser.w"
if (S->md->using_syntax >= V2_SYNTAX)
Parser__wrong_version(S->md->using_syntax, L, "the bar '----...'", V1_SYNTAX);
- if (before_bar == FALSE) Main__error_in_web(TL_IS_195, L);
+ if (before_bar == FALSE) Main__error_in_web(TL_IS_196, L);
L->category = BAR_LCAT;
L->owning_paragraph = NULL;
L->is_commentary = TRUE;
@@ -17157,14 +17209,14 @@ void Parser__parse_web(web *W, int inweb_mode) {
next_par_number = 1;
}
-#line 510 "inweb/Chapter 2/The Parser.w"
+#line 520 "inweb/Chapter 2/The Parser.w"
else if ((Str__eq_wide_string(command_text, L"c")) ||
(Str__eq_wide_string(command_text, L"x")) ||
((S->md->using_syntax == V1_SYNTAX) && (Str__eq_wide_string(command_text, L"e"))))
{
-#line 609 "inweb/Chapter 2/The Parser.w"
+#line 619 "inweb/Chapter 2/The Parser.w"
if (S->md->using_syntax > V1_SYNTAX)
Parser__wrong_version(S->md->using_syntax, L, "'@c' and '@x'", V1_SYNTAX);
L->category = BEGIN_CODE_LCAT;
@@ -17178,11 +17230,11 @@ void Parser__parse_web(web *W, int inweb_mode) {
hyperlink_body = FALSE;
}
-#line 514 "inweb/Chapter 2/The Parser.w"
+#line 524 "inweb/Chapter 2/The Parser.w"
else if (Str__eq_wide_string(command_text, L"d"))
{
-#line 625 "inweb/Chapter 2/The Parser.w"
+#line 635 "inweb/Chapter 2/The Parser.w"
L->category = BEGIN_DEFINITION_LCAT;
code_lcat_for_body = CONT_DEFINITION_LCAT;
code_pl_for_body = NULL;
@@ -17199,97 +17251,63 @@ void Parser__parse_web(web *W, int inweb_mode) {
L->is_commentary = FALSE;
Regexp__dispose_of(&mr);
-}
-#line 515 "inweb/Chapter 2/The Parser.w"
-
- else if (Str__eq_wide_string(command_text, L"define")) {
- if (S->md->using_syntax < V2_SYNTAX)
- Parser__wrong_version(S->md->using_syntax, L, "'@define' for definitions (use '@d' instead)", V2_SYNTAX);
-
-{
-#line 625 "inweb/Chapter 2/The Parser.w"
- L->category = BEGIN_DEFINITION_LCAT;
- code_lcat_for_body = CONT_DEFINITION_LCAT;
- code_pl_for_body = NULL;
- match_results mr = Regexp__create_mr();
- if (Regexp__match(&mr, remainder, L"(%C+) (%c+)")) {
- L->text_operand = Str__duplicate(mr.exp[0]); /* name of term defined */
- L->text_operand2 = Str__duplicate(mr.exp[1]); /* Value */
- } else {
- L->text_operand = Str__duplicate(remainder); /* name of term defined */
- L->text_operand2 = Str__new(); /* no value given */
- }
- Analyser__mark_reserved_word_at_line(L, L->text_operand, CONSTANT_COLOUR);
- comment_mode = FALSE;
- L->is_commentary = FALSE;
- Regexp__dispose_of(&mr);
-
-}
-#line 519 "inweb/Chapter 2/The Parser.w"
-;
- } else if (Str__eq_wide_string(command_text, L"default")) {
- if (S->md->using_syntax < V2_SYNTAX)
- Parser__wrong_version(S->md->using_syntax, L, "'@default' for definitions", V2_SYNTAX);
- L->default_defn = TRUE;
-
-{
-#line 625 "inweb/Chapter 2/The Parser.w"
- L->category = BEGIN_DEFINITION_LCAT;
- code_lcat_for_body = CONT_DEFINITION_LCAT;
- code_pl_for_body = NULL;
- match_results mr = Regexp__create_mr();
- if (Regexp__match(&mr, remainder, L"(%C+) (%c+)")) {
- L->text_operand = Str__duplicate(mr.exp[0]); /* name of term defined */
- L->text_operand2 = Str__duplicate(mr.exp[1]); /* Value */
- } else {
- L->text_operand = Str__duplicate(remainder); /* name of term defined */
- L->text_operand2 = Str__new(); /* no value given */
- }
- Analyser__mark_reserved_word_at_line(L, L->text_operand, CONSTANT_COLOUR);
- comment_mode = FALSE;
- L->is_commentary = FALSE;
- Regexp__dispose_of(&mr);
-
-}
-#line 524 "inweb/Chapter 2/The Parser.w"
-;
- } else if (Str__eq_wide_string(command_text, L"enum"))
-{
-#line 645 "inweb/Chapter 2/The Parser.w"
- L->category = BEGIN_DEFINITION_LCAT;
- text_stream *from = NULL;
- match_results mr = Regexp__create_mr();
- L->text_operand = Str__duplicate(remainder); /* name of term defined */
- TEMPORARY_TEXT(before);
- TEMPORARY_TEXT(after);
- if (LanguageMethods__parse_comment(S->sect_language, L->text_operand,
- before, after)) {
- Str__copy(L->text_operand, before);
- }
- DISCARD_TEXT(before);
- DISCARD_TEXT(after);
- Str__trim_white_space(L->text_operand);
- if (Regexp__match(&mr, L->text_operand, L"(%C+) from (%c+)")) {
- from = mr.exp[1];
- Str__copy(L->text_operand, mr.exp[0]);
- } else if (Regexp__match(&mr, L->text_operand, L"(%C+) (%c+)")) {
- Main__error_in_web(TL_IS_196, L);
- }
- L->text_operand2 = Str__new();
- if (inweb_mode == TANGLE_MODE)
- Enumerations__define(L->text_operand2, L->text_operand, from, L);
- Analyser__mark_reserved_word_at_line(L, L->text_operand, CONSTANT_COLOUR);
- comment_mode = FALSE;
- L->is_commentary = FALSE;
- Regexp__dispose_of(&mr);
-
}
#line 525 "inweb/Chapter 2/The Parser.w"
- else if ((Str__eq_wide_string(command_text, L"e")) && (S->md->using_syntax >= V2_SYNTAX))
+ else if (Str__eq_wide_string(command_text, L"define")) {
+ if (S->md->using_syntax < V2_SYNTAX)
+ Parser__wrong_version(S->md->using_syntax, L, "'@define' for definitions (use '@d' instead)", V2_SYNTAX);
{
-#line 645 "inweb/Chapter 2/The Parser.w"
+#line 635 "inweb/Chapter 2/The Parser.w"
+ L->category = BEGIN_DEFINITION_LCAT;
+ code_lcat_for_body = CONT_DEFINITION_LCAT;
+ code_pl_for_body = NULL;
+ match_results mr = Regexp__create_mr();
+ if (Regexp__match(&mr, remainder, L"(%C+) (%c+)")) {
+ L->text_operand = Str__duplicate(mr.exp[0]); /* name of term defined */
+ L->text_operand2 = Str__duplicate(mr.exp[1]); /* Value */
+ } else {
+ L->text_operand = Str__duplicate(remainder); /* name of term defined */
+ L->text_operand2 = Str__new(); /* no value given */
+ }
+ Analyser__mark_reserved_word_at_line(L, L->text_operand, CONSTANT_COLOUR);
+ comment_mode = FALSE;
+ L->is_commentary = FALSE;
+ Regexp__dispose_of(&mr);
+
+}
+#line 529 "inweb/Chapter 2/The Parser.w"
+;
+ } else if (Str__eq_wide_string(command_text, L"default")) {
+ if (S->md->using_syntax < V2_SYNTAX)
+ Parser__wrong_version(S->md->using_syntax, L, "'@default' for definitions", V2_SYNTAX);
+ L->default_defn = TRUE;
+
+{
+#line 635 "inweb/Chapter 2/The Parser.w"
+ L->category = BEGIN_DEFINITION_LCAT;
+ code_lcat_for_body = CONT_DEFINITION_LCAT;
+ code_pl_for_body = NULL;
+ match_results mr = Regexp__create_mr();
+ if (Regexp__match(&mr, remainder, L"(%C+) (%c+)")) {
+ L->text_operand = Str__duplicate(mr.exp[0]); /* name of term defined */
+ L->text_operand2 = Str__duplicate(mr.exp[1]); /* Value */
+ } else {
+ L->text_operand = Str__duplicate(remainder); /* name of term defined */
+ L->text_operand2 = Str__new(); /* no value given */
+ }
+ Analyser__mark_reserved_word_at_line(L, L->text_operand, CONSTANT_COLOUR);
+ comment_mode = FALSE;
+ L->is_commentary = FALSE;
+ Regexp__dispose_of(&mr);
+
+}
+#line 534 "inweb/Chapter 2/The Parser.w"
+;
+ } else if (Str__eq_wide_string(command_text, L"enum"))
+{
+#line 655 "inweb/Chapter 2/The Parser.w"
L->category = BEGIN_DEFINITION_LCAT;
text_stream *from = NULL;
match_results mr = Regexp__create_mr();
@@ -17307,7 +17325,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
from = mr.exp[1];
Str__copy(L->text_operand, mr.exp[0]);
} else if (Regexp__match(&mr, L->text_operand, L"(%C+) (%c+)")) {
- Main__error_in_web(TL_IS_196, L);
+ Main__error_in_web(TL_IS_197, L);
}
L->text_operand2 = Str__new();
if (inweb_mode == TANGLE_MODE)
@@ -17318,7 +17336,41 @@ void Parser__parse_web(web *W, int inweb_mode) {
Regexp__dispose_of(&mr);
}
-#line 527 "inweb/Chapter 2/The Parser.w"
+#line 535 "inweb/Chapter 2/The Parser.w"
+
+ else if ((Str__eq_wide_string(command_text, L"e")) && (S->md->using_syntax >= V2_SYNTAX))
+
+{
+#line 655 "inweb/Chapter 2/The Parser.w"
+ L->category = BEGIN_DEFINITION_LCAT;
+ text_stream *from = NULL;
+ match_results mr = Regexp__create_mr();
+ L->text_operand = Str__duplicate(remainder); /* name of term defined */
+ TEMPORARY_TEXT(before);
+ TEMPORARY_TEXT(after);
+ if (LanguageMethods__parse_comment(S->sect_language, L->text_operand,
+ before, after)) {
+ Str__copy(L->text_operand, before);
+ }
+ DISCARD_TEXT(before);
+ DISCARD_TEXT(after);
+ Str__trim_white_space(L->text_operand);
+ if (Regexp__match(&mr, L->text_operand, L"(%C+) from (%c+)")) {
+ from = mr.exp[1];
+ Str__copy(L->text_operand, mr.exp[0]);
+ } else if (Regexp__match(&mr, L->text_operand, L"(%C+) (%c+)")) {
+ Main__error_in_web(TL_IS_197, L);
+ }
+ L->text_operand2 = Str__new();
+ if (inweb_mode == TANGLE_MODE)
+ Enumerations__define(L->text_operand2, L->text_operand, from, L);
+ Analyser__mark_reserved_word_at_line(L, L->text_operand, CONSTANT_COLOUR);
+ comment_mode = FALSE;
+ L->is_commentary = FALSE;
+ Regexp__dispose_of(&mr);
+
+}
+#line 537 "inweb/Chapter 2/The Parser.w"
else {
int weight = -1, new_page = FALSE;
@@ -17340,7 +17392,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
}
if (weight >= 0)
{
-#line 697 "inweb/Chapter 2/The Parser.w"
+#line 707 "inweb/Chapter 2/The Parser.w"
comment_mode = TRUE;
L->is_commentary = TRUE;
L->category = PARAGRAPH_START_LCAT;
@@ -17359,7 +17411,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
}
{
-#line 746 "inweb/Chapter 2/The Parser.w"
+#line 756 "inweb/Chapter 2/The Parser.w"
paragraph *P = CREATE(paragraph);
if (S->md->using_syntax > V1_SYNTAX) {
P->above_bar = FALSE;
@@ -17372,9 +17424,9 @@ void Parser__parse_web(web *W, int inweb_mode) {
}
P->heading_text = Str__duplicate(L->text_operand);
if ((S->md->using_syntax == V1_SYNTAX) && (before_bar))
- P->ornament = Str__duplicate(TL_IS_197);
- else
P->ornament = Str__duplicate(TL_IS_198);
+ else
+ P->ornament = Str__duplicate(TL_IS_199);
WRITE_TO(P->paragraph_number, "%d", next_par_number++);
P->parent_paragraph = NULL;
P->next_child_number = 1;
@@ -17394,7 +17446,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
current_paragraph = P;
}
-#line 713 "inweb/Chapter 2/The Parser.w"
+#line 723 "inweb/Chapter 2/The Parser.w"
;
L->owning_paragraph = current_paragraph;
@@ -17402,9 +17454,9 @@ void Parser__parse_web(web *W, int inweb_mode) {
Regexp__dispose_of(&mr);
}
-#line 546 "inweb/Chapter 2/The Parser.w"
+#line 556 "inweb/Chapter 2/The Parser.w"
- else Main__error_in_web(TL_IS_191, L);
+ else Main__error_in_web(TL_IS_192, L);
}
}
@@ -17420,7 +17472,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
;
if (comment_mode)
{
-#line 782 "inweb/Chapter 2/The Parser.w"
+#line 792 "inweb/Chapter 2/The Parser.w"
match_results mr = Regexp__create_mr();
if (Regexp__match(&mr, L->text, L">> (%c+)")) {
L->category = SOURCE_DISPLAY_LCAT;
@@ -17433,7 +17485,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
;
if (comment_mode == FALSE)
{
-#line 794 "inweb/Chapter 2/The Parser.w"
+#line 804 "inweb/Chapter 2/The Parser.w"
if ((L->category != BEGIN_DEFINITION_LCAT) && (L->category != COMMAND_LCAT)) {
L->category = code_lcat_for_body;
L->plainer = code_plainness_for_body;
@@ -17493,7 +17545,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
LOOP_OVER_LINKED_LIST(P, paragraph, S->paragraphs)
{
-#line 842 "inweb/Chapter 2/The Parser.w"
+#line 852 "inweb/Chapter 2/The Parser.w"
int next_footnote_in_para = 1;
footnote *current_text = NULL;
TEMPORARY_TEXT(before);
@@ -17511,7 +17563,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
if (this_is_a_cue == FALSE)
{
-#line 866 "inweb/Chapter 2/The Parser.w"
+#line 876 "inweb/Chapter 2/The Parser.w"
L->category = FOOTNOTE_TEXT_LCAT;
footnote *F = CREATE(footnote);
F->footnote_cue_number = Str__atoi(cue, 0);
@@ -17531,7 +17583,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
current_text = F;
}
-#line 857 "inweb/Chapter 2/The Parser.w"
+#line 867 "inweb/Chapter 2/The Parser.w"
;
}
L->footnote_text = current_text;
@@ -17556,9 +17608,9 @@ void Parser__parse_web(web *W, int inweb_mode) {
LanguageMethods__further_parsing(W, W->main_language);
}
-#line 744 "inweb/Chapter 2/The Parser.w"
+#line 754 "inweb/Chapter 2/The Parser.w"
-#line 815 "inweb/Chapter 2/The Parser.w"
+#line 825 "inweb/Chapter 2/The Parser.w"
text_stream *Parser__extract_purpose(text_stream *prologue, source_line *XL, section *S, source_line **adjust) {
text_stream *P = Str__duplicate(prologue);
while ((XL) && (XL->next_line) && (XL->owning_section == S) &&
@@ -17574,16 +17626,16 @@ text_stream *Parser__extract_purpose(text_stream *prologue, source_line *XL, sec
return P;
}
-#line 840 "inweb/Chapter 2/The Parser.w"
+#line 850 "inweb/Chapter 2/The Parser.w"
-#line 887 "inweb/Chapter 2/The Parser.w"
+#line 897 "inweb/Chapter 2/The Parser.w"
int Parser__detect_footnote(web *W, text_stream *matter, text_stream *before,
text_stream *cue, text_stream *after) {
text_stream *fn_on_notation =
- Bibliographic__get_datum(W->md, TL_IS_199);
- text_stream *fn_off_notation =
Bibliographic__get_datum(W->md, TL_IS_200);
- if (Str__ne(fn_on_notation, TL_IS_201)) {
+ text_stream *fn_off_notation =
+ Bibliographic__get_datum(W->md, TL_IS_201);
+ if (Str__ne(fn_on_notation, TL_IS_202)) {
int N1 = Str__len(fn_on_notation);
int N2 = Str__len(fn_off_notation);
if ((N1 > 0) && (N2 > 0))
@@ -17630,7 +17682,7 @@ footnote *Parser__find_footnote_in_para(paragraph *P, text_stream *cue) {
return NULL;
}
-#line 946 "inweb/Chapter 2/The Parser.w"
+#line 956 "inweb/Chapter 2/The Parser.w"
void Parser__wrong_version(int using, source_line *L, char *feature, int need) {
TEMPORARY_TEXT(warning);
WRITE_TO(warning, "%s is a feature available only in version %d syntax (you're using version %d)",
@@ -17675,10 +17727,10 @@ theme_tag *Tags__find_by_name(text_stream *name, int creating_if_necessary) {
tag->tag_name = Str__duplicate(name);
tag->ifdef_positive = NOT_APPLICABLE;
tag->ifdef_symbol = Str__new();
- if (Str__prefix_eq(name, TL_IS_202, 6)) {
+ if (Str__prefix_eq(name, TL_IS_203, 6)) {
Str__substr(tag->ifdef_symbol, Str__at(name, 6), Str__end(name));
tag->ifdef_positive = TRUE;
- } else if (Str__prefix_eq(name, TL_IS_203, 7)) {
+ } else if (Str__prefix_eq(name, TL_IS_204, 7)) {
Str__substr(tag->ifdef_symbol, Str__at(name, 7), Str__end(name));
tag->ifdef_positive = FALSE;
}
@@ -17773,20 +17825,20 @@ void Tags__show_endnote_on_ifdefs(heterogeneous_tree *tree, tree_node *ap, parag
if (d++ == 0) {
tree_node *E = WeaveTree__endnote(tree);
Trees__make_child(E, ap); ap = E;
- TextWeaver__commentary_text(tree, ap, TL_IS_205);
- } else {
TextWeaver__commentary_text(tree, ap, TL_IS_206);
+ } else {
+ TextWeaver__commentary_text(tree, ap, TL_IS_207);
}
} else {
- TextWeaver__commentary_text(tree, ap, TL_IS_207);
+ TextWeaver__commentary_text(tree, ap, TL_IS_208);
}
TextWeaver__commentary_text(tree, ap, pt->the_tag->ifdef_symbol);
}
if (c > 0) {
- if (c == 1) TextWeaver__commentary_text(tree, ap, TL_IS_208);
- else TextWeaver__commentary_text(tree, ap, TL_IS_209);
- if (sense) TextWeaver__commentary_text(tree, ap, TL_IS_210);
- else TextWeaver__commentary_text(tree, ap, TL_IS_211);
+ if (c == 1) TextWeaver__commentary_text(tree, ap, TL_IS_209);
+ else TextWeaver__commentary_text(tree, ap, TL_IS_210);
+ if (sense) TextWeaver__commentary_text(tree, ap, TL_IS_211);
+ else TextWeaver__commentary_text(tree, ap, TL_IS_212);
}
}
@@ -17805,26 +17857,26 @@ void Tags__show_endnote_on_ifdefs(heterogeneous_tree *tree, tree_node *ap, parag
if (d++ == 0) {
tree_node *E = WeaveTree__endnote(tree);
Trees__make_child(E, ap); ap = E;
- TextWeaver__commentary_text(tree, ap, TL_IS_205);
- } else {
TextWeaver__commentary_text(tree, ap, TL_IS_206);
+ } else {
+ TextWeaver__commentary_text(tree, ap, TL_IS_207);
}
} else {
- TextWeaver__commentary_text(tree, ap, TL_IS_207);
+ TextWeaver__commentary_text(tree, ap, TL_IS_208);
}
TextWeaver__commentary_text(tree, ap, pt->the_tag->ifdef_symbol);
}
if (c > 0) {
- if (c == 1) TextWeaver__commentary_text(tree, ap, TL_IS_208);
- else TextWeaver__commentary_text(tree, ap, TL_IS_209);
- if (sense) TextWeaver__commentary_text(tree, ap, TL_IS_210);
- else TextWeaver__commentary_text(tree, ap, TL_IS_211);
+ if (c == 1) TextWeaver__commentary_text(tree, ap, TL_IS_209);
+ else TextWeaver__commentary_text(tree, ap, TL_IS_210);
+ if (sense) TextWeaver__commentary_text(tree, ap, TL_IS_211);
+ else TextWeaver__commentary_text(tree, ap, TL_IS_212);
}
}
#line 139 "inweb/Chapter 2/Tags.w"
;
- if (d > 0) TextWeaver__commentary_text(tree, ap, TL_IS_204);
+ if (d > 0) TextWeaver__commentary_text(tree, ap, TL_IS_205);
}
#line 22 "inweb/Chapter 2/Enumerated Constants.w"
@@ -17848,7 +17900,7 @@ void Enumerations__define(OUTPUT_STREAM, text_stream *symbol,
match_results mr = Regexp__create_mr();
if (Regexp__match(&mr, symbol, L"%c*_(%C+?)")) Str__copy(pf, mr.exp[0]);
else {
- Main__error_in_web(TL_IS_212, L);
+ Main__error_in_web(TL_IS_213, L);
WRITE_TO(pf, "BOGUS");
}
Regexp__dispose_of(&mr);
@@ -17864,7 +17916,7 @@ void Enumerations__define(OUTPUT_STREAM, text_stream *symbol,
if (es->stub) WRITE("(%S+", es->stub);
WRITE("%d", es->next_free_value++);
if (es->stub) WRITE(")");
- } else Main__error_in_web(TL_IS_213, L);
+ } else Main__error_in_web(TL_IS_214, L);
}
#line 45 "inweb/Chapter 2/Enumerated Constants.w"
@@ -17872,7 +17924,7 @@ void Enumerations__define(OUTPUT_STREAM, text_stream *symbol,
else
{
#line 70 "inweb/Chapter 2/Enumerated Constants.w"
- if (es) Main__error_in_web(TL_IS_214, L);
+ if (es) Main__error_in_web(TL_IS_215, L);
else {
es = CREATE(enumeration_set);
es->postfix = Str__duplicate(pf);
@@ -18162,7 +18214,7 @@ void Analyser__analyse_code(web *W) {
if ((L->category == INTERFACE_BODY_LCAT) &&
(L->interface_line_identified == FALSE) &&
(Regexp__string_is_white_space(L->text) == FALSE))
- Main__error_in_web(TL_IS_215, L);
+ Main__error_in_web(TL_IS_216, L);
}
#line 109 "inweb/Chapter 3/The Analyser.w"
@@ -18395,23 +18447,23 @@ void Analyser__analyse_find(web *W, source_line *L, text_stream *identifier, int
#line 390 "inweb/Chapter 3/The Analyser.w"
void Analyser__write_makefile(web *W, filename *F, module_search *I) {
- filename *prototype = Filenames__in(W->md->path_to_web, TL_IS_216);
+ filename *prototype = Filenames__in(W->md->path_to_web, TL_IS_217);
if (!(TextFiles__exists(prototype)))
- prototype = Filenames__in(path_to_inweb_materials, TL_IS_217);
+ prototype = Filenames__in(path_to_inweb_materials, TL_IS_218);
Makefiles__write(W, prototype, F, I);
}
void Analyser__write_gitignore(web *W, filename *F) {
- filename *prototype = Filenames__in(W->md->path_to_web, TL_IS_218);
+ filename *prototype = Filenames__in(W->md->path_to_web, TL_IS_219);
if (!(TextFiles__exists(prototype)))
- prototype = Filenames__in(path_to_inweb_materials, TL_IS_219);
+ prototype = Filenames__in(path_to_inweb_materials, TL_IS_220);
Git__write_gitignore(W, prototype, F);
}
#line 19 "inweb/Chapter 3/The Collater.w"
void Collater__for_web_and_pattern(text_stream *OUT, web *W,
weave_pattern *pattern, filename *F, filename *into) {
- Collater__collate(OUT, W, TL_IS_220, F, pattern, NULL, NULL, NULL, into);
+ Collater__collate(OUT, W, TL_IS_221, F, pattern, NULL, NULL, NULL, into);
}
void Collater__for_order(text_stream *OUT, weave_order *wv,
@@ -18566,33 +18618,33 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
if (Regexp__match(&mr, command, L"If (%c*)")) {
text_stream *condition = mr.exp[0];
int level = IF_FALSE_LEVEL;
- if (Str__eq(condition, TL_IS_221)) {
+ if (Str__eq(condition, TL_IS_222)) {
if (cls->for_web->md->chaptered) level = IF_TRUE_LEVEL;
- } else if (Str__eq(condition, TL_IS_222)) {
+ } else if (Str__eq(condition, TL_IS_223)) {
if (LinkedLists__len(cls->modules) > 0)
level = IF_TRUE_LEVEL;
- } else if (Str__eq(condition, TL_IS_223)) {
+ } else if (Str__eq(condition, TL_IS_224)) {
module *M = CONTENT_IN_ITEM(
Collater__heading_topmost_on_stack(cls, MODULE_LEVEL), module);
if ((M) && (Colonies__find(M->module_name)))
level = IF_TRUE_LEVEL;
- } else if (Str__eq(condition, TL_IS_224)) {
+ } else if (Str__eq(condition, TL_IS_225)) {
module *M = CONTENT_IN_ITEM(
Collater__heading_topmost_on_stack(cls, MODULE_LEVEL), module);
if (M) {
TEMPORARY_TEXT(url);
TEMPORARY_TEXT(purpose);
WRITE_TO(url, "%p", M->module_location);
- Readme__write_var(purpose, url, TL_IS_225);
+ Readme__write_var(purpose, url, TL_IS_226);
if (Str__len(purpose) > 0) level = IF_TRUE_LEVEL;
DISCARD_TEXT(url);
DISCARD_TEXT(purpose);
}
- } else if (Str__eq(condition, TL_IS_226)) {
+ } else if (Str__eq(condition, TL_IS_227)) {
chapter *C = CONTENT_IN_ITEM(
Collater__heading_topmost_on_stack(cls, CHAPTER_LEVEL), chapter);
if ((C) && (Str__len(C->md->rubric) > 0)) level = IF_TRUE_LEVEL;
- } else if (Str__eq(condition, TL_IS_227)) {
+ } else if (Str__eq(condition, TL_IS_228)) {
section *S = CONTENT_IN_ITEM(
Collater__heading_topmost_on_stack(cls, SECTION_LEVEL), section);
if ((S) && (Str__len(S->sect_purpose) > 0)) level = IF_TRUE_LEVEL;
@@ -18844,7 +18896,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
if (Bibliographic__data_exists(cls->for_web->md, varname)) {
{
-#line 539 "inweb/Chapter 3/The Collater.w"
+#line 541 "inweb/Chapter 3/The Collater.w"
WRITE_TO(substituted, "%S", Bibliographic__get_datum(cls->for_web->md, varname));
}
@@ -18853,7 +18905,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
} else if (Regexp__match(&mr, varname, L"Navigation")) {
{
-#line 545 "inweb/Chapter 3/The Collater.w"
+#line 547 "inweb/Chapter 3/The Collater.w"
if (cls->nav_file) {
if (TextFiles__exists(cls->nav_file))
Collater__collate(substituted, cls->for_web, cls->restrict_to_range,
@@ -18870,7 +18922,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
} else if (Regexp__match(&mr, varname, L"Breadcrumbs")) {
{
-#line 558 "inweb/Chapter 3/The Collater.w"
+#line 560 "inweb/Chapter 3/The Collater.w"
Colonies__drop_initial_breadcrumbs(substituted, cls->into_file,
cls->crumbs);
@@ -18880,7 +18932,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
} else if (Str__eq_wide_string(varname, L"Plugins")) {
{
-#line 562 "inweb/Chapter 3/The Collater.w"
+#line 564 "inweb/Chapter 3/The Collater.w"
Assets__include_relevant_plugins(OUT, cls->nav_pattern, cls->for_web,
cls->wv, cls->into_file);
@@ -18891,7 +18943,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
text_stream *detail = mr.exp[0];
{
-#line 568 "inweb/Chapter 3/The Collater.w"
+#line 570 "inweb/Chapter 3/The Collater.w"
if (swarm_leader)
if (Formats__substitute_post_processing_data(substituted,
swarm_leader, detail, cls->nav_pattern) == FALSE)
@@ -18904,7 +18956,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
text_stream *detail = mr.exp[0];
{
-#line 576 "inweb/Chapter 3/The Collater.w"
+#line 578 "inweb/Chapter 3/The Collater.w"
module *M = CONTENT_IN_ITEM(
Collater__heading_topmost_on_stack(cls, MODULE_LEVEL), module);
if (M == NULL)
@@ -18912,7 +18964,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
cls->errors_at, lpos);
else
{
-#line 584 "inweb/Chapter 3/The Collater.w"
+#line 586 "inweb/Chapter 3/The Collater.w"
if (Str__eq_wide_string(detail, L"Title")) {
text_stream *owner = Collater__module_owner(M, cls->for_web);
if (Str__len(owner) > 0) WRITE_TO(substituted, "%S/", owner);
@@ -18923,14 +18975,14 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
} else if (Str__eq_wide_string(detail, L"Purpose")) {
TEMPORARY_TEXT(url);
WRITE_TO(url, "%p", M->module_location);
- Readme__write_var(substituted, url, TL_IS_228);
+ Readme__write_var(substituted, url, TL_IS_229);
DISCARD_TEXT(url);
} else {
WRITE_TO(substituted, "%S for %S", varname, M->module_name);
}
}
-#line 581 "inweb/Chapter 3/The Collater.w"
+#line 583 "inweb/Chapter 3/The Collater.w"
;
}
@@ -18940,7 +18992,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
text_stream *detail = mr.exp[0];
{
-#line 603 "inweb/Chapter 3/The Collater.w"
+#line 605 "inweb/Chapter 3/The Collater.w"
chapter *C = CONTENT_IN_ITEM(
Collater__heading_topmost_on_stack(cls, CHAPTER_LEVEL), chapter);
if (C == NULL)
@@ -18948,7 +19000,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
cls->errors_at, lpos);
else
{
-#line 611 "inweb/Chapter 3/The Collater.w"
+#line 613 "inweb/Chapter 3/The Collater.w"
if (Str__eq_wide_string(detail, L"Title")) {
Str__copy(substituted, C->md->ch_title);
} else if (Str__eq_wide_string(detail, L"Code")) {
@@ -18963,7 +19015,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
}
}
-#line 608 "inweb/Chapter 3/The Collater.w"
+#line 610 "inweb/Chapter 3/The Collater.w"
;
}
@@ -18973,7 +19025,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
text_stream *detail = mr.exp[0];
{
-#line 627 "inweb/Chapter 3/The Collater.w"
+#line 629 "inweb/Chapter 3/The Collater.w"
section *S = CONTENT_IN_ITEM(
Collater__heading_topmost_on_stack(cls, SECTION_LEVEL), section);
if (S == NULL)
@@ -18981,7 +19033,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
cls->errors_at, lpos);
else
{
-#line 635 "inweb/Chapter 3/The Collater.w"
+#line 637 "inweb/Chapter 3/The Collater.w"
if (Str__eq_wide_string(detail, L"Title")) {
Str__copy(substituted, S->md->sect_title);
} else if (Str__eq_wide_string(detail, L"Purpose")) {
@@ -19008,7 +19060,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
}
}
-#line 632 "inweb/Chapter 3/The Collater.w"
+#line 634 "inweb/Chapter 3/The Collater.w"
;
}
@@ -19017,56 +19069,68 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
} else if (Regexp__match(&mr, varname, L"Docs")) {
{
-#line 664 "inweb/Chapter 3/The Collater.w"
+#line 666 "inweb/Chapter 3/The Collater.w"
Pathnames__relative_URL(substituted,
Filenames__up(cls->into_file),
Pathnames__from_text(Colonies__home()));
}
#line 497 "inweb/Chapter 3/The Collater.w"
+;
+ } else if (Regexp__match(&mr, varname, L"Assets")) {
+
+{
+#line 671 "inweb/Chapter 3/The Collater.w"
+ pathname *P = Colonies__assets_path();
+ if (P == NULL) P = Filenames__up(cls->into_file);
+ Pathnames__relative_URL(substituted,
+ Filenames__up(cls->into_file), P);
+
+}
+#line 499 "inweb/Chapter 3/The Collater.w"
;
} else if (Regexp__match(&mr, varname, L"URL \"(%c+)\"")) {
text_stream *link_text = mr.exp[0];
{
-#line 669 "inweb/Chapter 3/The Collater.w"
+#line 677 "inweb/Chapter 3/The Collater.w"
Pathnames__relative_URL(substituted,
Filenames__up(cls->into_file),
Pathnames__from_text(link_text));
}
-#line 500 "inweb/Chapter 3/The Collater.w"
+#line 502 "inweb/Chapter 3/The Collater.w"
;
} else if (Regexp__match(&mr, varname, L"Link \"(%c+)\"")) {
text_stream *link_text = mr.exp[0];
{
-#line 674 "inweb/Chapter 3/The Collater.w"
+#line 682 "inweb/Chapter 3/The Collater.w"
WRITE_TO(substituted, "into_file);
WRITE_TO(substituted, "\">");
}
-#line 503 "inweb/Chapter 3/The Collater.w"
+#line 505 "inweb/Chapter 3/The Collater.w"
;
} else if (Regexp__match(&mr, varname, L"Menu \"(%c+)\"")) {
text_stream *menu_name = mr.exp[0];
{
-#line 679 "inweb/Chapter 3/The Collater.w"
+#line 687 "inweb/Chapter 3/The Collater.w"
if (cls->inside_navigation_submenu) WRITE_TO(substituted, "");
WRITE_TO(substituted, "%S ", menu_name);
cls->inside_navigation_submenu = TRUE;
}
-#line 506 "inweb/Chapter 3/The Collater.w"
+#line 508 "inweb/Chapter 3/The Collater.w"
;
} else if (Regexp__match(&mr, varname, L"Item \"(%c+)\"")) {
text_stream *item_name = mr.exp[0];
text_stream *icon_text = NULL;
{
-#line 684 "inweb/Chapter 3/The Collater.w"
+#line 692 "inweb/Chapter 3/The Collater.w"
match_results mr = Regexp__create_mr();
if (Regexp__match(&mr, item_name, L"<(%i+.%i+)> *(%c*)")) {
icon_text = Str__duplicate(mr.exp[0]);
@@ -19078,17 +19142,17 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
Regexp__dispose_of(&mr);
}
-#line 510 "inweb/Chapter 3/The Collater.w"
+#line 512 "inweb/Chapter 3/The Collater.w"
;
text_stream *link_text = item_name;
{
-#line 695 "inweb/Chapter 3/The Collater.w"
+#line 703 "inweb/Chapter 3/The Collater.w"
TEMPORARY_TEXT(url);
Colonies__reference_URL(url, link_text, cls->into_file);
{
-#line 707 "inweb/Chapter 3/The Collater.w"
+#line 715 "inweb/Chapter 3/The Collater.w"
if (cls->inside_navigation_submenu == FALSE) WRITE_TO(substituted, "");
cls->inside_navigation_submenu = TRUE;
WRITE_TO(substituted, "");
@@ -19096,7 +19160,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
WRITE_TO(substituted, "");
{
-#line 728 "inweb/Chapter 3/The Collater.w"
+#line 736 "inweb/Chapter 3/The Collater.w"
if (Str__len(icon_text) > 0) {
WRITE_TO(substituted, " ");
- } else if (Str__eq(url, TL_IS_229)) {
+ } else if (Str__eq(url, TL_IS_230)) {
WRITE_TO(substituted, "", url);
WRITE_TO(substituted, "");
{
-#line 728 "inweb/Chapter 3/The Collater.w"
+#line 736 "inweb/Chapter 3/The Collater.w"
if (Str__len(icon_text) > 0) {
WRITE_TO(substituted, " ");
WRITE_TO(substituted, " ");
@@ -19136,7 +19200,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
WRITE_TO(substituted, "", url);
{
-#line 728 "inweb/Chapter 3/The Collater.w"
+#line 736 "inweb/Chapter 3/The Collater.w"
if (Str__len(icon_text) > 0) {
WRITE_TO(substituted, " ");
}
WRITE_TO(substituted, " ");
}
-#line 697 "inweb/Chapter 3/The Collater.w"
+#line 705 "inweb/Chapter 3/The Collater.w"
;
DISCARD_TEXT(url);
}
-#line 512 "inweb/Chapter 3/The Collater.w"
+#line 514 "inweb/Chapter 3/The Collater.w"
;
} else if (Regexp__match(&mr, varname, L"Item \"(%c+)\" -> (%c+)")) {
text_stream *item_name = mr.exp[0];
@@ -19168,7 +19232,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
text_stream *icon_text = NULL;
{
-#line 684 "inweb/Chapter 3/The Collater.w"
+#line 692 "inweb/Chapter 3/The Collater.w"
match_results mr = Regexp__create_mr();
if (Regexp__match(&mr, item_name, L"<(%i+.%i+)> *(%c*)")) {
icon_text = Str__duplicate(mr.exp[0]);
@@ -19180,16 +19244,16 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
Regexp__dispose_of(&mr);
}
-#line 517 "inweb/Chapter 3/The Collater.w"
+#line 519 "inweb/Chapter 3/The Collater.w"
;
{
-#line 701 "inweb/Chapter 3/The Collater.w"
+#line 709 "inweb/Chapter 3/The Collater.w"
TEMPORARY_TEXT(url);
Colonies__link_URL(url, link_text, cls->into_file);
{
-#line 707 "inweb/Chapter 3/The Collater.w"
+#line 715 "inweb/Chapter 3/The Collater.w"
if (cls->inside_navigation_submenu == FALSE) WRITE_TO(substituted, "");
cls->inside_navigation_submenu = TRUE;
WRITE_TO(substituted, "");
@@ -19197,7 +19261,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
WRITE_TO(substituted, "");
{
-#line 728 "inweb/Chapter 3/The Collater.w"
+#line 736 "inweb/Chapter 3/The Collater.w"
if (Str__len(icon_text) > 0) {
WRITE_TO(substituted, " ");
- } else if (Str__eq(url, TL_IS_229)) {
+ } else if (Str__eq(url, TL_IS_230)) {
WRITE_TO(substituted, "", url);
WRITE_TO(substituted, "");
{
-#line 728 "inweb/Chapter 3/The Collater.w"
+#line 736 "inweb/Chapter 3/The Collater.w"
if (Str__len(icon_text) > 0) {
WRITE_TO(substituted, " ");
WRITE_TO(substituted, " ");
@@ -19237,7 +19301,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
WRITE_TO(substituted, "", url);
{
-#line 728 "inweb/Chapter 3/The Collater.w"
+#line 736 "inweb/Chapter 3/The Collater.w"
if (Str__len(icon_text) > 0) {
WRITE_TO(substituted, " ");
}
WRITE_TO(substituted, " ");
}
-#line 703 "inweb/Chapter 3/The Collater.w"
+#line 711 "inweb/Chapter 3/The Collater.w"
;
DISCARD_TEXT(url);
}
-#line 518 "inweb/Chapter 3/The Collater.w"
+#line 520 "inweb/Chapter 3/The Collater.w"
;
} else {
WRITE_TO(substituted, "%S", varname);
@@ -19319,7 +19383,7 @@ void Collater__end_CI_loop(collater_state *cls) {
cls->sp--;
}
-#line 742 "inweb/Chapter 3/The Collater.w"
+#line 750 "inweb/Chapter 3/The Collater.w"
text_stream *Collater__module_owner(const module *M, web *W) {
text_stream *owner =
Pathnames__directory_name(Pathnames__up(M->module_location));
@@ -19330,7 +19394,7 @@ text_stream *Collater__module_owner(const module *M, web *W) {
return NULL;
}
-#line 757 "inweb/Chapter 3/The Collater.w"
+#line 765 "inweb/Chapter 3/The Collater.w"
web *sorting_web = NULL;
void Collater__sort_web(web *W) {
sorting_web = W;
@@ -19351,11 +19415,11 @@ int Collater__cmp_owners(text_stream *O1, text_stream *O2) {
return 0;
}
if (Str__len(O2) == 0) return 1;
- if (Str__eq_insensitive(O1, TL_IS_230)) {
- if (Str__eq_insensitive(O2, TL_IS_231) == FALSE) return 1;
+ if (Str__eq_insensitive(O1, TL_IS_231)) {
+ if (Str__eq_insensitive(O2, TL_IS_232) == FALSE) return 1;
return 0;
}
- if (Str__eq_insensitive(O2, TL_IS_232)) return -1;
+ if (Str__eq_insensitive(O2, TL_IS_233)) return -1;
return Str__cmp_insensitive(O1, O2);
}
@@ -19367,7 +19431,7 @@ int Weaver__weave(weave_order *wv) {
tree_node *H = WeaveTree__head(tree, banner);
DISCARD_TEXT(banner);
tree_node *B = WeaveTree__body(tree);
- tree_node *T = WeaveTree__tail(tree, TL_IS_233);
+ tree_node *T = WeaveTree__tail(tree, TL_IS_234);
Trees__make_child(H, tree->root);
Trees__make_child(B, tree->root);
Trees__make_child(T, tree->root);
@@ -19481,7 +19545,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
continue;
}
if (LLL->category == DEFINITIONS_LCAT) {
- Weaver__weave_subheading(tree, wv, state->ap, TL_IS_234);
+ Weaver__weave_subheading(tree, wv, state->ap, TL_IS_235);
state->next_heading_without_vertical_skip = TRUE;
state->horizontal_rule_just_drawn = FALSE;
continue;
@@ -19521,7 +19585,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
source_line *L = LLL;
if ((L->category != HEADING_START_LCAT) &&
(L->category != PARAGRAPH_START_LCAT))
- Main__error_in_web(TL_IS_235, L); /* should never happen */
+ Main__error_in_web(TL_IS_236, L); /* should never happen */
{
@@ -19614,14 +19678,15 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
if (L->command_code == DOWNLOAD_CMD)
{
#line 311 "inweb/Chapter 3/The Weaver.w"
- Trees__make_child(WeaveTree__download(tree, L->text_operand), state->ap);
+ Trees__make_child(WeaveTree__download(tree, L->text_operand, L->text_operand2),
+ state->ap);
}
#line 284 "inweb/Chapter 3/The Weaver.w"
;
if (L->command_code == EMBED_CMD)
{
-#line 314 "inweb/Chapter 3/The Weaver.w"
+#line 315 "inweb/Chapter 3/The Weaver.w"
int w, h;
text_stream *ID = Weaver__dimensions(L->text_operand2, &w, &h, L);
Trees__make_child(WeaveTree__embed(tree, L->text_operand, ID, w, h), state->ap);
@@ -19631,7 +19696,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
;
if (L->command_code == CAROUSEL_CMD)
{
-#line 319 "inweb/Chapter 3/The Weaver.w"
+#line 320 "inweb/Chapter 3/The Weaver.w"
tree_node *C = WeaveTree__carousel_slide(tree, L->text_operand, L->command_code);
Trees__make_child(C, state->para_node);
state->ap = C;
@@ -19642,7 +19707,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
;
if (L->command_code == CAROUSEL_ABOVE_CMD)
{
-#line 319 "inweb/Chapter 3/The Weaver.w"
+#line 320 "inweb/Chapter 3/The Weaver.w"
tree_node *C = WeaveTree__carousel_slide(tree, L->text_operand, L->command_code);
Trees__make_child(C, state->para_node);
state->ap = C;
@@ -19653,7 +19718,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
;
if (L->command_code == CAROUSEL_BELOW_CMD)
{
-#line 319 "inweb/Chapter 3/The Weaver.w"
+#line 320 "inweb/Chapter 3/The Weaver.w"
tree_node *C = WeaveTree__carousel_slide(tree, L->text_operand, L->command_code);
Trees__make_child(C, state->para_node);
state->ap = C;
@@ -19664,7 +19729,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
;
if (L->command_code == CAROUSEL_UNCAPTIONED_CMD)
{
-#line 319 "inweb/Chapter 3/The Weaver.w"
+#line 320 "inweb/Chapter 3/The Weaver.w"
tree_node *C = WeaveTree__carousel_slide(tree, L->text_operand, L->command_code);
Trees__make_child(C, state->para_node);
state->ap = C;
@@ -19675,7 +19740,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
;
if (L->command_code == CAROUSEL_END_CMD)
{
-#line 325 "inweb/Chapter 3/The Weaver.w"
+#line 326 "inweb/Chapter 3/The Weaver.w"
state->ap = state->para_node;
state->carousel_node = NULL;
@@ -19706,21 +19771,21 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
TEMPORARY_TEXT(matter); Str__copy(matter, L->text);
if (L->is_commentary)
{
-#line 333 "inweb/Chapter 3/The Weaver.w"
+#line 334 "inweb/Chapter 3/The Weaver.w"
{
-#line 345 "inweb/Chapter 3/The Weaver.w"
+#line 346 "inweb/Chapter 3/The Weaver.w"
if (L->category == SOURCE_DISPLAY_LCAT) {
Trees__make_child(WeaveTree__display_line(tree, L->text_operand), state->ap);
continue;
}
}
-#line 333 "inweb/Chapter 3/The Weaver.w"
+#line 334 "inweb/Chapter 3/The Weaver.w"
;
{
-#line 354 "inweb/Chapter 3/The Weaver.w"
+#line 355 "inweb/Chapter 3/The Weaver.w"
if (Regexp__string_is_white_space(matter)) {
if ((L->next_line) && (L->next_line->category == COMMENT_BODY_LCAT)) {
match_results mr = Regexp__create_mr();
@@ -19733,19 +19798,19 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
}
}
-#line 334 "inweb/Chapter 3/The Weaver.w"
+#line 335 "inweb/Chapter 3/The Weaver.w"
;
{
-#line 369 "inweb/Chapter 3/The Weaver.w"
+#line 370 "inweb/Chapter 3/The Weaver.w"
match_results mr = Regexp__create_mr();
if (Regexp__match(&mr, matter, L"%(...%) (%c*)")) { /* continue single */
Weaver__change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL);
- Trees__make_child(WeaveTree__weave_item_node(tree, 1, TL_IS_236), state->ap);
+ Trees__make_child(WeaveTree__weave_item_node(tree, 1, TL_IS_237), state->ap);
Str__copy(matter, mr.exp[0]);
} else if (Regexp__match(&mr, matter, L"%(-...%) (%c*)")) { /* continue double */
Weaver__change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL);
- Trees__make_child(WeaveTree__weave_item_node(tree, 2, TL_IS_237), state->ap);
+ Trees__make_child(WeaveTree__weave_item_node(tree, 2, TL_IS_238), state->ap);
Str__copy(matter, mr.exp[0]);
} else if (Regexp__match(&mr, matter, L"%((%i+)%) (%c*)")) { /* begin single */
Weaver__change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL);
@@ -19759,11 +19824,11 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
Regexp__dispose_of(&mr);
}
-#line 335 "inweb/Chapter 3/The Weaver.w"
+#line 336 "inweb/Chapter 3/The Weaver.w"
;
{
-#line 393 "inweb/Chapter 3/The Weaver.w"
+#line 394 "inweb/Chapter 3/The Weaver.w"
match_results mr = Regexp__create_mr();
if (Regexp__match(&mr, matter, L"\t|(%c*)|(%c*?)")) {
TEMPORARY_TEXT(original);
@@ -19784,22 +19849,22 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
Regexp__dispose_of(&mr);
}
-#line 336 "inweb/Chapter 3/The Weaver.w"
+#line 337 "inweb/Chapter 3/The Weaver.w"
;
{
-#line 413 "inweb/Chapter 3/The Weaver.w"
+#line 414 "inweb/Chapter 3/The Weaver.w"
if (L->category == FOOTNOTE_TEXT_LCAT) {
Weaver__change_material(tree, state, FOOTNOTES_MATERIAL, FALSE, NULL);
footnote *F = L->footnote_text;
tree_node *FN = WeaveTree__footnote(tree, F->cue_text);
Trees__make_child(FN, state->material_node);
- if (F->cued_already == FALSE) Main__error_in_web(TL_IS_238, L);
+ if (F->cued_already == FALSE) Main__error_in_web(TL_IS_239, L);
state->ap = FN;
}
}
-#line 337 "inweb/Chapter 3/The Weaver.w"
+#line 338 "inweb/Chapter 3/The Weaver.w"
;
WRITE_TO(matter, "\n");
Weaver__commentary_text(tree, wv, state->ap, matter);
@@ -19810,10 +19875,10 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
else
{
-#line 428 "inweb/Chapter 3/The Weaver.w"
+#line 429 "inweb/Chapter 3/The Weaver.w"
{
-#line 464 "inweb/Chapter 3/The Weaver.w"
+#line 465 "inweb/Chapter 3/The Weaver.w"
if (state->kind_of_material != CODE_MATERIAL) {
int will_be = CODE_MATERIAL;
if (L->category == MACRO_DEFINITION_LCAT)
@@ -19833,11 +19898,11 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
}
}
-#line 428 "inweb/Chapter 3/The Weaver.w"
+#line 429 "inweb/Chapter 3/The Weaver.w"
;
{
-#line 486 "inweb/Chapter 3/The Weaver.w"
+#line 487 "inweb/Chapter 3/The Weaver.w"
if (state->line_break_pending) {
Trees__make_child(WeaveTree__vskip(tree, FALSE), state->ap);
state->line_break_pending = FALSE;
@@ -19848,7 +19913,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
}
}
-#line 429 "inweb/Chapter 3/The Weaver.w"
+#line 430 "inweb/Chapter 3/The Weaver.w"
;
Str__rectify_indentation(matter, 4);
@@ -19857,7 +19922,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
TEMPORARY_TEXT(concluding_comment);
{
-#line 500 "inweb/Chapter 3/The Weaver.w"
+#line 501 "inweb/Chapter 3/The Weaver.w"
TEMPORARY_TEXT(part_before_comment);
TEMPORARY_TEXT(part_within_comment);
programming_language *pl = S->sect_language;
@@ -19871,27 +19936,27 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
DISCARD_TEXT(part_within_comment);
}
-#line 435 "inweb/Chapter 3/The Weaver.w"
+#line 436 "inweb/Chapter 3/The Weaver.w"
;
{
-#line 515 "inweb/Chapter 3/The Weaver.w"
+#line 516 "inweb/Chapter 3/The Weaver.w"
if (L->category == BEGIN_DEFINITION_LCAT) {
match_results mr = Regexp__create_mr();
if ((Regexp__match(&mr, matter, L"@d (%c*)")) ||
(Regexp__match(&mr, matter, L"@define (%c*)"))) {
- Str__copy(prefatory, TL_IS_239);
+ Str__copy(prefatory, TL_IS_240);
Str__copy(matter, mr.exp[0]);
} else if ((Regexp__match(&mr, matter, L"@e (%c*)")) ||
(Regexp__match(&mr, matter, L"@enum (%c*)"))) {
- Str__copy(prefatory, TL_IS_240);
+ Str__copy(prefatory, TL_IS_241);
Str__copy(matter, mr.exp[0]);
}
Regexp__dispose_of(&mr);
}
}
-#line 436 "inweb/Chapter 3/The Weaver.w"
+#line 437 "inweb/Chapter 3/The Weaver.w"
;
tree_node *CL = WeaveTree__code_line(tree);
@@ -19902,7 +19967,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
{
-#line 530 "inweb/Chapter 3/The Weaver.w"
+#line 531 "inweb/Chapter 3/The Weaver.w"
TEMPORARY_TEXT(OUT);
int taken = LanguageMethods__weave_code_line(OUT, S->sect_language, wv,
W, C, S, L, matter, concluding_comment);
@@ -19914,7 +19979,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
if (taken) goto ClumsyLabel;
}
-#line 444 "inweb/Chapter 3/The Weaver.w"
+#line 445 "inweb/Chapter 3/The Weaver.w"
;
TEMPORARY_TEXT(colouring);
@@ -19922,7 +19987,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
{
-#line 541 "inweb/Chapter 3/The Weaver.w"
+#line 542 "inweb/Chapter 3/The Weaver.w"
match_results mr = Regexp__create_mr();
while (Regexp__match(&mr, matter, L"(%c*?)%@%<(%c*?)%@%>(%c*)")) {
para_macro *pmac = Macros__find_by_name(mr.exp[1], S);
@@ -19954,7 +20019,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
}
-#line 449 "inweb/Chapter 3/The Weaver.w"
+#line 450 "inweb/Chapter 3/The Weaver.w"
;
TextWeaver__source_code(tree, CL, matter, colouring, L->enable_hyperlinks);
if (Str__len(concluding_comment) > 0)
@@ -20022,7 +20087,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
#line 127 "inweb/Chapter 3/The Weaver.w"
-#line 576 "inweb/Chapter 3/The Weaver.w"
+#line 577 "inweb/Chapter 3/The Weaver.w"
void Weaver__show_endnotes_on_previous_paragraph(heterogeneous_tree *tree,
weave_order *wv, tree_node *ap, paragraph *P) {
tree_node *body = ap;
@@ -20030,33 +20095,33 @@ void Weaver__show_endnotes_on_previous_paragraph(heterogeneous_tree *tree,
if (P->defines_macro)
{
-#line 591 "inweb/Chapter 3/The Weaver.w"
+#line 592 "inweb/Chapter 3/The Weaver.w"
tree_node *E = WeaveTree__endnote(tree);
Trees__make_child(E, body); ap = E;
- TextWeaver__commentary_text(tree, ap, TL_IS_241);
+ TextWeaver__commentary_text(tree, ap, TL_IS_242);
int ct = 0;
macro_usage *mu;
LOOP_OVER_LINKED_LIST(mu, macro_usage, P->defines_macro->macro_usages)
ct++;
- if (ct == 1) TextWeaver__commentary_text(tree, ap, TL_IS_242);
+ if (ct == 1) TextWeaver__commentary_text(tree, ap, TL_IS_243);
else {
int k = 0, used_flag = FALSE;
LOOP_OVER_LINKED_LIST(mu, macro_usage, P->defines_macro->macro_usages)
if (P != mu->used_in_paragraph) {
if (used_flag) {
- if (k < ct-1) TextWeaver__commentary_text(tree, ap, TL_IS_243);
- else TextWeaver__commentary_text(tree, ap, TL_IS_244);
+ if (k < ct-1) TextWeaver__commentary_text(tree, ap, TL_IS_244);
+ else TextWeaver__commentary_text(tree, ap, TL_IS_245);
} else {
- TextWeaver__commentary_text(tree, ap, TL_IS_245);
+ TextWeaver__commentary_text(tree, ap, TL_IS_246);
}
Trees__make_child(WeaveTree__locale(tree, mu->used_in_paragraph, NULL), ap);
used_flag = TRUE; k++;
switch (mu->multiplicity) {
case 1: break;
- case 2: TextWeaver__commentary_text(tree, ap, TL_IS_246); break;
- case 3: TextWeaver__commentary_text(tree, ap, TL_IS_247); break;
- case 4: TextWeaver__commentary_text(tree, ap, TL_IS_248); break;
- case 5: TextWeaver__commentary_text(tree, ap, TL_IS_249); break;
+ case 2: TextWeaver__commentary_text(tree, ap, TL_IS_247); break;
+ case 3: TextWeaver__commentary_text(tree, ap, TL_IS_248); break;
+ case 4: TextWeaver__commentary_text(tree, ap, TL_IS_249); break;
+ case 5: TextWeaver__commentary_text(tree, ap, TL_IS_250); break;
default: {
TEMPORARY_TEXT(mt);
WRITE_TO(mt, " (%d times)", mu->multiplicity);
@@ -20067,30 +20132,30 @@ void Weaver__show_endnotes_on_previous_paragraph(heterogeneous_tree *tree,
}
}
}
- TextWeaver__commentary_text(tree, ap, TL_IS_250);
+ TextWeaver__commentary_text(tree, ap, TL_IS_251);
}
-#line 581 "inweb/Chapter 3/The Weaver.w"
+#line 582 "inweb/Chapter 3/The Weaver.w"
;
language_function *fn;
LOOP_OVER_LINKED_LIST(fn, language_function, P->functions)
{
-#line 630 "inweb/Chapter 3/The Weaver.w"
+#line 631 "inweb/Chapter 3/The Weaver.w"
if (fn->usage_described == FALSE)
Weaver__show_function_usage(tree, wv, ap, P, fn, FALSE);
}
-#line 584 "inweb/Chapter 3/The Weaver.w"
+#line 585 "inweb/Chapter 3/The Weaver.w"
;
language_type *st;
LOOP_OVER_LINKED_LIST(st, language_type, P->structures)
{
-#line 634 "inweb/Chapter 3/The Weaver.w"
+#line 635 "inweb/Chapter 3/The Weaver.w"
tree_node *E = WeaveTree__endnote(tree);
Trees__make_child(E, body); ap = E;
- TextWeaver__commentary_text(tree, ap, TL_IS_251);
+ TextWeaver__commentary_text(tree, ap, TL_IS_252);
TextWeaver__commentary_text(tree, ap, st->structure_name);
section *S;
@@ -20114,25 +20179,25 @@ void Weaver__show_endnotes_on_previous_paragraph(heterogeneous_tree *tree,
usage_count++;
if (S != P->under_section) external++;
}
- if (external == 0) TextWeaver__commentary_text(tree, ap, TL_IS_252);
+ if (external == 0) TextWeaver__commentary_text(tree, ap, TL_IS_253);
else {
- TextWeaver__commentary_text(tree, ap, TL_IS_253);
+ TextWeaver__commentary_text(tree, ap, TL_IS_254);
int c = 0;
LOOP_OVER(S, section)
if ((S->scratch_flag) && (S != P->under_section)) {
- if (c++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_254);
+ if (c++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_255);
TextWeaver__commentary_text(tree, ap, S->md->sect_range);
}
- if (P->under_section->scratch_flag) TextWeaver__commentary_text(tree, ap, TL_IS_255);
+ if (P->under_section->scratch_flag) TextWeaver__commentary_text(tree, ap, TL_IS_256);
}
- TextWeaver__commentary_text(tree, ap, TL_IS_256);
+ TextWeaver__commentary_text(tree, ap, TL_IS_257);
}
-#line 587 "inweb/Chapter 3/The Weaver.w"
+#line 588 "inweb/Chapter 3/The Weaver.w"
;
}
-#line 674 "inweb/Chapter 3/The Weaver.w"
+#line 675 "inweb/Chapter 3/The Weaver.w"
void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv,
tree_node *ap, paragraph *P, language_function *fn, int as_list) {
tree_node *body = ap;
@@ -20143,7 +20208,7 @@ void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv,
if (as_list == FALSE) {
tree_node *E = WeaveTree__endnote(tree);
Trees__make_child(E, body); ap = E;
- TextWeaver__commentary_text(tree, ap, TL_IS_257);
+ TextWeaver__commentary_text(tree, ap, TL_IS_258);
TextWeaver__commentary_text(tree, ap, fn->function_name);
}
int used_flag = FALSE;
@@ -20155,9 +20220,9 @@ void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv,
(P->under_section == hteu->usage_recorded_at->under_section))
{
-#line 713 "inweb/Chapter 3/The Weaver.w"
+#line 714 "inweb/Chapter 3/The Weaver.w"
if (as_list == FALSE) {
- if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_262);
+ if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_263);
}
used_flag = TRUE;
section *S = hteu->usage_recorded_at->under_section;
@@ -20165,30 +20230,30 @@ void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv,
count_under = 0;
if (last_cited_in) {
if (as_list == FALSE) {
- if (last_cited_in != P->under_section) TextWeaver__commentary_text(tree, ap, TL_IS_263);
- else TextWeaver__commentary_text(tree, ap, TL_IS_264);
+ if (last_cited_in != P->under_section) TextWeaver__commentary_text(tree, ap, TL_IS_264);
+ else TextWeaver__commentary_text(tree, ap, TL_IS_265);
} else {
Trees__make_child(WeaveTree__linebreak(tree), ap);
}
}
TextWeaver__commentary_text(tree, ap, hteu->usage_recorded_at->under_section->md->sect_title);
- if (as_list == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_265);
- else TextWeaver__commentary_text(tree, ap, TL_IS_266);
+ if (as_list == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_266);
+ else TextWeaver__commentary_text(tree, ap, TL_IS_267);
}
- if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_267);
+ if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_268);
Trees__make_child(WeaveTree__locale(tree, hteu->usage_recorded_at, NULL), ap);
last_cited_in = hteu->usage_recorded_at->under_section;
}
-#line 694 "inweb/Chapter 3/The Weaver.w"
+#line 695 "inweb/Chapter 3/The Weaver.w"
;
LOOP_OVER_LINKED_LIST(hteu, hash_table_entry_usage, hte->usages)
if (P->under_section != hteu->usage_recorded_at->under_section)
{
-#line 713 "inweb/Chapter 3/The Weaver.w"
+#line 714 "inweb/Chapter 3/The Weaver.w"
if (as_list == FALSE) {
- if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_262);
+ if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_263);
}
used_flag = TRUE;
section *S = hteu->usage_recorded_at->under_section;
@@ -20196,38 +20261,38 @@ void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv,
count_under = 0;
if (last_cited_in) {
if (as_list == FALSE) {
- if (last_cited_in != P->under_section) TextWeaver__commentary_text(tree, ap, TL_IS_263);
- else TextWeaver__commentary_text(tree, ap, TL_IS_264);
+ if (last_cited_in != P->under_section) TextWeaver__commentary_text(tree, ap, TL_IS_264);
+ else TextWeaver__commentary_text(tree, ap, TL_IS_265);
} else {
Trees__make_child(WeaveTree__linebreak(tree), ap);
}
}
TextWeaver__commentary_text(tree, ap, hteu->usage_recorded_at->under_section->md->sect_title);
- if (as_list == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_265);
- else TextWeaver__commentary_text(tree, ap, TL_IS_266);
+ if (as_list == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_266);
+ else TextWeaver__commentary_text(tree, ap, TL_IS_267);
}
- if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_267);
+ if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_268);
Trees__make_child(WeaveTree__locale(tree, hteu->usage_recorded_at, NULL), ap);
last_cited_in = hteu->usage_recorded_at->under_section;
}
-#line 697 "inweb/Chapter 3/The Weaver.w"
+#line 698 "inweb/Chapter 3/The Weaver.w"
;
if (used_flag == FALSE) {
if (as_list == FALSE) {
- TextWeaver__commentary_text(tree, ap, TL_IS_258);
- } else {
TextWeaver__commentary_text(tree, ap, TL_IS_259);
+ } else {
+ TextWeaver__commentary_text(tree, ap, TL_IS_260);
}
}
if (as_list == FALSE) {
if ((last_cited_in != P->under_section) && (last_cited_in))
- TextWeaver__commentary_text(tree, ap, TL_IS_260);
- TextWeaver__commentary_text(tree, ap, TL_IS_261);
+ TextWeaver__commentary_text(tree, ap, TL_IS_261);
+ TextWeaver__commentary_text(tree, ap, TL_IS_262);
}
}
-#line 739 "inweb/Chapter 3/The Weaver.w"
+#line 740 "inweb/Chapter 3/The Weaver.w"
void Weaver__weave_subheading(heterogeneous_tree *tree, weave_order *wv,
tree_node *ap, text_stream *text) {
tree_node *D = WeaveTree__subheading(tree, text);
@@ -20265,7 +20330,7 @@ void Weaver__commentary_text(heterogeneous_tree *tree, weave_order *wv,
TextWeaver__commentary_text(tree, ap, matter);
}
-#line 781 "inweb/Chapter 3/The Weaver.w"
+#line 782 "inweb/Chapter 3/The Weaver.w"
text_stream *Weaver__dimensions(text_stream *item, int *w, int *h, source_line *L) {
int sv = L->owning_section->md->using_syntax;
*w = -1; *h = -1;
@@ -20308,7 +20373,7 @@ text_stream *Weaver__dimensions(text_stream *item, int *w, int *h, source_line *
return use;
}
-#line 828 "inweb/Chapter 3/The Weaver.w"
+#line 829 "inweb/Chapter 3/The Weaver.w"
int Weaver__weave_table_of_contents(heterogeneous_tree *tree,
tree_node *ap, section *S) {
int noteworthy = 0;
@@ -20347,8 +20412,8 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
weave_order *wv = C->wv;
text_stream *code_in_comments_notation =
Bibliographic__get_datum(wv->weave_web->md,
- (in_code)?(TL_IS_268):(TL_IS_269));
- if (Str__ne(code_in_comments_notation, TL_IS_270))
+ (in_code)?(TL_IS_269):(TL_IS_270));
+ if (Str__ne(code_in_comments_notation, TL_IS_271))
{
#line 51 "inweb/Chapter 3/The Weaver of Text.w"
for (int i=0; i < Str__len(matter); i++) {
@@ -20373,8 +20438,8 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
int display_flag = TRUE;
text_stream *tex_notation = Bibliographic__get_datum(wv->weave_web->md,
- TL_IS_271);
- if (Str__ne(tex_notation, TL_IS_272))
+ TL_IS_272);
+ if (Str__ne(tex_notation, TL_IS_273))
{
#line 99 "inweb/Chapter 3/The Weaver of Text.w"
int N = Str__len(tex_notation);
@@ -20409,8 +20474,8 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
;
display_flag = FALSE;
tex_notation = Bibliographic__get_datum(wv->weave_web->md,
- TL_IS_273);
- if (Str__ne(tex_notation, TL_IS_274))
+ TL_IS_274);
+ if (Str__ne(tex_notation, TL_IS_275))
{
#line 99 "inweb/Chapter 3/The Weaver of Text.w"
int N = Str__len(tex_notation);
@@ -20445,8 +20510,8 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
;
text_stream *xref_notation = Bibliographic__get_datum(wv->weave_web->md,
- TL_IS_275);
- if (Str__ne(xref_notation, TL_IS_276))
+ TL_IS_276);
+ if (Str__ne(xref_notation, TL_IS_277))
{
#line 150 "inweb/Chapter 3/The Weaver of Text.w"
int N = Str__len(xref_notation);
@@ -20506,8 +20571,8 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
{
#line 68 "inweb/Chapter 3/The Weaver of Text.w"
for (int i=0; i < Str__len(matter); i++) {
- if ((Str__includes_at(matter, i, TL_IS_277)) ||
- (Str__includes_at(matter, i, TL_IS_278))) {
+ if ((Str__includes_at(matter, i, TL_IS_278)) ||
+ (Str__includes_at(matter, i, TL_IS_279))) {
TEMPORARY_TEXT(before);
Str__copy(before, matter); Str__truncate(before, i);
TEMPORARY_TEXT(after);
@@ -20555,7 +20620,7 @@ void TextWeaver__commentary_r(heterogeneous_tree *tree, tree_node *ap, text_stre
Trees__make_child(WeaveTree__footnote_cue(tree, F->cue_text), ap);
TextWeaver__commentary_r(tree, ap, after, within, in_code);
} else {
- Main__error_in_web(TL_IS_279, wv->current_weave_line);
+ Main__error_in_web(TL_IS_280, wv->current_weave_line);
}
}
DISCARD_TEXT(before);
@@ -20609,8 +20674,8 @@ void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap,
{
#line 261 "inweb/Chapter 3/The Weaver of Text.w"
- if ((Str__includes_at(matter, i, TL_IS_282)) ||
- (Str__includes_at(matter, i, TL_IS_283))) {
+ if ((Str__includes_at(matter, i, TL_IS_283)) ||
+ (Str__includes_at(matter, i, TL_IS_284))) {
TEMPORARY_TEXT(after);
Str__substr(after, Str__at(matter, i), Str__end(matter));
match_results mr = Regexp__create_mr();
@@ -20628,8 +20693,8 @@ void TextWeaver__source_code(heterogeneous_tree *tree, tree_node *ap,
#line 237 "inweb/Chapter 3/The Weaver of Text.w"
;
text_stream *xref_notation = Bibliographic__get_datum(wv->weave_web->md,
- TL_IS_280);
- if (Str__ne(xref_notation, TL_IS_281))
+ TL_IS_281);
+ if (Str__ne(xref_notation, TL_IS_282))
{
#line 277 "inweb/Chapter 3/The Weaver of Text.w"
@@ -20766,7 +20831,7 @@ void Tangler__tangle(web *W, tangle_target *target, filename *dest_file) {
{
#line 87 "inweb/Chapter 3/The Tangler.w"
- if (L->owning_paragraph == NULL) Main__error_in_web(TL_IS_284, L);
+ if (L->owning_paragraph == NULL) Main__error_in_web(TL_IS_285, L);
else Tags__open_ifdefs(OUT, L->owning_paragraph);
LanguageMethods__start_definition(OUT, lang,
L->text_operand,
@@ -20788,7 +20853,7 @@ void Tangler__tangle(web *W, tangle_target *target, filename *dest_file) {
{
#line 87 "inweb/Chapter 3/The Tangler.w"
- if (L->owning_paragraph == NULL) Main__error_in_web(TL_IS_284, L);
+ if (L->owning_paragraph == NULL) Main__error_in_web(TL_IS_285, L);
else Tags__open_ifdefs(OUT, L->owning_paragraph);
LanguageMethods__start_definition(OUT, lang,
L->text_operand,
@@ -20909,7 +20974,7 @@ void Tangler__tangle_line(OUTPUT_STREAM, text_stream *original, section *S, sour
LanguageMethods__after_macro_expansion(OUT, lang, pmac);
LanguageMethods__insert_line_marker(OUT, lang, L);
} else {
- Main__error_in_web(TL_IS_285, L);
+ Main__error_in_web(TL_IS_286, L);
WRITE_TO(STDERR, "Macro is '%S'\n", temp);
LanguageMethods__comment(OUT, lang, temp); /* recover by putting macro name in comment */
}
@@ -20978,7 +21043,7 @@ programming_language *Languages__find_by_name(text_stream *lname, web *W) {
#line 26 "inweb/Chapter 4/Programming Languages.w"
filename *F = NULL;
if (W) {
- pathname *P = Pathnames__down(W->md->path_to_web, TL_IS_286);
+ pathname *P = Pathnames__down(W->md->path_to_web, TL_IS_287);
{
#line 39 "inweb/Chapter 4/Programming Languages.w"
@@ -21025,7 +21090,7 @@ programming_language *Languages__find_by_name(text_stream *lname, web *W) {
#line 50 "inweb/Chapter 4/Programming Languages.w"
programming_language *Languages__default(web *W) {
- return Languages__find_by_name(TL_IS_287, W);
+ return Languages__find_by_name(TL_IS_288, W);
}
void Languages__show(OUTPUT_STREAM) {
@@ -21067,7 +21132,7 @@ void Languages__read_definitions(pathname *P) {
}
pathname *Languages__default_directory(void) {
- return Pathnames__down(path_to_inweb, TL_IS_288);
+ return Pathnames__down(path_to_inweb, TL_IS_289);
}
#line 144 "inweb/Chapter 4/Programming Languages.w"
@@ -21127,7 +21192,7 @@ programming_language *Languages__read_definition(filename *F) {
{
#line 215 "inweb/Chapter 4/Programming Languages.w"
if (pl->C_like) CLike__make_c_like(pl);
- if (Str__eq(pl->language_name, TL_IS_289)) InCSupport__add_features(pl);
+ if (Str__eq(pl->language_name, TL_IS_290)) InCSupport__add_features(pl);
ACMESupport__add_fallbacks(pl);
}
@@ -21149,7 +21214,7 @@ void Languages__read_definition_line(text_stream *line, text_file_position *tfp,
if (state->current_block)
{
#line 323 "inweb/Chapter 4/Programming Languages.w"
- if (Str__eq(line, TL_IS_321)) {
+ if (Str__eq(line, TL_IS_322)) {
state->current_block = state->current_block->parent;
} else if (Regexp__match(&mr, line, L"characters {")) {
colouring_rule *rule = Languages__new_rule(state->current_block);
@@ -21165,7 +21230,7 @@ void Languages__read_definition_line(text_stream *line, text_file_position *tfp,
} else if (Regexp__match(&mr, line, L"runs of (%c+) {")) {
colouring_rule *rule = Languages__new_rule(state->current_block);
int r = UNQUOTED_COLOUR;
- if (Str__ne(mr.exp[0], TL_IS_322)) r = Languages__colour(mr.exp[0], tfp);
+ if (Str__ne(mr.exp[0], TL_IS_323)) r = Languages__colour(mr.exp[0], tfp);
rule->execute_block = Languages__new_block(state->current_block, r);
state->current_block = rule->execute_block;
} else if (Regexp__match(&mr, line, L"instances of (%c+) {")) {
@@ -21220,66 +21285,66 @@ void Languages__read_definition_line(text_stream *line, text_file_position *tfp,
Languages__reserved(pl, Languages__text(mr.exp[0], tfp, FALSE), RESERVED_COLOUR, tfp);
} else if (Regexp__match(&mr, line, L"(%c+) *: *(%c+?)")) {
text_stream *key = mr.exp[0], *value = Str__duplicate(mr.exp[1]);
- if (Str__eq(key, TL_IS_290)) pl->language_name = Languages__text(value, tfp, TRUE);
- else if (Str__eq(key, TL_IS_291))
- pl->language_details = Languages__text(value, tfp, TRUE);
+ if (Str__eq(key, TL_IS_291)) pl->language_name = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_292))
- pl->file_extension = Languages__text(value, tfp, TRUE);
+ pl->language_details = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_293))
- pl->line_comment = Languages__text(value, tfp, TRUE);
+ pl->file_extension = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_294))
- pl->whole_line_comment = Languages__text(value, tfp, TRUE);
+ pl->line_comment = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_295))
- pl->multiline_comment_open = Languages__text(value, tfp, TRUE);
+ pl->whole_line_comment = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_296))
- pl->multiline_comment_close = Languages__text(value, tfp, TRUE);
+ pl->multiline_comment_open = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_297))
- pl->string_literal = Languages__text(value, tfp, TRUE);
+ pl->multiline_comment_close = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_298))
- pl->string_literal_escape = Languages__text(value, tfp, TRUE);
+ pl->string_literal = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_299))
- pl->character_literal = Languages__text(value, tfp, TRUE);
+ pl->string_literal_escape = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_300))
- pl->character_literal_escape = Languages__text(value, tfp, TRUE);
+ pl->character_literal = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_301))
- pl->binary_literal_prefix = Languages__text(value, tfp, TRUE);
+ pl->character_literal_escape = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_302))
- pl->octal_literal_prefix = Languages__text(value, tfp, TRUE);
+ pl->binary_literal_prefix = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_303))
- pl->hexadecimal_literal_prefix = Languages__text(value, tfp, TRUE);
+ pl->octal_literal_prefix = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_304))
- pl->negative_literal_prefix = Languages__text(value, tfp, TRUE);
+ pl->hexadecimal_literal_prefix = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_305))
- pl->shebang = Languages__text(value, tfp, TRUE);
+ pl->negative_literal_prefix = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_306))
- pl->line_marker = Languages__text(value, tfp, TRUE);
+ pl->shebang = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_307))
- pl->before_macro_expansion = Languages__text(value, tfp, TRUE);
+ pl->line_marker = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_308))
- pl->after_macro_expansion = Languages__text(value, tfp, TRUE);
+ pl->before_macro_expansion = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_309))
- pl->start_definition = Languages__text(value, tfp, TRUE);
+ pl->after_macro_expansion = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_310))
- pl->prolong_definition = Languages__text(value, tfp, TRUE);
+ pl->start_definition = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_311))
- pl->end_definition = Languages__text(value, tfp, TRUE);
+ pl->prolong_definition = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_312))
- pl->start_ifdef = Languages__text(value, tfp, TRUE);
+ pl->end_definition = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_313))
- pl->start_ifndef = Languages__text(value, tfp, TRUE);
+ pl->start_ifdef = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_314))
- pl->end_ifdef = Languages__text(value, tfp, TRUE);
+ pl->start_ifndef = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_315))
- pl->end_ifndef = Languages__text(value, tfp, TRUE);
+ pl->end_ifdef = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_316))
- pl->C_like = Languages__boolean(value, tfp);
+ pl->end_ifndef = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_317))
- pl->suppress_disclaimer = Languages__boolean(value, tfp);
+ pl->C_like = Languages__boolean(value, tfp);
else if (Str__eq(key, TL_IS_318))
- pl->supports_namespaces = Languages__boolean(value, tfp);
+ pl->suppress_disclaimer = Languages__boolean(value, tfp);
else if (Str__eq(key, TL_IS_319))
- Languages__regexp(pl->function_notation, value, tfp);
+ pl->supports_namespaces = Languages__boolean(value, tfp);
else if (Str__eq(key, TL_IS_320))
+ Languages__regexp(pl->function_notation, value, tfp);
+ else if (Str__eq(key, TL_IS_321))
Languages__regexp(pl->type_notation, value, tfp);
else {
Errors__in_text_file("unknown property name before ':'", tfp);
@@ -21389,7 +21454,7 @@ void Languages__parse_rule(language_reader_state *state, text_stream *premiss,
{
#line 533 "inweb/Chapter 4/Programming Languages.w"
- if (Str__eq(action, TL_IS_323)) {
+ if (Str__eq(action, TL_IS_324)) {
rule->execute_block =
Languages__new_block(state->current_block, WHOLE_LINE_CRULE_RUN);
state->current_block = rule->execute_block;
@@ -21402,7 +21467,7 @@ void Languages__parse_rule(language_reader_state *state, text_stream *premiss,
rule->set_prefix_to_colour = rule->set_to_colour;
} else if (Str__get_first_char(action) == '!') {
rule->set_to_colour = Languages__colour(action, tfp);
- } else if (Str__eq(action, TL_IS_324)) {
+ } else if (Str__eq(action, TL_IS_325)) {
rule->debug = TRUE;
} else {
Errors__in_text_file("action after '=>' illegible", tfp);
@@ -21437,17 +21502,17 @@ int Languages__colour(text_stream *T, text_file_position *tfp) {
Errors__in_text_file("colour names must begin with !", tfp);
return PLAIN_COLOUR;
}
- if (Str__eq(T, TL_IS_325)) return STRING_COLOUR;
- else if (Str__eq(T, TL_IS_326)) return FUNCTION_COLOUR;
- else if (Str__eq(T, TL_IS_327)) return DEFINITION_COLOUR;
- else if (Str__eq(T, TL_IS_328)) return RESERVED_COLOUR;
- else if (Str__eq(T, TL_IS_329)) return ELEMENT_COLOUR;
- else if (Str__eq(T, TL_IS_330)) return IDENTIFIER_COLOUR;
- else if (Str__eq(T, TL_IS_331)) return CHARACTER_COLOUR;
- else if (Str__eq(T, TL_IS_332)) return CONSTANT_COLOUR;
- else if (Str__eq(T, TL_IS_333)) return PLAIN_COLOUR;
- else if (Str__eq(T, TL_IS_334)) return EXTRACT_COLOUR;
- else if (Str__eq(T, TL_IS_335)) return COMMENT_COLOUR;
+ if (Str__eq(T, TL_IS_326)) return STRING_COLOUR;
+ else if (Str__eq(T, TL_IS_327)) return FUNCTION_COLOUR;
+ else if (Str__eq(T, TL_IS_328)) return DEFINITION_COLOUR;
+ else if (Str__eq(T, TL_IS_329)) return RESERVED_COLOUR;
+ else if (Str__eq(T, TL_IS_330)) return ELEMENT_COLOUR;
+ else if (Str__eq(T, TL_IS_331)) return IDENTIFIER_COLOUR;
+ else if (Str__eq(T, TL_IS_332)) return CHARACTER_COLOUR;
+ else if (Str__eq(T, TL_IS_333)) return CONSTANT_COLOUR;
+ else if (Str__eq(T, TL_IS_334)) return PLAIN_COLOUR;
+ else if (Str__eq(T, TL_IS_335)) return EXTRACT_COLOUR;
+ else if (Str__eq(T, TL_IS_336)) return COMMENT_COLOUR;
else {
Errors__in_text_file("no such !colour", tfp);
return PLAIN_COLOUR;
@@ -21456,8 +21521,8 @@ int Languages__colour(text_stream *T, text_file_position *tfp) {
#line 624 "inweb/Chapter 4/Programming Languages.w"
int Languages__boolean(text_stream *T, text_file_position *tfp) {
- if (Str__eq(T, TL_IS_336)) return TRUE;
- else if (Str__eq(T, TL_IS_337)) return FALSE;
+ if (Str__eq(T, TL_IS_337)) return TRUE;
+ else if (Str__eq(T, TL_IS_338)) return FALSE;
else {
Errors__in_text_file("must be true or false", tfp);
return FALSE;
@@ -21515,7 +21580,6 @@ text_stream *Languages__text(text_stream *T, text_file_position *tfp, int allow)
}
if (bareword) {
int rw = FALSE;
- if (Str__eq(V, TL_IS_338)) rw = TRUE;
if (Str__eq(V, TL_IS_339)) rw = TRUE;
if (Str__eq(V, TL_IS_340)) rw = TRUE;
if (Str__eq(V, TL_IS_341)) rw = TRUE;
@@ -21537,6 +21601,7 @@ text_stream *Languages__text(text_stream *T, text_file_position *tfp, int allow)
if (Str__eq(V, TL_IS_357)) rw = TRUE;
if (Str__eq(V, TL_IS_358)) rw = TRUE;
if (Str__eq(V, TL_IS_359)) rw = TRUE;
+ if (Str__eq(V, TL_IS_360)) rw = TRUE;
if (rw) {
TEMPORARY_TEXT(err);
@@ -21635,7 +21700,7 @@ language_type *Functions__new_struct(web *W, text_stream *name, source_line *L)
{
#line 40 "inweb/Chapter 4/Types and Functions.w"
- Tags__add_by_name(L->owning_paragraph, TL_IS_360);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_361);
ADD_TO_LINKED_LIST(str, language_type, W->language_types);
ADD_TO_LINKED_LIST(str, language_type, L->owning_paragraph->structures);
@@ -21748,7 +21813,7 @@ language_function *Functions__new_function(text_stream *fname, source_line *L) {
fn->within_namespace = TRUE;
} else if ((Str__eq_wide_string(fname, L"main")) &&
(Str__eq_wide_string(ambient_namespace, L"Main::")))
- declared_namespace = TL_IS_361;
+ declared_namespace = TL_IS_362;
if ((Str__ne(declared_namespace, ambient_namespace)) &&
(L->owning_paragraph->placed_very_early == FALSE)) {
TEMPORARY_TEXT(err_mess);
@@ -21861,7 +21926,7 @@ void LanguageMethods__disclaimer(text_stream *OUT, programming_language *pl, web
int rv = FALSE;
IMETHOD_CALLV(rv, pl, SUPPRESS_DISCLAIMER_TAN_MTID);
if (rv == FALSE)
- LanguageMethods__comment(OUT, pl, TL_IS_362);
+ LanguageMethods__comment(OUT, pl, TL_IS_363);
}
#line 127 "inweb/Chapter 4/Language Methods.w"
@@ -21884,7 +21949,7 @@ void LanguageMethods__start_definition(OUTPUT_STREAM, programming_language *pl,
int rv = FALSE;
IMETHOD_CALL(rv, pl, START_DEFN_TAN_MTID, OUT, term, start, S, L);
if (rv == FALSE)
- Main__error_in_web(TL_IS_363, L);
+ Main__error_in_web(TL_IS_364, L);
}
void LanguageMethods__prolong_definition(OUTPUT_STREAM, programming_language *pl,
@@ -21892,7 +21957,7 @@ void LanguageMethods__prolong_definition(OUTPUT_STREAM, programming_language *pl
int rv = FALSE;
IMETHOD_CALL(rv, pl, PROLONG_DEFN_TAN_MTID, OUT, more, S, L);
if (rv == FALSE)
- Main__error_in_web(TL_IS_364, L);
+ Main__error_in_web(TL_IS_365, L);
}
void LanguageMethods__end_definition(OUTPUT_STREAM, programming_language *pl,
@@ -22344,7 +22409,7 @@ void ACMESupport__parse_functions(programming_language *self, web *W) {
#line 267 "inweb/Chapter 4/ACME Support.w"
void ACMESupport__post_analysis(programming_language *self, web *W) {
int check_namespaces = FALSE;
- if (Str__eq_wide_string(Bibliographic__get_datum(W->md, TL_IS_365), L"On"))
+ if (Str__eq_wide_string(Bibliographic__get_datum(W->md, TL_IS_366), L"On"))
check_namespaces = TRUE;
language_function *fn;
LOOP_OVER(fn, language_function) {
@@ -22364,11 +22429,11 @@ void ACMESupport__post_analysis(programming_language *self, web *W) {
&& (fn->call_freely == FALSE)) {
if (fn->within_namespace)
Main__error_in_web(
- TL_IS_366,
+ TL_IS_367,
fn->function_header_at);
else
Main__error_in_web(
- TL_IS_367,
+ TL_IS_368,
fn->function_header_at);
}
}
@@ -22841,7 +22906,7 @@ void CLike__parse_types(programming_language *self, web *W) {
if (Regexp__match(&mr, L->text, L"typedef struct (%i+) %c*{%c*")) {
current_str = Functions__new_struct(W, mr.exp[0], L);
- Tags__add_by_name(L->owning_paragraph, TL_IS_368);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_369);
} else if ((Str__get_first_char(L->text) == '}') && (current_str)) {
current_str->typedef_ends = L;
current_str = NULL;
@@ -22976,14 +23041,14 @@ void CLike__parse_functions(programming_language *self, web *W) {
if ((Regexp__match(&mr, L->text, L" *#ifn*def %c+")) ||
(Regexp__match(&mr, L->text, L" *#IFN*DEF %c+"))) {
if (cc_sp >= MAX_CONDITIONAL_COMPILATION_STACK)
- Main__error_in_web(TL_IS_370, L);
+ Main__error_in_web(TL_IS_371, L);
else
cc_stack[cc_sp++] = L;
}
if ((Regexp__match(&mr, L->text, L" *#endif *")) ||
(Regexp__match(&mr, L->text, L" *#ENDIF *"))) {
if (cc_sp <= 0)
- Main__error_in_web(TL_IS_371, L);
+ Main__error_in_web(TL_IS_372, L);
else
cc_sp--;
}
@@ -23077,7 +23142,7 @@ void CLike__parse_functions(programming_language *self, web *W) {
;
}
if (cc_sp > 0)
- Main__error_in_web(TL_IS_369, NULL);
+ Main__error_in_web(TL_IS_370, NULL);
}
#line 314 "inweb/Chapter 4/C-Like Languages.w"
@@ -23758,8 +23823,8 @@ preform_nonterminal *InCSupport__nonterminal_by_name(text_stream *name) {
#line 764 "inweb/Chapter 4/InC Support.w"
text_stream *InCSupport__nonterminal_variable_identifier(text_stream *name) {
- if (Str__eq_wide_string(name, L"r")) return TL_IS_376;
- if (Str__eq_wide_string(name, L"rp")) return TL_IS_377;
+ if (Str__eq_wide_string(name, L"r")) return TL_IS_377;
+ if (Str__eq_wide_string(name, L"rp")) return TL_IS_378;
nonterminal_variable *ntv;
LOOP_OVER(ntv, nonterminal_variable)
if (Str__eq(ntv->ntv_name, name))
@@ -23771,7 +23836,7 @@ text_stream *InCSupport__nonterminal_variable_identifier(text_stream *name) {
void InCSupport__additional_tangling(programming_language *self, web *W, tangle_target *target) {
if (NUMBER_CREATED(preform_nonterminal) > 0) {
pathname *P = Reader__tangled_folder(W);
- filename *Syntax = Filenames__in(P, TL_IS_378);
+ filename *Syntax = Filenames__in(P, TL_IS_379);
text_stream TO_struct;
text_stream *OUT = &TO_struct;
@@ -23782,8 +23847,8 @@ void InCSupport__additional_tangling(programming_language *self, web *W, tangle_
WRITE("[Preform syntax generated by inweb: do not edit.]\n\n");
- if (Bibliographic__data_exists(W->md, TL_IS_379))
- WRITE("language %S\n", Bibliographic__get_datum(W->md, TL_IS_380));
+ if (Bibliographic__data_exists(W->md, TL_IS_380))
+ WRITE("language %S\n", Bibliographic__get_datum(W->md, TL_IS_381));
{
@@ -23980,61 +24045,61 @@ int InCSupport__share_element(programming_language *self, text_stream *elname) {
#line 96 "inweb/Chapter 5/Weave Tree.w"
-#line 101 "inweb/Chapter 5/Weave Tree.w"
+#line 102 "inweb/Chapter 5/Weave Tree.w"
-#line 108 "inweb/Chapter 5/Weave Tree.w"
+#line 109 "inweb/Chapter 5/Weave Tree.w"
-#line 116 "inweb/Chapter 5/Weave Tree.w"
+#line 117 "inweb/Chapter 5/Weave Tree.w"
-#line 122 "inweb/Chapter 5/Weave Tree.w"
+#line 123 "inweb/Chapter 5/Weave Tree.w"
-#line 127 "inweb/Chapter 5/Weave Tree.w"
+#line 128 "inweb/Chapter 5/Weave Tree.w"
-#line 132 "inweb/Chapter 5/Weave Tree.w"
+#line 133 "inweb/Chapter 5/Weave Tree.w"
-#line 137 "inweb/Chapter 5/Weave Tree.w"
+#line 138 "inweb/Chapter 5/Weave Tree.w"
-#line 141 "inweb/Chapter 5/Weave Tree.w"
+#line 142 "inweb/Chapter 5/Weave Tree.w"
-#line 147 "inweb/Chapter 5/Weave Tree.w"
+#line 148 "inweb/Chapter 5/Weave Tree.w"
-#line 153 "inweb/Chapter 5/Weave Tree.w"
+#line 154 "inweb/Chapter 5/Weave Tree.w"
-#line 159 "inweb/Chapter 5/Weave Tree.w"
+#line 160 "inweb/Chapter 5/Weave Tree.w"
-#line 164 "inweb/Chapter 5/Weave Tree.w"
+#line 165 "inweb/Chapter 5/Weave Tree.w"
-#line 171 "inweb/Chapter 5/Weave Tree.w"
+#line 172 "inweb/Chapter 5/Weave Tree.w"
-#line 175 "inweb/Chapter 5/Weave Tree.w"
+#line 176 "inweb/Chapter 5/Weave Tree.w"
-#line 180 "inweb/Chapter 5/Weave Tree.w"
+#line 181 "inweb/Chapter 5/Weave Tree.w"
-#line 184 "inweb/Chapter 5/Weave Tree.w"
+#line 185 "inweb/Chapter 5/Weave Tree.w"
-#line 190 "inweb/Chapter 5/Weave Tree.w"
+#line 191 "inweb/Chapter 5/Weave Tree.w"
-#line 196 "inweb/Chapter 5/Weave Tree.w"
+#line 197 "inweb/Chapter 5/Weave Tree.w"
-#line 203 "inweb/Chapter 5/Weave Tree.w"
+#line 204 "inweb/Chapter 5/Weave Tree.w"
-#line 208 "inweb/Chapter 5/Weave Tree.w"
+#line 209 "inweb/Chapter 5/Weave Tree.w"
-#line 213 "inweb/Chapter 5/Weave Tree.w"
+#line 214 "inweb/Chapter 5/Weave Tree.w"
-#line 218 "inweb/Chapter 5/Weave Tree.w"
+#line 219 "inweb/Chapter 5/Weave Tree.w"
-#line 223 "inweb/Chapter 5/Weave Tree.w"
+#line 224 "inweb/Chapter 5/Weave Tree.w"
-#line 229 "inweb/Chapter 5/Weave Tree.w"
+#line 230 "inweb/Chapter 5/Weave Tree.w"
-#line 233 "inweb/Chapter 5/Weave Tree.w"
+#line 234 "inweb/Chapter 5/Weave Tree.w"
-#line 239 "inweb/Chapter 5/Weave Tree.w"
+#line 240 "inweb/Chapter 5/Weave Tree.w"
-#line 244 "inweb/Chapter 5/Weave Tree.w"
+#line 245 "inweb/Chapter 5/Weave Tree.w"
-#line 246 "inweb/Chapter 5/Weave Tree.w"
+#line 247 "inweb/Chapter 5/Weave Tree.w"
tree_type *weave_tree_type = NULL;
tree_node_type *weave_document_node_type = NULL;
tree_node_type *weave_head_node_type = NULL;
@@ -24084,99 +24149,99 @@ tree_node_type *weave_maths_node_type = NULL;
heterogeneous_tree *WeaveTree__new_tree(weave_order *wv) {
if (weave_tree_type == NULL) {
- weave_tree_type = Trees__new_type(TL_IS_381, NULL);
+ weave_tree_type = Trees__new_type(TL_IS_382, NULL);
weave_document_node_type =
- Trees__new_node_type(TL_IS_382, weave_document_node_MT, NULL);
+ Trees__new_node_type(TL_IS_383, weave_document_node_MT, NULL);
weave_head_node_type =
- Trees__new_node_type(TL_IS_383, weave_head_node_MT, NULL);
+ Trees__new_node_type(TL_IS_384, weave_head_node_MT, NULL);
weave_body_node_type =
- Trees__new_node_type(TL_IS_384, weave_body_node_MT, NULL);
+ Trees__new_node_type(TL_IS_385, weave_body_node_MT, NULL);
weave_tail_node_type =
- Trees__new_node_type(TL_IS_385, weave_tail_node_MT, NULL);
+ Trees__new_node_type(TL_IS_386, weave_tail_node_MT, NULL);
weave_chapter_footer_node_type =
- Trees__new_node_type(TL_IS_386, weave_chapter_footer_node_MT, NULL);
+ Trees__new_node_type(TL_IS_387, weave_chapter_footer_node_MT, NULL);
weave_chapter_header_node_type =
- Trees__new_node_type(TL_IS_387, weave_chapter_header_node_MT, NULL);
+ Trees__new_node_type(TL_IS_388, weave_chapter_header_node_MT, NULL);
weave_section_footer_node_type =
- Trees__new_node_type(TL_IS_388, weave_section_footer_node_MT, NULL);
+ Trees__new_node_type(TL_IS_389, weave_section_footer_node_MT, NULL);
weave_section_header_node_type =
- Trees__new_node_type(TL_IS_389, weave_section_header_node_MT, NULL);
+ Trees__new_node_type(TL_IS_390, weave_section_header_node_MT, NULL);
weave_section_purpose_node_type =
- Trees__new_node_type(TL_IS_390, weave_section_purpose_node_MT, NULL);
+ Trees__new_node_type(TL_IS_391, weave_section_purpose_node_MT, NULL);
weave_subheading_node_type =
- Trees__new_node_type(TL_IS_391, weave_subheading_node_MT, NULL);
+ Trees__new_node_type(TL_IS_392, weave_subheading_node_MT, NULL);
weave_bar_node_type =
- Trees__new_node_type(TL_IS_392, weave_bar_node_MT, NULL);
+ Trees__new_node_type(TL_IS_393, weave_bar_node_MT, NULL);
weave_pagebreak_node_type =
- Trees__new_node_type(TL_IS_393, weave_pagebreak_node_MT, NULL);
+ Trees__new_node_type(TL_IS_394, weave_pagebreak_node_MT, NULL);
weave_linebreak_node_type =
- Trees__new_node_type(TL_IS_394, weave_linebreak_node_MT, NULL);
+ Trees__new_node_type(TL_IS_395, weave_linebreak_node_MT, NULL);
weave_paragraph_heading_node_type =
- Trees__new_node_type(TL_IS_395, weave_paragraph_heading_node_MT, NULL);
+ Trees__new_node_type(TL_IS_396, weave_paragraph_heading_node_MT, NULL);
weave_endnote_node_type =
- Trees__new_node_type(TL_IS_396, weave_endnote_node_MT, NULL);
+ Trees__new_node_type(TL_IS_397, weave_endnote_node_MT, NULL);
weave_figure_node_type =
- Trees__new_node_type(TL_IS_397, weave_figure_node_MT, NULL);
+ Trees__new_node_type(TL_IS_398, weave_figure_node_MT, NULL);
weave_audio_node_type =
- Trees__new_node_type(TL_IS_398, weave_audio_node_MT, NULL);
+ Trees__new_node_type(TL_IS_399, weave_audio_node_MT, NULL);
weave_video_node_type =
- Trees__new_node_type(TL_IS_399, weave_video_node_MT, NULL);
+ Trees__new_node_type(TL_IS_400, weave_video_node_MT, NULL);
weave_download_node_type =
- Trees__new_node_type(TL_IS_400, weave_download_node_MT, NULL);
+ Trees__new_node_type(TL_IS_401, weave_download_node_MT, NULL);
weave_material_node_type =
- Trees__new_node_type(TL_IS_401, weave_material_node_MT, NULL);
+ Trees__new_node_type(TL_IS_402, weave_material_node_MT, NULL);
weave_embed_node_type =
- Trees__new_node_type(TL_IS_402, weave_embed_node_MT, NULL);
+ Trees__new_node_type(TL_IS_403, weave_embed_node_MT, NULL);
weave_pmac_node_type =
- Trees__new_node_type(TL_IS_403, weave_pmac_node_MT, NULL);
+ Trees__new_node_type(TL_IS_404, weave_pmac_node_MT, NULL);
weave_vskip_node_type =
- Trees__new_node_type(TL_IS_404, weave_vskip_node_MT, NULL);
+ Trees__new_node_type(TL_IS_405, weave_vskip_node_MT, NULL);
weave_chapter_node_type =
- Trees__new_node_type(TL_IS_405, weave_chapter_node_MT, NULL);
+ Trees__new_node_type(TL_IS_406, weave_chapter_node_MT, NULL);
weave_section_node_type =
- Trees__new_node_type(TL_IS_406, weave_section_node_MT, NULL);
+ Trees__new_node_type(TL_IS_407, weave_section_node_MT, NULL);
weave_code_line_node_type =
- Trees__new_node_type(TL_IS_407, weave_code_line_node_MT, NULL);
+ Trees__new_node_type(TL_IS_408, weave_code_line_node_MT, NULL);
weave_function_usage_node_type =
- Trees__new_node_type(TL_IS_408, weave_function_usage_node_MT, NULL);
+ Trees__new_node_type(TL_IS_409, weave_function_usage_node_MT, NULL);
weave_commentary_node_type =
- Trees__new_node_type(TL_IS_409, weave_commentary_node_MT, NULL);
+ Trees__new_node_type(TL_IS_410, weave_commentary_node_MT, NULL);
weave_carousel_slide_node_type =
- Trees__new_node_type(TL_IS_410, weave_carousel_slide_node_MT, NULL);
+ Trees__new_node_type(TL_IS_411, weave_carousel_slide_node_MT, NULL);
weave_toc_node_type =
- Trees__new_node_type(TL_IS_411, weave_toc_node_MT, NULL);
+ Trees__new_node_type(TL_IS_412, weave_toc_node_MT, NULL);
weave_toc_line_node_type =
- Trees__new_node_type(TL_IS_412, weave_toc_line_node_MT, NULL);
+ Trees__new_node_type(TL_IS_413, weave_toc_line_node_MT, NULL);
weave_chapter_title_page_node_type =
- Trees__new_node_type(TL_IS_413, weave_chapter_title_page_node_MT, NULL);
+ Trees__new_node_type(TL_IS_414, weave_chapter_title_page_node_MT, NULL);
weave_defn_node_type =
- Trees__new_node_type(TL_IS_414, weave_defn_node_MT, NULL);
+ Trees__new_node_type(TL_IS_415, weave_defn_node_MT, NULL);
weave_source_code_node_type =
- Trees__new_node_type(TL_IS_415, weave_source_code_node_MT, NULL);
+ Trees__new_node_type(TL_IS_416, weave_source_code_node_MT, NULL);
weave_url_node_type =
- Trees__new_node_type(TL_IS_416, weave_url_node_MT, NULL);
+ Trees__new_node_type(TL_IS_417, weave_url_node_MT, NULL);
weave_footnote_cue_node_type =
- Trees__new_node_type(TL_IS_417, weave_footnote_cue_node_MT, NULL);
+ Trees__new_node_type(TL_IS_418, weave_footnote_cue_node_MT, NULL);
weave_begin_footnote_text_node_type =
- Trees__new_node_type(TL_IS_418, weave_begin_footnote_text_node_MT, NULL);
+ Trees__new_node_type(TL_IS_419, weave_begin_footnote_text_node_MT, NULL);
weave_display_line_node_type =
- Trees__new_node_type(TL_IS_419, weave_display_line_node_MT, NULL);
+ Trees__new_node_type(TL_IS_420, weave_display_line_node_MT, NULL);
weave_function_defn_node_type =
- Trees__new_node_type(TL_IS_420, weave_function_defn_node_MT, NULL);
+ Trees__new_node_type(TL_IS_421, weave_function_defn_node_MT, NULL);
weave_item_node_type =
- Trees__new_node_type(TL_IS_421, weave_item_node_MT, NULL);
+ Trees__new_node_type(TL_IS_422, weave_item_node_MT, NULL);
weave_grammar_index_node_type =
- Trees__new_node_type(TL_IS_422, weave_grammar_index_node_MT, NULL);
+ Trees__new_node_type(TL_IS_423, weave_grammar_index_node_MT, NULL);
weave_inline_node_type =
- Trees__new_node_type(TL_IS_423, weave_inline_node_MT, NULL);
+ Trees__new_node_type(TL_IS_424, weave_inline_node_MT, NULL);
weave_locale_node_type =
- Trees__new_node_type(TL_IS_424, weave_locale_node_MT, NULL);
+ Trees__new_node_type(TL_IS_425, weave_locale_node_MT, NULL);
weave_maths_node_type =
- Trees__new_node_type(TL_IS_425, weave_maths_node_MT, NULL);
+ Trees__new_node_type(TL_IS_426, weave_maths_node_MT, NULL);
weave_verbatim_node_type =
- Trees__new_node_type(TL_IS_426, weave_verbatim_node_MT, NULL);
+ Trees__new_node_type(TL_IS_427, weave_verbatim_node_MT, NULL);
}
heterogeneous_tree *tree = Trees__new(weave_tree_type);
Trees__make_root(tree, WeaveTree__document(tree, wv));
@@ -24326,9 +24391,10 @@ tree_node *WeaveTree__video(heterogeneous_tree *tree,
}
tree_node *WeaveTree__download(heterogeneous_tree *tree,
- text_stream *download_name) {
+ text_stream *download_name, text_stream *filetype) {
weave_download_node *C = CREATE(weave_download_node);
C->download_name = Str__duplicate(download_name);
+ C->filetype = Str__duplicate(filetype);
return Trees__new_node(tree, weave_download_node_type,
STORE_POINTER_weave_download_node(C));
}
@@ -24352,7 +24418,7 @@ tree_node *WeaveTree__embed(heterogeneous_tree *tree,
return Trees__new_node(tree, weave_embed_node_type, STORE_POINTER_weave_embed_node(C));
}
-#line 568 "inweb/Chapter 5/Weave Tree.w"
+#line 570 "inweb/Chapter 5/Weave Tree.w"
tree_node *WeaveTree__pmac(heterogeneous_tree *tree, para_macro *pmac, int defn) {
weave_pmac_node *C = CREATE(weave_pmac_node);
C->pmac = pmac;
@@ -24360,7 +24426,7 @@ tree_node *WeaveTree__pmac(heterogeneous_tree *tree, para_macro *pmac, int defn)
return Trees__new_node(tree, weave_pmac_node_type, STORE_POINTER_weave_pmac_node(C));
}
-#line 580 "inweb/Chapter 5/Weave Tree.w"
+#line 582 "inweb/Chapter 5/Weave Tree.w"
tree_node *WeaveTree__vskip(heterogeneous_tree *tree, int in_comment) {
weave_vskip_node *C = CREATE(weave_vskip_node);
C->in_comment = in_comment;
@@ -24426,7 +24492,7 @@ tree_node *WeaveTree__weave_defn_node(heterogeneous_tree *tree, text_stream *key
return Trees__new_node(tree, weave_defn_node_type, STORE_POINTER_weave_defn_node(C));
}
-#line 649 "inweb/Chapter 5/Weave Tree.w"
+#line 651 "inweb/Chapter 5/Weave Tree.w"
tree_node *WeaveTree__source_code(heterogeneous_tree *tree,
text_stream *matter, text_stream *colouring) {
if (Str__len(colouring) != Str__len(matter)) internal_error("bad source segment");
@@ -24459,21 +24525,21 @@ tree_node *WeaveTree__footnote(heterogeneous_tree *tree, text_stream *cue) {
return Trees__new_node(tree, weave_begin_footnote_text_node_type, STORE_POINTER_weave_begin_footnote_text_node(C));
}
-#line 685 "inweb/Chapter 5/Weave Tree.w"
+#line 687 "inweb/Chapter 5/Weave Tree.w"
tree_node *WeaveTree__function_defn(heterogeneous_tree *tree, language_function *fn) {
weave_function_defn_node *C = CREATE(weave_function_defn_node);
C->fn = fn;
return Trees__new_node(tree, weave_function_defn_node_type, STORE_POINTER_weave_function_defn_node(C));
}
-#line 695 "inweb/Chapter 5/Weave Tree.w"
+#line 697 "inweb/Chapter 5/Weave Tree.w"
tree_node *WeaveTree__display_line(heterogeneous_tree *tree, text_stream *text) {
weave_display_line_node *C = CREATE(weave_display_line_node);
C->text = Str__duplicate(text);
return Trees__new_node(tree, weave_display_line_node_type, STORE_POINTER_weave_display_line_node(C));
}
-#line 714 "inweb/Chapter 5/Weave Tree.w"
+#line 716 "inweb/Chapter 5/Weave Tree.w"
tree_node *WeaveTree__weave_item_node(heterogeneous_tree *tree, int depth, text_stream *label) {
weave_item_node *C = CREATE(weave_item_node);
C->depth = depth;
@@ -24585,7 +24651,7 @@ void Formats__render(text_stream *OUT, heterogeneous_tree *tree, filename *into)
filename *F = Patterns__find_template(C->wv->pattern, template);
TEMPORARY_TEXT(interior);
VMETHOD_CALL(wf, RENDER_FOR_MTID, interior, tree);
- Bibliographic__set_datum(C->wv->weave_web->md, TL_IS_427, interior);
+ Bibliographic__set_datum(C->wv->weave_web->md, TL_IS_428, interior);
if (F) Collater__for_order(OUT, C->wv, F, into);
else WRITE("%S", interior);
DISCARD_TEXT(interior);
@@ -24639,7 +24705,7 @@ int Formats__substitute_post_processing_data(OUTPUT_STREAM, weave_order *wv,
#line 9 "inweb/Chapter 5/Plain Text Format.w"
void PlainText__create(void) {
- weave_format *wf = Formats__create_weave_format(TL_IS_428, TL_IS_429);
+ weave_format *wf = Formats__create_weave_format(TL_IS_429, TL_IS_430);
METHOD_ADD(wf, RENDER_FOR_MTID, PlainText__render);
}
@@ -24963,7 +25029,7 @@ int PlainText__render_visit(tree_node *N, void *state, int L) {
#line 9 "inweb/Chapter 5/TeX Format.w"
void TeX__create(void) {
- weave_format *wf = Formats__create_weave_format(TL_IS_430, TL_IS_431);
+ weave_format *wf = Formats__create_weave_format(TL_IS_431, TL_IS_432);
METHOD_ADD(wf, RENDER_FOR_MTID, TeX__render_TeX);
METHOD_ADD(wf, PREFORM_DOCUMENT_FOR_MTID, TeX__preform_document);
}
@@ -25041,7 +25107,7 @@ int TeX__render_visit(tree_node *N, void *state, int L) {
{
#line 115 "inweb/Chapter 5/TeX Format.w"
weave_chapter_header_node *C = RETRIEVE_POINTER_weave_chapter_header_node(N->content);
- if (Str__ne(C->chap->md->ch_range, TL_IS_432)) {
+ if (Str__ne(C->chap->md->ch_range, TL_IS_433)) {
TeX__general_heading(OUT, trs->wv,
FIRST_IN_LINKED_LIST(section, C->chap->sections), NULL, C->chap->md->ch_title,
3, FALSE);
@@ -25115,7 +25181,7 @@ int TeX__render_visit(tree_node *N, void *state, int L) {
weave_paragraph_heading_node *C =
RETRIEVE_POINTER_weave_paragraph_heading_node(N->content);
TeX__general_heading(OUT, trs->wv, C->para->under_section,
- C->para, TL_IS_433, 0, FALSE);
+ C->para, TL_IS_434, 0, FALSE);
}
#line 76 "inweb/Chapter 5/TeX Format.w"
@@ -25145,7 +25211,7 @@ int TeX__render_visit(tree_node *N, void *state, int L) {
#line 172 "inweb/Chapter 5/TeX Format.w"
weave_figure_node *C = RETRIEVE_POINTER_weave_figure_node(N->content);
filename *F = Filenames__in(
- Pathnames__down(trs->wv->weave_web->md->path_to_web, TL_IS_434),
+ Pathnames__down(trs->wv->weave_web->md->path_to_web, TL_IS_435),
C->figname);
WRITE("\\pdfximage");
if (C->w >= 0) WRITE(" width %d cm{%f}\n", C->w/POINTS_PER_CM, F);
@@ -25552,23 +25618,23 @@ void TeX__general_heading(text_stream *OUT, weave_order *wv,
{
#line 443 "inweb/Chapter 5/TeX Format.w"
switch (weight) {
- case 0: TeX_macro = TL_IS_435; break;
- case 1: TeX_macro = TL_IS_436; break;
- case 2: TeX_macro = TL_IS_437; break;
- default: TeX_macro = TL_IS_438; break;
+ case 0: TeX_macro = TL_IS_436; break;
+ case 1: TeX_macro = TL_IS_437; break;
+ case 2: TeX_macro = TL_IS_438; break;
+ default: TeX_macro = TL_IS_439; break;
}
if (wv->theme_match) {
switch (weight) {
- case 0: TeX_macro = TL_IS_439; break;
- case 1: TeX_macro = TL_IS_440; break;
- case 2: TeX_macro = TL_IS_441; break;
- default: TeX_macro = TL_IS_442; break;
+ case 0: TeX_macro = TL_IS_440; break;
+ case 1: TeX_macro = TL_IS_441; break;
+ case 2: TeX_macro = TL_IS_442; break;
+ default: TeX_macro = TL_IS_443; break;
}
}
if (no_skip) {
switch (weight) {
- case 0: TeX_macro = TL_IS_443; break;
- case 1: TeX_macro = TL_IS_444; break;
+ case 0: TeX_macro = TL_IS_444; break;
+ case 1: TeX_macro = TL_IS_445; break;
}
}
@@ -25805,7 +25871,7 @@ void HTMLFormat__create(void) {
{
#line 15 "inweb/Chapter 5/HTML Formats.w"
- weave_format *wf = Formats__create_weave_format(TL_IS_445, TL_IS_446);
+ weave_format *wf = Formats__create_weave_format(TL_IS_446, TL_IS_447);
METHOD_ADD(wf, RENDER_FOR_MTID, HTMLFormat__render);
}
@@ -25814,7 +25880,7 @@ void HTMLFormat__create(void) {
{
#line 19 "inweb/Chapter 5/HTML Formats.w"
- weave_format *wf = Formats__create_weave_format(TL_IS_447, TL_IS_448);
+ weave_format *wf = Formats__create_weave_format(TL_IS_448, TL_IS_449);
METHOD_ADD(wf, RENDER_FOR_MTID, HTMLFormat__render_EPUB);
METHOD_ADD(wf, BEGIN_WEAVING_FOR_MTID, HTMLFormat__begin_weaving_EPUB);
METHOD_ADD(wf, END_WEAVING_FOR_MTID, HTMLFormat__end_weaving_EPUB);
@@ -25838,10 +25904,10 @@ HTML_render_state HTMLFormat__initial_state(text_stream *OUT, weave_order *wv,
hrs.carousel_number = 1;
hrs.slide_number = -1;
hrs.slide_of = -1;
- hrs.copy_rule = Assets__new_rule(NULL, TL_IS_449, TL_IS_450, NULL);
+ hrs.copy_rule = Assets__new_rule(NULL, TL_IS_450, TL_IS_451, NULL);
- Swarm__ensure_plugin(wv, TL_IS_451);
- hrs.colours = Swarm__ensure_colour_scheme(wv, TL_IS_452, TL_IS_453);
+ Swarm__ensure_plugin(wv, TL_IS_452);
+ hrs.colours = Swarm__ensure_colour_scheme(wv, TL_IS_453, TL_IS_454);
return hrs;
}
@@ -25858,7 +25924,7 @@ void HTMLFormat__render_EPUB(weave_format *self, text_stream *OUT, heterogeneous
HTML__declare_as_HTML(OUT, TRUE);
HTML_render_state hrs = HTMLFormat__initial_state(OUT, C->wv, TRUE, C->wv->weave_to);
Trees__traverse_from(tree->root, &HTMLFormat__render_visit, (void *) &hrs, 0);
- Epub__note_page(C->wv->weave_web->as_ebook, C->wv->weave_to, C->wv->booklet_title, TL_IS_454);
+ Epub__note_page(C->wv->weave_web->as_ebook, C->wv->weave_to, C->wv->booklet_title, TL_IS_455);
HTML__completed(OUT);
}
@@ -25875,7 +25941,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
(N->type == weave_chapter_title_page_node_type) ||
(N->type == weave_grammar_index_node_type))
{
-#line 846 "inweb/Chapter 5/HTML Formats.w"
+#line 867 "inweb/Chapter 5/HTML Formats.w"
;
}
@@ -25902,7 +25968,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_verbatim_node_type)
{
-#line 806 "inweb/Chapter 5/HTML Formats.w"
+#line 827 "inweb/Chapter 5/HTML Formats.w"
weave_verbatim_node *C = RETRIEVE_POINTER_weave_verbatim_node(N->content);
WRITE("%S", C->content);
@@ -25915,16 +25981,16 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
if (hrs->EPUB_flag == FALSE) {
weave_section_header_node *C =
RETRIEVE_POINTER_weave_section_header_node(N->content);
- Swarm__ensure_plugin(hrs->wv, TL_IS_455);
+ Swarm__ensure_plugin(hrs->wv, TL_IS_456);
HTML_OPEN_WITH("div", "class=\"breadcrumbs\"");
HTML_OPEN_WITH("ul", "class=\"crumbs\"");
Colonies__drop_initial_breadcrumbs(OUT,
hrs->wv->weave_to, hrs->wv->breadcrumbs);
- text_stream *bct = Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_456);
- if (Str__len(Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_457)) > 0)
- bct = Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_458);
+ text_stream *bct = Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_457);
+ if (Str__len(Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_458)) > 0)
+ bct = Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_459);
if (hrs->wv->self_contained == FALSE) {
- Colonies__write_breadcrumb(OUT, bct, TL_IS_459);
+ Colonies__write_breadcrumb(OUT, bct, TL_IS_460);
if (hrs->wv->weave_web->md->chaptered) {
TEMPORARY_TEXT(chapter_link);
WRITE_TO(chapter_link, "index.html#%s%S",
@@ -25987,7 +26053,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
chapter *Ch;
LOOP_OVER_LINKED_LIST(Ch, chapter, hrs->wv->weave_web->chapters) {
if (Ch->md->imported == FALSE) {
- if (Str__ne(Ch->md->ch_range, TL_IS_460)) {
+ if (Str__ne(Ch->md->ch_range, TL_IS_461)) {
if (Ch == C->sect->owning_chapter) {
HTML_OPEN_WITH("li", "class=\"progresscurrentchapter\"");
} else {
@@ -26016,7 +26082,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (on) PUT_TO(label, Str__get(pos));
}
if (Str__eq(Bibliographic__get_datum(hrs->wv->weave_web->md,
- TL_IS_461), TL_IS_462))
+ TL_IS_462), TL_IS_463))
Str__delete_first_character(label);
if (S == C->sect) {
HTML_OPEN_WITH("li", "class=\"progresscurrent\"");
@@ -26103,7 +26169,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
paragraph *first_in_para = P;
{
-#line 407 "inweb/Chapter 5/HTML Formats.w"
+#line 428 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -26125,7 +26191,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
HTML_OPEN("li");
{
-#line 849 "inweb/Chapter 5/HTML Formats.w"
+#line 870 "inweb/Chapter 5/HTML Formats.w"
for (tree_node *M = N->child; M; M = M->next)
Trees__traverse_from(M, &HTMLFormat__render_visit, (void *) hrs, L+1);
@@ -26143,7 +26209,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
#line 315 "inweb/Chapter 5/HTML Formats.w"
weave_figure_node *C = RETRIEVE_POINTER_weave_figure_node(N->content);
filename *F = Filenames__in(
- Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_463),
+ Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_464),
C->figname);
filename *RF = Filenames__from_text(C->figname);
HTML_OPEN_WITH("p", "class=\"center-p\"");
@@ -26161,7 +26227,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
#line 328 "inweb/Chapter 5/HTML Formats.w"
weave_audio_node *C = RETRIEVE_POINTER_weave_audio_node(N->content);
filename *F = Filenames__in(
- Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_464),
+ Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_465),
C->audio_name);
Assets__include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL,
hrs->wv->pattern, hrs->wv->weave_to);
@@ -26181,7 +26247,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
#line 343 "inweb/Chapter 5/HTML Formats.w"
weave_video_node *C = RETRIEVE_POINTER_weave_video_node(N->content);
filename *F = Filenames__in(
- Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_465),
+ Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_466),
C->video_name);
Assets__include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL,
hrs->wv->pattern, hrs->wv->weave_to);
@@ -26208,28 +26274,53 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
#line 365 "inweb/Chapter 5/HTML Formats.w"
weave_download_node *C = RETRIEVE_POINTER_weave_download_node(N->content);
filename *F = Filenames__in(
- Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_466),
+ Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_467),
C->download_name);
- Assets__include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL,
- hrs->wv->pattern, hrs->wv->weave_to);
- HTML_OPEN_WITH("p", "class=\"center-p\"");
- WRITE("Download: ");
- TEMPORARY_TEXT(url);
- Pathnames__relative_URL(url, Filenames__up(hrs->wv->weave_to), Filenames__up(F));
- WRITE_TO(url, "%S", Filenames__get_leafname(F));
- HTML__begin_download_link(OUT, url);
- WRITE("%S", C->download_name);
- HTML__end_link(OUT);
- DISCARD_TEXT(url);
- HTML_CLOSE("p");
- WRITE("\n");
+ filename *TF = Patterns__find_file_in_subdirectory(hrs->wv->pattern, TL_IS_468,
+ TL_IS_469);
+ if (TF == NULL) {
+ Main__error_in_web(TL_IS_470, hrs->wv->current_weave_line);
+ } else {
+ Swarm__ensure_plugin(hrs->wv, TL_IS_471);
+ Assets__include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL,
+ hrs->wv->pattern, hrs->wv->weave_to);
+ TEMPORARY_TEXT(url);
+ TEMPORARY_TEXT(size);
+ Pathnames__relative_URL(url, Filenames__up(hrs->wv->weave_to), Filenames__up(F));
+ WRITE_TO(url, "%S", Filenames__get_leafname(F));
+ int N = Filenames__size(F);
+ if (N > 0)
+{
+#line 396 "inweb/Chapter 5/HTML Formats.w"
+ WRITE_TO(size, " (");
+ if (Str__len(C->filetype) > 0) WRITE_TO(size, "%S, ", C->filetype);
+ if (N < 1024) WRITE_TO(size, "%d byte%s", N, (N!=1)?"s":"");
+ else if (N < 1024*1024) WRITE_TO(size, "%dkB", N/1024);
+ else if (N < 1024*1024*1024) WRITE_TO(size, "%dMB", N/1024/1024);
+ else WRITE_TO(size, "%dGB", N/1024/1024/1024);
+ WRITE_TO(size, ")");
+
+}
+#line 382 "inweb/Chapter 5/HTML Formats.w"
+
+ else Main__error_in_web(TL_IS_472,
+ hrs->wv->current_weave_line);
+ Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_473, C->download_name);
+ Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_474, url);
+ Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_475, size);
+ Collater__for_web_and_pattern(OUT, hrs->wv->weave_web, hrs->wv->pattern,
+ TF, hrs->into_file);
+ WRITE("\n");
+ DISCARD_TEXT(url);
+ DISCARD_TEXT(size);
+ }
}
#line 111 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_material_node_type)
{
-#line 384 "inweb/Chapter 5/HTML Formats.w"
+#line 405 "inweb/Chapter 5/HTML Formats.w"
weave_material_node *C = RETRIEVE_POINTER_weave_material_node(N->content);
paragraph *first_in_para = NULL;
if ((N == N->parent->child) &&
@@ -26241,13 +26332,13 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
if (C->material_type == COMMENTARY_MATERIAL)
{
-#line 415 "inweb/Chapter 5/HTML Formats.w"
+#line 436 "inweb/Chapter 5/HTML Formats.w"
int item_depth = 0;
for (tree_node *M = N->child; M; M = M->next) {
if (M->type == weave_item_node_type) {
{
-#line 407 "inweb/Chapter 5/HTML Formats.w"
+#line 428 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -26256,7 +26347,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 418 "inweb/Chapter 5/HTML Formats.w"
+#line 439 "inweb/Chapter 5/HTML Formats.w"
;
weave_item_node *C = RETRIEVE_POINTER_weave_item_node(M->content);
HTMLFormat__go_to_depth(hrs, item_depth, C->depth);
@@ -26266,7 +26357,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
if (HTMLFormat__interior_material(M))
{
-#line 440 "inweb/Chapter 5/HTML Formats.w"
+#line 461 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -26283,11 +26374,11 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
continue;
}
-#line 425 "inweb/Chapter 5/HTML Formats.w"
+#line 446 "inweb/Chapter 5/HTML Formats.w"
;
{
-#line 407 "inweb/Chapter 5/HTML Formats.w"
+#line 428 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -26296,7 +26387,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 426 "inweb/Chapter 5/HTML Formats.w"
+#line 447 "inweb/Chapter 5/HTML Formats.w"
;
if (item_depth > 0) {
HTMLFormat__go_to_depth(hrs, item_depth, 0);
@@ -26311,15 +26402,15 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 393 "inweb/Chapter 5/HTML Formats.w"
+#line 414 "inweb/Chapter 5/HTML Formats.w"
else if (C->material_type == CODE_MATERIAL)
{
-#line 456 "inweb/Chapter 5/HTML Formats.w"
+#line 477 "inweb/Chapter 5/HTML Formats.w"
{
-#line 407 "inweb/Chapter 5/HTML Formats.w"
+#line 428 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -26328,7 +26419,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 456 "inweb/Chapter 5/HTML Formats.w"
+#line 477 "inweb/Chapter 5/HTML Formats.w"
;
if (C->styling) {
TEMPORARY_TEXT(csname);
@@ -26345,25 +26436,25 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
DISCARD_TEXT(cl);
{
-#line 849 "inweb/Chapter 5/HTML Formats.w"
+#line 870 "inweb/Chapter 5/HTML Formats.w"
for (tree_node *M = N->child; M; M = M->next)
Trees__traverse_from(M, &HTMLFormat__render_visit, (void *) hrs, L+1);
}
-#line 470 "inweb/Chapter 5/HTML Formats.w"
+#line 491 "inweb/Chapter 5/HTML Formats.w"
;
HTML_CLOSE("pre"); WRITE("\n");
}
-#line 395 "inweb/Chapter 5/HTML Formats.w"
+#line 416 "inweb/Chapter 5/HTML Formats.w"
else if (C->material_type == FOOTNOTES_MATERIAL)
{
-#line 474 "inweb/Chapter 5/HTML Formats.w"
+#line 495 "inweb/Chapter 5/HTML Formats.w"
{
-#line 407 "inweb/Chapter 5/HTML Formats.w"
+#line 428 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -26372,30 +26463,30 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 474 "inweb/Chapter 5/HTML Formats.w"
+#line 495 "inweb/Chapter 5/HTML Formats.w"
;
HTML_OPEN_WITH("ul", "class=\"footnotetexts\"");
{
-#line 849 "inweb/Chapter 5/HTML Formats.w"
+#line 870 "inweb/Chapter 5/HTML Formats.w"
for (tree_node *M = N->child; M; M = M->next)
Trees__traverse_from(M, &HTMLFormat__render_visit, (void *) hrs, L+1);
}
-#line 476 "inweb/Chapter 5/HTML Formats.w"
+#line 497 "inweb/Chapter 5/HTML Formats.w"
;
HTML_CLOSE("ul"); WRITE("\n");
}
-#line 397 "inweb/Chapter 5/HTML Formats.w"
+#line 418 "inweb/Chapter 5/HTML Formats.w"
else if (C->material_type == ENDNOTES_MATERIAL)
{
-#line 480 "inweb/Chapter 5/HTML Formats.w"
+#line 501 "inweb/Chapter 5/HTML Formats.w"
{
-#line 407 "inweb/Chapter 5/HTML Formats.w"
+#line 428 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -26404,27 +26495,27 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 480 "inweb/Chapter 5/HTML Formats.w"
+#line 501 "inweb/Chapter 5/HTML Formats.w"
;
HTML_OPEN_WITH("ul", "class=\"endnotetexts\"");
{
-#line 849 "inweb/Chapter 5/HTML Formats.w"
+#line 870 "inweb/Chapter 5/HTML Formats.w"
for (tree_node *M = N->child; M; M = M->next)
Trees__traverse_from(M, &HTMLFormat__render_visit, (void *) hrs, L+1);
}
-#line 482 "inweb/Chapter 5/HTML Formats.w"
+#line 503 "inweb/Chapter 5/HTML Formats.w"
;
HTML_CLOSE("ul"); WRITE("\n");
}
-#line 399 "inweb/Chapter 5/HTML Formats.w"
+#line 420 "inweb/Chapter 5/HTML Formats.w"
else if (C->material_type == MACRO_MATERIAL)
{
-#line 486 "inweb/Chapter 5/HTML Formats.w"
+#line 507 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -26433,25 +26524,25 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
{
-#line 849 "inweb/Chapter 5/HTML Formats.w"
+#line 870 "inweb/Chapter 5/HTML Formats.w"
for (tree_node *M = N->child; M; M = M->next)
Trees__traverse_from(M, &HTMLFormat__render_visit, (void *) hrs, L+1);
}
-#line 492 "inweb/Chapter 5/HTML Formats.w"
+#line 513 "inweb/Chapter 5/HTML Formats.w"
;
HTML_CLOSE("p"); WRITE("\n");
}
-#line 401 "inweb/Chapter 5/HTML Formats.w"
+#line 422 "inweb/Chapter 5/HTML Formats.w"
else if (C->material_type == DEFINITION_MATERIAL)
{
-#line 496 "inweb/Chapter 5/HTML Formats.w"
+#line 517 "inweb/Chapter 5/HTML Formats.w"
{
-#line 407 "inweb/Chapter 5/HTML Formats.w"
+#line 428 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -26460,22 +26551,22 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 496 "inweb/Chapter 5/HTML Formats.w"
+#line 517 "inweb/Chapter 5/HTML Formats.w"
;
HTML_OPEN_WITH("pre", "class=\"definitions code-font\"");
{
-#line 849 "inweb/Chapter 5/HTML Formats.w"
+#line 870 "inweb/Chapter 5/HTML Formats.w"
for (tree_node *M = N->child; M; M = M->next)
Trees__traverse_from(M, &HTMLFormat__render_visit, (void *) hrs, L+1);
}
-#line 498 "inweb/Chapter 5/HTML Formats.w"
+#line 519 "inweb/Chapter 5/HTML Formats.w"
;
HTML_CLOSE("pre"); WRITE("\n");
}
-#line 403 "inweb/Chapter 5/HTML Formats.w"
+#line 424 "inweb/Chapter 5/HTML Formats.w"
;
return FALSE;
@@ -26484,22 +26575,22 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_embed_node_type)
{
-#line 506 "inweb/Chapter 5/HTML Formats.w"
+#line 527 "inweb/Chapter 5/HTML Formats.w"
weave_embed_node *C = RETRIEVE_POINTER_weave_embed_node(N->content);
- text_stream *CH = TL_IS_467;
- text_stream *CW = TL_IS_468;
+ text_stream *CH = TL_IS_476;
+ text_stream *CW = TL_IS_477;
if (C->w > 0) { Str__clear(CW); WRITE_TO(CW, "%d", C->w); }
if (C->h > 0) { Str__clear(CH); WRITE_TO(CH, "%d", C->h); }
TEMPORARY_TEXT(embed_leaf);
WRITE_TO(embed_leaf, "%S.html", C->service);
- filename *F = Patterns__find_file_in_subdirectory(hrs->wv->pattern, TL_IS_469, embed_leaf);
+ filename *F = Patterns__find_file_in_subdirectory(hrs->wv->pattern, TL_IS_478, embed_leaf);
DISCARD_TEXT(embed_leaf);
if (F == NULL) {
- Main__error_in_web(TL_IS_470, hrs->wv->current_weave_line);
+ Main__error_in_web(TL_IS_479, hrs->wv->current_weave_line);
} else {
- Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_471, C->ID);
- Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_472, CW);
- Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_473, CH);
+ Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_480, C->ID);
+ Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_481, CW);
+ Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_482, CH);
HTML_OPEN_WITH("p", "class=\"center-p\"");
Collater__for_web_and_pattern(OUT, hrs->wv->weave_web, hrs->wv->pattern,
F, hrs->into_file);
@@ -26512,14 +26603,14 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_pmac_node_type)
{
-#line 529 "inweb/Chapter 5/HTML Formats.w"
+#line 550 "inweb/Chapter 5/HTML Formats.w"
weave_pmac_node *C = RETRIEVE_POINTER_weave_pmac_node(N->content);
paragraph *P = C->pmac->defining_paragraph;
HTML_OPEN_WITH("span", "class=\"named-paragraph-container code-font\"");
if (C->defn == FALSE) {
TEMPORARY_TEXT(url);
Colonies__paragraph_URL(url, P, hrs->wv->weave_to);
- HTML__begin_link_with_class(OUT, TL_IS_474, url);
+ HTML__begin_link_with_class(OUT, TL_IS_483, url);
DISCARD_TEXT(url);
}
HTML_OPEN_WITH("span", "class=\"%s\"",
@@ -26542,7 +26633,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_vskip_node_type)
{
-#line 554 "inweb/Chapter 5/HTML Formats.w"
+#line 575 "inweb/Chapter 5/HTML Formats.w"
WRITE("\n");
}
@@ -26550,7 +26641,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_section_node_type)
{
-#line 557 "inweb/Chapter 5/HTML Formats.w"
+#line 578 "inweb/Chapter 5/HTML Formats.w"
weave_section_node *C = RETRIEVE_POINTER_weave_section_node(N->content);
LOG("It was %d\n", C->allocation_id);
@@ -26559,15 +26650,15 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_code_line_node_type)
{
-#line 561 "inweb/Chapter 5/HTML Formats.w"
+#line 582 "inweb/Chapter 5/HTML Formats.w"
{
-#line 849 "inweb/Chapter 5/HTML Formats.w"
+#line 870 "inweb/Chapter 5/HTML Formats.w"
for (tree_node *M = N->child; M; M = M->next)
Trees__traverse_from(M, &HTMLFormat__render_visit, (void *) hrs, L+1);
}
-#line 561 "inweb/Chapter 5/HTML Formats.w"
+#line 582 "inweb/Chapter 5/HTML Formats.w"
;
WRITE("\n");
return FALSE;
@@ -26577,9 +26668,9 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_function_usage_node_type)
{
-#line 566 "inweb/Chapter 5/HTML Formats.w"
+#line 587 "inweb/Chapter 5/HTML Formats.w"
weave_function_usage_node *C = RETRIEVE_POINTER_weave_function_usage_node(N->content);
- HTML__begin_link_with_class(OUT, TL_IS_475, C->url);
+ HTML__begin_link_with_class(OUT, TL_IS_484, C->url);
HTMLFormat__change_colour(OUT, FUNCTION_COLOUR, hrs->colours);
WRITE("%S", C->fn->function_name);
HTMLFormat__change_colour(OUT, -1, hrs->colours);
@@ -26590,7 +26681,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_commentary_node_type)
{
-#line 574 "inweb/Chapter 5/HTML Formats.w"
+#line 595 "inweb/Chapter 5/HTML Formats.w"
weave_commentary_node *C = RETRIEVE_POINTER_weave_commentary_node(N->content);
if (C->in_code) HTMLFormat__change_colour(OUT, COMMENT_COLOUR, hrs->colours);
for (int i=0; i < Str__len(C->text); i++) {
@@ -26615,19 +26706,19 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_carousel_slide_node_type)
{
-#line 594 "inweb/Chapter 5/HTML Formats.w"
+#line 615 "inweb/Chapter 5/HTML Formats.w"
weave_carousel_slide_node *C = RETRIEVE_POINTER_weave_carousel_slide_node(N->content);
- Swarm__ensure_plugin(hrs->wv, TL_IS_476);
+ Swarm__ensure_plugin(hrs->wv, TL_IS_485);
TEMPORARY_TEXT(carousel_id)
TEMPORARY_TEXT(carousel_dots_id)
text_stream *caption_class = NULL;
- text_stream *slide_count_class = TL_IS_477;
+ text_stream *slide_count_class = TL_IS_486;
switch (C->caption_command) {
- case CAROUSEL_CMD: caption_class = TL_IS_478; break;
- case CAROUSEL_ABOVE_CMD: caption_class = TL_IS_479;
- slide_count_class = TL_IS_480; break;
- case CAROUSEL_BELOW_CMD: caption_class = TL_IS_481;
- slide_count_class = TL_IS_482; break;
+ case CAROUSEL_CMD: caption_class = TL_IS_487; break;
+ case CAROUSEL_ABOVE_CMD: caption_class = TL_IS_488;
+ slide_count_class = TL_IS_489; break;
+ case CAROUSEL_BELOW_CMD: caption_class = TL_IS_490;
+ slide_count_class = TL_IS_491; break;
}
WRITE_TO(carousel_id, "carousel-no-%d", hrs->carousel_number);
WRITE_TO(carousel_dots_id, "carousel-dots-no-%d", hrs->carousel_number);
@@ -26649,12 +26740,12 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
if (C->caption_command == CAROUSEL_ABOVE_CMD) {
{
-#line 667 "inweb/Chapter 5/HTML Formats.w"
+#line 688 "inweb/Chapter 5/HTML Formats.w"
if (C->caption_command != CAROUSEL_UNCAPTIONED_CMD)
WRITE("%S
\n", caption_class, C->caption);
}
-#line 625 "inweb/Chapter 5/HTML Formats.w"
+#line 646 "inweb/Chapter 5/HTML Formats.w"
;
WRITE("%d / %d
\n",
slide_count_class, hrs->slide_number, hrs->slide_of);
@@ -26665,22 +26756,22 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
WRITE("");
{
-#line 849 "inweb/Chapter 5/HTML Formats.w"
+#line 870 "inweb/Chapter 5/HTML Formats.w"
for (tree_node *M = N->child; M; M = M->next)
Trees__traverse_from(M, &HTMLFormat__render_visit, (void *) hrs, L+1);
}
-#line 633 "inweb/Chapter 5/HTML Formats.w"
+#line 654 "inweb/Chapter 5/HTML Formats.w"
;
WRITE("
\n");
if (C->caption_command != CAROUSEL_ABOVE_CMD)
{
-#line 667 "inweb/Chapter 5/HTML Formats.w"
+#line 688 "inweb/Chapter 5/HTML Formats.w"
if (C->caption_command != CAROUSEL_UNCAPTIONED_CMD)
WRITE("%S
\n", caption_class, C->caption);
}
-#line 635 "inweb/Chapter 5/HTML Formats.w"
+#line 656 "inweb/Chapter 5/HTML Formats.w"
;
WRITE("\n");
if (hrs->slide_number == hrs->slide_of) {
@@ -26717,7 +26808,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_toc_node_type)
{
-#line 671 "inweb/Chapter 5/HTML Formats.w"
+#line 692 "inweb/Chapter 5/HTML Formats.w"
HTML_OPEN_WITH("ul", "class=\"toc\"");
for (tree_node *M = N->child; M; M = M->next) {
HTML_OPEN("li");
@@ -26734,7 +26825,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_toc_line_node_type)
{
-#line 683 "inweb/Chapter 5/HTML Formats.w"
+#line 704 "inweb/Chapter 5/HTML Formats.w"
weave_toc_line_node *C = RETRIEVE_POINTER_weave_toc_line_node(N->content);
TEMPORARY_TEXT(TEMP)
Colonies__paragraph_URL(TEMP, C->para, hrs->wv->weave_to);
@@ -26750,7 +26841,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_defn_node_type)
{
-#line 694 "inweb/Chapter 5/HTML Formats.w"
+#line 715 "inweb/Chapter 5/HTML Formats.w"
weave_defn_node *C = RETRIEVE_POINTER_weave_defn_node(N->content);
HTML_OPEN_WITH("span", "class=\"definition-keyword\"");
WRITE("%S", C->keyword);
@@ -26762,7 +26853,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_source_code_node_type)
{
-#line 701 "inweb/Chapter 5/HTML Formats.w"
+#line 722 "inweb/Chapter 5/HTML Formats.w"
weave_source_code_node *C = RETRIEVE_POINTER_weave_source_code_node(N->content);
int starts = FALSE;
if (N == N->parent->child) starts = TRUE;
@@ -26786,9 +26877,9 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_url_node_type)
{
-#line 720 "inweb/Chapter 5/HTML Formats.w"
+#line 741 "inweb/Chapter 5/HTML Formats.w"
weave_url_node *C = RETRIEVE_POINTER_weave_url_node(N->content);
- HTML__begin_link_with_class(OUT, (C->external)?TL_IS_483:TL_IS_484, C->url);
+ HTML__begin_link_with_class(OUT, (C->external)?TL_IS_492:TL_IS_493, C->url);
WRITE("%S", C->content);
HTML__end_link(OUT);
@@ -26797,7 +26888,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_footnote_cue_node_type)
{
-#line 726 "inweb/Chapter 5/HTML Formats.w"
+#line 747 "inweb/Chapter 5/HTML Formats.w"
weave_footnote_cue_node *C = RETRIEVE_POINTER_weave_footnote_cue_node(N->content);
text_stream *fn_plugin_name = hrs->wv->pattern->footnotes_plugin;
if (Str__len(fn_plugin_name) > 0)
@@ -26816,7 +26907,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_begin_footnote_text_node_type)
{
-#line 740 "inweb/Chapter 5/HTML Formats.w"
+#line 761 "inweb/Chapter 5/HTML Formats.w"
weave_begin_footnote_text_node *C =
RETRIEVE_POINTER_weave_begin_footnote_text_node(N->content);
text_stream *fn_plugin_name = hrs->wv->pattern->footnotes_plugin;
@@ -26830,12 +26921,12 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
C->cue_text);
{
-#line 849 "inweb/Chapter 5/HTML Formats.w"
+#line 870 "inweb/Chapter 5/HTML Formats.w"
for (tree_node *M = N->child; M; M = M->next)
Trees__traverse_from(M, &HTMLFormat__render_visit, (void *) hrs, L+1);
}
-#line 751 "inweb/Chapter 5/HTML Formats.w"
+#line 772 "inweb/Chapter 5/HTML Formats.w"
;
if (hrs->EPUB_flag)
WRITE(" (return to text)
",
@@ -26850,7 +26941,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_display_line_node_type)
{
-#line 761 "inweb/Chapter 5/HTML Formats.w"
+#line 782 "inweb/Chapter 5/HTML Formats.w"
weave_display_line_node *C =
RETRIEVE_POINTER_weave_display_line_node(N->content);
HTML_OPEN("blockquote"); WRITE("\n"); INDENT;
@@ -26864,11 +26955,11 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_function_defn_node_type)
{
-#line 770 "inweb/Chapter 5/HTML Formats.w"
+#line 791 "inweb/Chapter 5/HTML Formats.w"
weave_function_defn_node *C =
RETRIEVE_POINTER_weave_function_defn_node(N->content);
if ((Functions__used_elsewhere(C->fn)) && (hrs->EPUB_flag == FALSE)) {
- Swarm__ensure_plugin(hrs->wv, TL_IS_485);
+ Swarm__ensure_plugin(hrs->wv, TL_IS_494);
HTMLFormat__change_colour(OUT, FUNCTION_COLOUR, hrs->colours);
WRITE("%S", C->fn->function_name);
WRITE("");
@@ -26886,12 +26977,12 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
WRITE(": ");
{
-#line 849 "inweb/Chapter 5/HTML Formats.w"
+#line 870 "inweb/Chapter 5/HTML Formats.w"
for (tree_node *M = N->child; M; M = M->next)
Trees__traverse_from(M, &HTMLFormat__render_visit, (void *) hrs, L+1);
}
-#line 789 "inweb/Chapter 5/HTML Formats.w"
+#line 810 "inweb/Chapter 5/HTML Formats.w"
;
HTMLFormat__change_colour(OUT, -1, hrs->colours);
WRITE("");
@@ -26908,7 +26999,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_item_node_type)
{
-#line 801 "inweb/Chapter 5/HTML Formats.w"
+#line 822 "inweb/Chapter 5/HTML Formats.w"
weave_item_node *C = RETRIEVE_POINTER_weave_item_node(N->content);
if (Str__len(C->label) > 0) WRITE("(%S) ", C->label);
else WRITE(" ");
@@ -26918,16 +27009,16 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_inline_node_type)
{
-#line 810 "inweb/Chapter 5/HTML Formats.w"
+#line 831 "inweb/Chapter 5/HTML Formats.w"
HTML_OPEN_WITH("span", "class=\"extract\"");
{
-#line 849 "inweb/Chapter 5/HTML Formats.w"
+#line 870 "inweb/Chapter 5/HTML Formats.w"
for (tree_node *M = N->child; M; M = M->next)
Trees__traverse_from(M, &HTMLFormat__render_visit, (void *) hrs, L+1);
}
-#line 811 "inweb/Chapter 5/HTML Formats.w"
+#line 832 "inweb/Chapter 5/HTML Formats.w"
;
HTML_CLOSE("span");
return FALSE;
@@ -26937,7 +27028,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_locale_node_type)
{
-#line 816 "inweb/Chapter 5/HTML Formats.w"
+#line 837 "inweb/Chapter 5/HTML Formats.w"
weave_locale_node *C = RETRIEVE_POINTER_weave_locale_node(N->content);
TEMPORARY_TEXT(TEMP)
Colonies__paragraph_URL(TEMP, C->par1, hrs->wv->weave_to);
@@ -26954,7 +27045,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_maths_node_type)
{
-#line 828 "inweb/Chapter 5/HTML Formats.w"
+#line 849 "inweb/Chapter 5/HTML Formats.w"
weave_maths_node *C = RETRIEVE_POINTER_weave_maths_node(N->content);
text_stream *plugin_name = hrs->wv->pattern->mathematics_plugin;
if ((Str__len(plugin_name) == 0) || (hrs->EPUB_flag)) {
@@ -26974,7 +27065,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_linebreak_node_type)
{
-#line 843 "inweb/Chapter 5/HTML Formats.w"
+#line 864 "inweb/Chapter 5/HTML Formats.w"
WRITE(" ");
}
@@ -26985,7 +27076,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
return TRUE;
}
-#line 856 "inweb/Chapter 5/HTML Formats.w"
+#line 877 "inweb/Chapter 5/HTML Formats.w"
int HTMLFormat__interior_material(tree_node *N) {
if (N->type == weave_commentary_node_type) return TRUE;
if (N->type == weave_url_node_type) return TRUE;
@@ -26996,7 +27087,7 @@ int HTMLFormat__interior_material(tree_node *N) {
return FALSE;
}
-#line 870 "inweb/Chapter 5/HTML Formats.w"
+#line 891 "inweb/Chapter 5/HTML Formats.w"
void HTMLFormat__go_to_depth(HTML_render_state *hrs, int from_depth, int to_depth) {
text_stream *OUT = hrs->OUT;
if (from_depth == to_depth) {
@@ -27014,7 +27105,7 @@ void HTMLFormat__go_to_depth(HTML_render_state *hrs, int from_depth, int to_dept
if (to_depth > 0) HTML_OPEN("li");
}
-#line 888 "inweb/Chapter 5/HTML Formats.w"
+#line 909 "inweb/Chapter 5/HTML Formats.w"
void HTMLFormat__paragraph_number(text_stream *OUT, paragraph *P) {
TEMPORARY_TEXT(TEMP)
Colonies__paragraph_anchor(TEMP, P);
@@ -27027,7 +27118,7 @@ void HTMLFormat__paragraph_number(text_stream *OUT, paragraph *P) {
HTML_CLOSE("b");
}
-#line 901 "inweb/Chapter 5/HTML Formats.w"
+#line 922 "inweb/Chapter 5/HTML Formats.w"
void HTMLFormat__change_colour(text_stream *OUT, int col, colour_scheme *cs) {
if (col == -1) {
HTML_CLOSE("span");
@@ -27051,7 +27142,7 @@ void HTMLFormat__change_colour(text_stream *OUT, int col, colour_scheme *cs) {
}
}
-#line 925 "inweb/Chapter 5/HTML Formats.w"
+#line 946 "inweb/Chapter 5/HTML Formats.w"
void HTMLFormat__escape_text(text_stream *OUT, text_stream *id) {
for (int i=0; i < Str__len(id); i++) {
if (Str__get_at(id, i) == '&') WRITE("&");
@@ -27061,12 +27152,12 @@ void HTMLFormat__escape_text(text_stream *OUT, text_stream *id) {
}
}
-#line 937 "inweb/Chapter 5/HTML Formats.w"
+#line 958 "inweb/Chapter 5/HTML Formats.w"
int HTMLFormat__begin_weaving_EPUB(weave_format *wf, web *W, weave_pattern *pattern) {
TEMPORARY_TEXT(T)
- WRITE_TO(T, "%S", Bibliographic__get_datum(W->md, TL_IS_486));
+ WRITE_TO(T, "%S", Bibliographic__get_datum(W->md, TL_IS_495));
W->as_ebook = Epub__new(T, "P");
- filename *CSS = Patterns__find_file_in_subdirectory(pattern, TL_IS_487, TL_IS_488);
+ filename *CSS = Patterns__find_file_in_subdirectory(pattern, TL_IS_496, TL_IS_497);
Epub__use_CSS_throughout(W->as_ebook, CSS);
Epub__attach_metadata(W->as_ebook, L"identifier", T);
DISCARD_TEXT(T)
@@ -27083,7 +27174,7 @@ void HTMLFormat__end_weaving_EPUB(weave_format *wf, web *W, weave_pattern *patte
#line 9 "inweb/Chapter 5/Debugging Format.w"
void Debugging__create(void) {
- weave_format *wf = Formats__create_weave_format(TL_IS_489, TL_IS_490);
+ weave_format *wf = Formats__create_weave_format(TL_IS_498, TL_IS_499);
METHOD_ADD(wf, RENDER_FOR_MTID, Debugging__render);
}
@@ -27273,7 +27364,7 @@ int Debugging__render_visit(tree_node *N, void *state, int L) {
{
#line 159 "inweb/Chapter 5/Debugging Format.w"
weave_download_node *C = RETRIEVE_POINTER_weave_download_node(N->content);
- WRITE(" <%S>", C->download_name);
+ WRITE(" <%S> %S", C->download_name, C->filetype);
}
#line 55 "inweb/Chapter 5/Debugging Format.w"
@@ -27557,7 +27648,7 @@ tex_results *TeXUtilities__new_results(weave_order *wv, filename *CF) {
res->tex_error_count = 0;
res->page_count = 0;
res->pdf_size = 0;
- res->PDF_filename = Filenames__set_extension(CF, TL_IS_491);
+ res->PDF_filename = Filenames__set_extension(CF, TL_IS_500);
return res;
}
@@ -27753,7 +27844,7 @@ void TeXUtilities__remove_math_mode_range(OUTPUT_STREAM, text_stream *text, int
i++;
while ((i < Str__len(text)) && (Characters__isalpha(Str__get_at(text, i))))
PUT_TO(macro, Str__get_at(text, i++));
- if (Str__eq(macro, TL_IS_492))
+ if (Str__eq(macro, TL_IS_501))
{
#line 364 "inweb/Chapter 5/TeX Utilities.w"
if (Str__get_at(text, i) == '\\') {
@@ -27761,8 +27852,8 @@ void TeXUtilities__remove_math_mode_range(OUTPUT_STREAM, text_stream *text, int
i++;
while ((i < Str__len(text)) && (Characters__isalpha(Str__get_at(text, i))))
PUT_TO(macro, Str__get_at(text, i++));
- if (Str__eq(macro, TL_IS_588)) PUT((wchar_t) 0x2204);
- else if (Str__eq(macro, TL_IS_589)) { PUT((wchar_t) 0x00AC); PUT((wchar_t) 0x2200); }
+ if (Str__eq(macro, TL_IS_597)) PUT((wchar_t) 0x2204);
+ else if (Str__eq(macro, TL_IS_598)) { PUT((wchar_t) 0x00AC); PUT((wchar_t) 0x2200); }
else {
PRINT("Don't know how to apply '\\not' to '\\%S'\n", macro);
}
@@ -27776,99 +27867,99 @@ void TeXUtilities__remove_math_mode_range(OUTPUT_STREAM, text_stream *text, int
else
{
#line 251 "inweb/Chapter 5/TeX Utilities.w"
- if (Str__eq(macro, TL_IS_493)) WRITE("<=");
- else if (Str__eq(macro, TL_IS_494)) WRITE(">=");
- else if (Str__eq(macro, TL_IS_495)) WRITE("~");
- else if (Str__eq(macro, TL_IS_496)) WRITE("");
- else if (Str__eq(macro, TL_IS_497)) WRITE("");
- else if (Str__eq(macro, TL_IS_498)) WRITE("");
- else if (Str__eq(macro, TL_IS_499)) WRITE("=>");
- else if (Str__eq(macro, TL_IS_500)) WRITE("<=>");
- else if (Str__eq(macro, TL_IS_501)) WRITE("-->");
- else if (Str__eq(macro, TL_IS_502)) WRITE("-->");
- else if (Str__eq(macro, TL_IS_503)) WRITE("-->");
- else if (Str__eq(macro, TL_IS_504)) WRITE("<--");
- else if (Str__eq(macro, TL_IS_505)) WRITE("<--");
- else if (Str__eq(macro, TL_IS_506)) WRITE("{");
- else if (Str__eq(macro, TL_IS_507)) WRITE("|");
- else if (Str__eq(macro, TL_IS_508)) WRITE("}");
- else if (Str__eq(macro, TL_IS_509)) WRITE(".");
- else if (Str__eq(macro, TL_IS_510)) WRITE("...");
- else if (Str__eq(macro, TL_IS_511)) WRITE("...");
- else if (Str__eq(macro, TL_IS_512)) WRITE("*");
- else if (Str__eq(macro, TL_IS_513)) WRITE(" ");
- else if (Str__eq(macro, TL_IS_514)) WRITE(" ");
- else if (Str__eq(macro, TL_IS_515)) WRITE("TeX");
- else if (Str__eq(macro, TL_IS_516)) WRITE("!=");
- else if (Str__eq(macro, TL_IS_517)) WRITE("!=");
- else if (Str__eq(macro, TL_IS_518)) WRITE("l");
- else if (Str__eq(macro, TL_IS_519)) WRITE("log");
- else if (Str__eq(macro, TL_IS_520)) WRITE("exp");
- else if (Str__eq(macro, TL_IS_521)) WRITE("sin");
- else if (Str__eq(macro, TL_IS_522)) WRITE("cos");
- else if (Str__eq(macro, TL_IS_523)) WRITE("tan");
- else if (Str__eq(macro, TL_IS_524)) WRITE("T");
- else if (Str__eq(macro, TL_IS_525)) PUT((wchar_t) 0x0391);
- else if (Str__eq(macro, TL_IS_526)) PUT((wchar_t) 0x0392);
- else if (Str__eq(macro, TL_IS_527)) PUT((wchar_t) 0x0393);
- else if (Str__eq(macro, TL_IS_528)) PUT((wchar_t) 0x0394);
- else if (Str__eq(macro, TL_IS_529)) PUT((wchar_t) 0x0395);
- else if (Str__eq(macro, TL_IS_530)) PUT((wchar_t) 0x0396);
- else if (Str__eq(macro, TL_IS_531)) PUT((wchar_t) 0x0397);
- else if (Str__eq(macro, TL_IS_532)) PUT((wchar_t) 0x0398);
- else if (Str__eq(macro, TL_IS_533)) PUT((wchar_t) 0x0399);
- else if (Str__eq(macro, TL_IS_534)) PUT((wchar_t) 0x039A);
- else if (Str__eq(macro, TL_IS_535)) PUT((wchar_t) 0x039B);
- else if (Str__eq(macro, TL_IS_536)) PUT((wchar_t) 0x039C);
- else if (Str__eq(macro, TL_IS_537)) PUT((wchar_t) 0x039D);
- else if (Str__eq(macro, TL_IS_538)) PUT((wchar_t) 0x039E);
- else if (Str__eq(macro, TL_IS_539)) PUT((wchar_t) 0x039F);
- else if (Str__eq(macro, TL_IS_540)) PUT((wchar_t) 0x03A0);
- else if (Str__eq(macro, TL_IS_541)) PUT((wchar_t) 0x03A1);
- else if (Str__eq(macro, TL_IS_542)) PUT((wchar_t) 0x03A2);
- else if (Str__eq(macro, TL_IS_543)) PUT((wchar_t) 0x03A3);
- else if (Str__eq(macro, TL_IS_544)) PUT((wchar_t) 0x03A4);
- else if (Str__eq(macro, TL_IS_545)) PUT((wchar_t) 0x03A5);
- else if (Str__eq(macro, TL_IS_546)) PUT((wchar_t) 0x03A6);
- else if (Str__eq(macro, TL_IS_547)) PUT((wchar_t) 0x03A7);
- else if (Str__eq(macro, TL_IS_548)) PUT((wchar_t) 0x03A8);
- else if (Str__eq(macro, TL_IS_549)) PUT((wchar_t) 0x03A9);
- else if (Str__eq(macro, TL_IS_550)) PUT((wchar_t) 0x03B1);
- else if (Str__eq(macro, TL_IS_551)) PUT((wchar_t) 0x03B2);
- else if (Str__eq(macro, TL_IS_552)) PUT((wchar_t) 0x03B3);
- else if (Str__eq(macro, TL_IS_553)) PUT((wchar_t) 0x03B4);
- else if (Str__eq(macro, TL_IS_554)) PUT((wchar_t) 0x03B5);
- else if (Str__eq(macro, TL_IS_555)) PUT((wchar_t) 0x03B6);
- else if (Str__eq(macro, TL_IS_556)) PUT((wchar_t) 0x03B7);
- else if (Str__eq(macro, TL_IS_557)) PUT((wchar_t) 0x03B8);
- else if (Str__eq(macro, TL_IS_558)) PUT((wchar_t) 0x03B9);
- else if (Str__eq(macro, TL_IS_559)) PUT((wchar_t) 0x03BA);
- else if (Str__eq(macro, TL_IS_560)) PUT((wchar_t) 0x03BB);
- else if (Str__eq(macro, TL_IS_561)) PUT((wchar_t) 0x03BC);
- else if (Str__eq(macro, TL_IS_562)) PUT((wchar_t) 0x03BD);
- else if (Str__eq(macro, TL_IS_563)) PUT((wchar_t) 0x03BE);
- else if (Str__eq(macro, TL_IS_564)) PUT((wchar_t) 0x03BF);
- else if (Str__eq(macro, TL_IS_565)) PUT((wchar_t) 0x03C0);
- else if (Str__eq(macro, TL_IS_566)) PUT((wchar_t) 0x03C1);
- else if (Str__eq(macro, TL_IS_567)) PUT((wchar_t) 0x03C2);
- else if (Str__eq(macro, TL_IS_568)) PUT((wchar_t) 0x03C3);
- else if (Str__eq(macro, TL_IS_569)) PUT((wchar_t) 0x03C4);
- else if (Str__eq(macro, TL_IS_570)) PUT((wchar_t) 0x03C5);
- else if (Str__eq(macro, TL_IS_571)) PUT((wchar_t) 0x03C6);
- else if (Str__eq(macro, TL_IS_572)) PUT((wchar_t) 0x03C7);
- else if (Str__eq(macro, TL_IS_573)) PUT((wchar_t) 0x03C8);
- else if (Str__eq(macro, TL_IS_574)) PUT((wchar_t) 0x03C9);
- else if (Str__eq(macro, TL_IS_575)) PUT((wchar_t) 0x2203);
- else if (Str__eq(macro, TL_IS_576)) PUT((wchar_t) 0x2208);
- else if (Str__eq(macro, TL_IS_577)) PUT((wchar_t) 0x2200);
- else if (Str__eq(macro, TL_IS_578)) PUT((wchar_t) 0x2229);
- else if (Str__eq(macro, TL_IS_579)) PUT((wchar_t) 0x2205);
- else if (Str__eq(macro, TL_IS_580)) PUT((wchar_t) 0x2286);
- else if (Str__eq(macro, TL_IS_581)) PUT((wchar_t) 0x2227);
- else if (Str__eq(macro, TL_IS_582)) PUT((wchar_t) 0x2228);
- else if (Str__eq(macro, TL_IS_583)) PUT((wchar_t) 0x00AC);
- else if (Str__eq(macro, TL_IS_584)) PUT((wchar_t) 0x03A3);
- else if (Str__eq(macro, TL_IS_585)) PUT((wchar_t) 0x03A0);
+ if (Str__eq(macro, TL_IS_502)) WRITE("<=");
+ else if (Str__eq(macro, TL_IS_503)) WRITE(">=");
+ else if (Str__eq(macro, TL_IS_504)) WRITE("~");
+ else if (Str__eq(macro, TL_IS_505)) WRITE("");
+ else if (Str__eq(macro, TL_IS_506)) WRITE("");
+ else if (Str__eq(macro, TL_IS_507)) WRITE("");
+ else if (Str__eq(macro, TL_IS_508)) WRITE("=>");
+ else if (Str__eq(macro, TL_IS_509)) WRITE("<=>");
+ else if (Str__eq(macro, TL_IS_510)) WRITE("-->");
+ else if (Str__eq(macro, TL_IS_511)) WRITE("-->");
+ else if (Str__eq(macro, TL_IS_512)) WRITE("-->");
+ else if (Str__eq(macro, TL_IS_513)) WRITE("<--");
+ else if (Str__eq(macro, TL_IS_514)) WRITE("<--");
+ else if (Str__eq(macro, TL_IS_515)) WRITE("{");
+ else if (Str__eq(macro, TL_IS_516)) WRITE("|");
+ else if (Str__eq(macro, TL_IS_517)) WRITE("}");
+ else if (Str__eq(macro, TL_IS_518)) WRITE(".");
+ else if (Str__eq(macro, TL_IS_519)) WRITE("...");
+ else if (Str__eq(macro, TL_IS_520)) WRITE("...");
+ else if (Str__eq(macro, TL_IS_521)) WRITE("*");
+ else if (Str__eq(macro, TL_IS_522)) WRITE(" ");
+ else if (Str__eq(macro, TL_IS_523)) WRITE(" ");
+ else if (Str__eq(macro, TL_IS_524)) WRITE("TeX");
+ else if (Str__eq(macro, TL_IS_525)) WRITE("!=");
+ else if (Str__eq(macro, TL_IS_526)) WRITE("!=");
+ else if (Str__eq(macro, TL_IS_527)) WRITE("l");
+ else if (Str__eq(macro, TL_IS_528)) WRITE("log");
+ else if (Str__eq(macro, TL_IS_529)) WRITE("exp");
+ else if (Str__eq(macro, TL_IS_530)) WRITE("sin");
+ else if (Str__eq(macro, TL_IS_531)) WRITE("cos");
+ else if (Str__eq(macro, TL_IS_532)) WRITE("tan");
+ else if (Str__eq(macro, TL_IS_533)) WRITE("T");
+ else if (Str__eq(macro, TL_IS_534)) PUT((wchar_t) 0x0391);
+ else if (Str__eq(macro, TL_IS_535)) PUT((wchar_t) 0x0392);
+ else if (Str__eq(macro, TL_IS_536)) PUT((wchar_t) 0x0393);
+ else if (Str__eq(macro, TL_IS_537)) PUT((wchar_t) 0x0394);
+ else if (Str__eq(macro, TL_IS_538)) PUT((wchar_t) 0x0395);
+ else if (Str__eq(macro, TL_IS_539)) PUT((wchar_t) 0x0396);
+ else if (Str__eq(macro, TL_IS_540)) PUT((wchar_t) 0x0397);
+ else if (Str__eq(macro, TL_IS_541)) PUT((wchar_t) 0x0398);
+ else if (Str__eq(macro, TL_IS_542)) PUT((wchar_t) 0x0399);
+ else if (Str__eq(macro, TL_IS_543)) PUT((wchar_t) 0x039A);
+ else if (Str__eq(macro, TL_IS_544)) PUT((wchar_t) 0x039B);
+ else if (Str__eq(macro, TL_IS_545)) PUT((wchar_t) 0x039C);
+ else if (Str__eq(macro, TL_IS_546)) PUT((wchar_t) 0x039D);
+ else if (Str__eq(macro, TL_IS_547)) PUT((wchar_t) 0x039E);
+ else if (Str__eq(macro, TL_IS_548)) PUT((wchar_t) 0x039F);
+ else if (Str__eq(macro, TL_IS_549)) PUT((wchar_t) 0x03A0);
+ else if (Str__eq(macro, TL_IS_550)) PUT((wchar_t) 0x03A1);
+ else if (Str__eq(macro, TL_IS_551)) PUT((wchar_t) 0x03A2);
+ else if (Str__eq(macro, TL_IS_552)) PUT((wchar_t) 0x03A3);
+ else if (Str__eq(macro, TL_IS_553)) PUT((wchar_t) 0x03A4);
+ else if (Str__eq(macro, TL_IS_554)) PUT((wchar_t) 0x03A5);
+ else if (Str__eq(macro, TL_IS_555)) PUT((wchar_t) 0x03A6);
+ else if (Str__eq(macro, TL_IS_556)) PUT((wchar_t) 0x03A7);
+ else if (Str__eq(macro, TL_IS_557)) PUT((wchar_t) 0x03A8);
+ else if (Str__eq(macro, TL_IS_558)) PUT((wchar_t) 0x03A9);
+ else if (Str__eq(macro, TL_IS_559)) PUT((wchar_t) 0x03B1);
+ else if (Str__eq(macro, TL_IS_560)) PUT((wchar_t) 0x03B2);
+ else if (Str__eq(macro, TL_IS_561)) PUT((wchar_t) 0x03B3);
+ else if (Str__eq(macro, TL_IS_562)) PUT((wchar_t) 0x03B4);
+ else if (Str__eq(macro, TL_IS_563)) PUT((wchar_t) 0x03B5);
+ else if (Str__eq(macro, TL_IS_564)) PUT((wchar_t) 0x03B6);
+ else if (Str__eq(macro, TL_IS_565)) PUT((wchar_t) 0x03B7);
+ else if (Str__eq(macro, TL_IS_566)) PUT((wchar_t) 0x03B8);
+ else if (Str__eq(macro, TL_IS_567)) PUT((wchar_t) 0x03B9);
+ else if (Str__eq(macro, TL_IS_568)) PUT((wchar_t) 0x03BA);
+ else if (Str__eq(macro, TL_IS_569)) PUT((wchar_t) 0x03BB);
+ else if (Str__eq(macro, TL_IS_570)) PUT((wchar_t) 0x03BC);
+ else if (Str__eq(macro, TL_IS_571)) PUT((wchar_t) 0x03BD);
+ else if (Str__eq(macro, TL_IS_572)) PUT((wchar_t) 0x03BE);
+ else if (Str__eq(macro, TL_IS_573)) PUT((wchar_t) 0x03BF);
+ else if (Str__eq(macro, TL_IS_574)) PUT((wchar_t) 0x03C0);
+ else if (Str__eq(macro, TL_IS_575)) PUT((wchar_t) 0x03C1);
+ else if (Str__eq(macro, TL_IS_576)) PUT((wchar_t) 0x03C2);
+ else if (Str__eq(macro, TL_IS_577)) PUT((wchar_t) 0x03C3);
+ else if (Str__eq(macro, TL_IS_578)) PUT((wchar_t) 0x03C4);
+ else if (Str__eq(macro, TL_IS_579)) PUT((wchar_t) 0x03C5);
+ else if (Str__eq(macro, TL_IS_580)) PUT((wchar_t) 0x03C6);
+ else if (Str__eq(macro, TL_IS_581)) PUT((wchar_t) 0x03C7);
+ else if (Str__eq(macro, TL_IS_582)) PUT((wchar_t) 0x03C8);
+ else if (Str__eq(macro, TL_IS_583)) PUT((wchar_t) 0x03C9);
+ else if (Str__eq(macro, TL_IS_584)) PUT((wchar_t) 0x2203);
+ else if (Str__eq(macro, TL_IS_585)) PUT((wchar_t) 0x2208);
+ else if (Str__eq(macro, TL_IS_586)) PUT((wchar_t) 0x2200);
+ else if (Str__eq(macro, TL_IS_587)) PUT((wchar_t) 0x2229);
+ else if (Str__eq(macro, TL_IS_588)) PUT((wchar_t) 0x2205);
+ else if (Str__eq(macro, TL_IS_589)) PUT((wchar_t) 0x2286);
+ else if (Str__eq(macro, TL_IS_590)) PUT((wchar_t) 0x2227);
+ else if (Str__eq(macro, TL_IS_591)) PUT((wchar_t) 0x2228);
+ else if (Str__eq(macro, TL_IS_592)) PUT((wchar_t) 0x00AC);
+ else if (Str__eq(macro, TL_IS_593)) PUT((wchar_t) 0x03A3);
+ else if (Str__eq(macro, TL_IS_594)) PUT((wchar_t) 0x03A0);
else {
if (Str__len(macro) > 0) {
int suspect = TRUE;
@@ -27878,8 +27969,8 @@ void TeXUtilities__remove_math_mode_range(OUTPUT_STREAM, text_stream *text, int
if ((c >= 'a') && (c <= 'z')) continue;
suspect = FALSE;
}
- if (Str__eq(macro, TL_IS_586)) suspect = FALSE;
- if (Str__eq(macro, TL_IS_587)) suspect = FALSE;
+ if (Str__eq(macro, TL_IS_595)) suspect = FALSE;
+ if (Str__eq(macro, TL_IS_596)) suspect = FALSE;
if (suspect)
PRINT("[Passing through unknown TeX macro \\%S:\n %S\n", macro, text);
}
@@ -28036,7 +28127,7 @@ void Makefiles__scan_makefile_line(text_stream *line, text_file_position *tfp, v
{
#line 139 "inweb/Chapter 6/Makefiles.w"
WRITE("%S", mr.exp[0]);
- Makefiles__repeat(OUT, TL_IS_590, FALSE, mr.exp[1], FALSE, NULL, tfp, MS, marker, TL_IS_591);
+ Makefiles__repeat(OUT, TL_IS_599, FALSE, mr.exp[1], FALSE, NULL, tfp, MS, marker, TL_IS_600);
WRITE("%S\n", mr.exp[2]);
MS->last_line_was_blank = FALSE;
Regexp__dispose_of(&mr);
@@ -28058,7 +28149,7 @@ void Makefiles__scan_makefile_line(text_stream *line, text_file_position *tfp, v
{
#line 139 "inweb/Chapter 6/Makefiles.w"
WRITE("%S", mr.exp[0]);
- Makefiles__repeat(OUT, TL_IS_590, FALSE, mr.exp[1], FALSE, NULL, tfp, MS, marker, TL_IS_591);
+ Makefiles__repeat(OUT, TL_IS_599, FALSE, mr.exp[1], FALSE, NULL, tfp, MS, marker, TL_IS_600);
WRITE("%S\n", mr.exp[2]);
MS->last_line_was_blank = FALSE;
Regexp__dispose_of(&mr);
@@ -28080,7 +28171,7 @@ void Makefiles__scan_makefile_line(text_stream *line, text_file_position *tfp, v
{
#line 139 "inweb/Chapter 6/Makefiles.w"
WRITE("%S", mr.exp[0]);
- Makefiles__repeat(OUT, TL_IS_590, FALSE, mr.exp[1], FALSE, NULL, tfp, MS, marker, TL_IS_591);
+ Makefiles__repeat(OUT, TL_IS_599, FALSE, mr.exp[1], FALSE, NULL, tfp, MS, marker, TL_IS_600);
WRITE("%S\n", mr.exp[2]);
MS->last_line_was_blank = FALSE;
Regexp__dispose_of(&mr);
@@ -28098,7 +28189,7 @@ void Makefiles__scan_makefile_line(text_stream *line, text_file_position *tfp, v
{
#line 156 "inweb/Chapter 6/Makefiles.w"
WRITE("INWEB = "); Makefiles__pathname_slashed(OUT, path_to_inweb); WRITE("/Tangled/inweb\n");
- pathname *path_to_intest = Pathnames__down(Pathnames__up(path_to_inweb), TL_IS_593);
+ pathname *path_to_intest = Pathnames__down(Pathnames__up(path_to_inweb), TL_IS_602);
WRITE("INTEST = "); Makefiles__pathname_slashed(OUT, path_to_intest); WRITE("/Tangled/intest\n");
if (MS->for_web) {
WRITE("MYNAME = %S\n", Pathnames__directory_name(MS->for_web->md->path_to_web));
@@ -28115,7 +28206,7 @@ void Makefiles__scan_makefile_line(text_stream *line, text_file_position *tfp, v
if (Regexp__match(&mr, line, L" *{platform-settings} *"))
{
#line 147 "inweb/Chapter 6/Makefiles.w"
- filename *prototype = Filenames__in(path_to_inweb, TL_IS_592);
+ filename *prototype = Filenames__in(path_to_inweb, TL_IS_601);
MS->allow_commands = FALSE;
TextFiles__read(prototype, FALSE, "can't open make settings file",
TRUE, Makefiles__scan_makefile_line, NULL, MS);
@@ -28402,7 +28493,7 @@ void Makefiles__repeat(OUTPUT_STREAM, text_stream *prefix, int every_time, text_
int c = 0;
LOOP_OVER(M, module) {
if ((M->origin_marker == over) &&
- ((Str__eq(tag, TL_IS_594)) || (Str__eq(tag, M->module_tag)))) {
+ ((Str__eq(tag, TL_IS_603)) || (Str__eq(tag, M->module_tag)))) {
if ((prefix) && ((c++ > 0) || (every_time))) WRITE("%S", prefix);
if (matter) {
TEMPORARY_TEXT(line);
@@ -28456,7 +28547,7 @@ void Git__copy_gitignore_line(text_stream *line, text_file_position *tfp, void *
{
#line 44 "inweb/Chapter 6/Git Support.w"
filename *prototype =
- Filenames__in(path_to_inweb_materials, TL_IS_595);
+ Filenames__in(path_to_inweb_materials, TL_IS_604);
TextFiles__read(prototype, FALSE, "can't open make settings file",
TRUE, Git__copy_gitignore_line, NULL, MS);
Regexp__dispose_of(&mr);
@@ -28490,11 +28581,11 @@ void Readme__write(filename *from, filename *to) {
write_state ws;
ws.current_definition = NULL;
ws.known_macros = NEW_LINKED_LIST(macro);
- macro *V = Readme__new_macro(TL_IS_596, NULL, NULL);
+ macro *V = Readme__new_macro(TL_IS_605, NULL, NULL);
ADD_TO_LINKED_LIST(V, macro, ws.known_macros);
- macro *P = Readme__new_macro(TL_IS_597, NULL, NULL);
+ macro *P = Readme__new_macro(TL_IS_606, NULL, NULL);
ADD_TO_LINKED_LIST(P, macro, ws.known_macros);
- macro *A = Readme__new_macro(TL_IS_598, NULL, NULL);
+ macro *A = Readme__new_macro(TL_IS_607, NULL, NULL);
ADD_TO_LINKED_LIST(A, macro, ws.known_macros);
ws.stack_frame = NULL;
text_stream file_to;
@@ -28530,7 +28621,7 @@ void Readme__write_helper(text_stream *text, text_file_position *tfp, void *stat
}
} else {
Readme__expand_material(ws, OUT, text, tfp);
- Readme__expand_material(ws, OUT, TL_IS_599, tfp);
+ Readme__expand_material(ws, OUT, TL_IS_608, tfp);
}
Regexp__dispose_of(&mr);
}
@@ -28661,7 +28752,7 @@ void Readme__expand_at(write_state *ws, text_stream *OUT, text_stream *macro_nam
#line 204 "inweb/Chapter 6/Readme Writeme.w"
void Readme__expand_macro(write_state *ws, text_stream *OUT, macro *M, text_file_position *tfp) {
- if (Str__eq(M->name, TL_IS_600))
+ if (Str__eq(M->name, TL_IS_609))
{
#line 215 "inweb/Chapter 6/Readme Writeme.w"
if (ws->stack_frame->no_pars != 1)
@@ -28669,14 +28760,14 @@ void Readme__expand_macro(write_state *ws, text_stream *OUT, macro *M, text_file
else {
TEMPORARY_TEXT(program);
Readme__expand_material(ws, program, ws->stack_frame->pars[0], tfp);
- Readme__write_var(OUT, program, TL_IS_603);
+ Readme__write_var(OUT, program, TL_IS_612);
DISCARD_TEXT(program);
}
}
#line 205 "inweb/Chapter 6/Readme Writeme.w"
- else if (Str__eq(M->name, TL_IS_601))
+ else if (Str__eq(M->name, TL_IS_610))
{
#line 225 "inweb/Chapter 6/Readme Writeme.w"
if (ws->stack_frame->no_pars != 1)
@@ -28684,14 +28775,14 @@ void Readme__expand_macro(write_state *ws, text_stream *OUT, macro *M, text_file
else {
TEMPORARY_TEXT(program);
Readme__expand_material(ws, program, ws->stack_frame->pars[0], tfp);
- Readme__write_var(OUT, program, TL_IS_604);
+ Readme__write_var(OUT, program, TL_IS_613);
DISCARD_TEXT(program);
}
}
#line 206 "inweb/Chapter 6/Readme Writeme.w"
- else if (Str__eq(M->name, TL_IS_602))
+ else if (Str__eq(M->name, TL_IS_611))
{
#line 235 "inweb/Chapter 6/Readme Writeme.w"
if (ws->stack_frame->no_pars != 2)
@@ -28720,8 +28811,8 @@ void Readme__expand_macro(write_state *ws, text_stream *OUT, macro *M, text_file
void Readme__write_var(text_stream *OUT, text_stream *program, text_stream *datum) {
writeme_asset *A = Readme__find_asset(program);
if (A->if_web) WRITE("%S", Bibliographic__get_datum(A->if_web, datum));
- else if (Str__eq(datum, TL_IS_605)) WRITE("%S", A->date);
- else if (Str__eq(datum, TL_IS_606)) WRITE("%S", A->version);
+ else if (Str__eq(datum, TL_IS_614)) WRITE("%S", A->date);
+ else if (Str__eq(datum, TL_IS_615)) WRITE("%S", A->version);
}
#line 273 "inweb/Chapter 6/Readme Writeme.w"
@@ -28752,7 +28843,7 @@ writeme_asset *Readme__find_asset(text_stream *program) {
A->if_web = WebMetadata__get_without_modules(Pathnames__from_text(program), NULL);
} else {
filename *I6_vn = Filenames__in(
- Pathnames__down(Pathnames__from_text(program), TL_IS_607), TL_IS_608);
+ Pathnames__down(Pathnames__from_text(program), TL_IS_616), TL_IS_617);
if (TextFiles__exists(I6_vn))
{
#line 310 "inweb/Chapter 6/Readme Writeme.w"
@@ -28762,7 +28853,7 @@ writeme_asset *Readme__find_asset(text_stream *program) {
}
#line 295 "inweb/Chapter 6/Readme Writeme.w"
;
- filename *template_vn = Filenames__in(Pathnames__from_text(program), TL_IS_609);
+ filename *template_vn = Filenames__in(Pathnames__from_text(program), TL_IS_618);
if (TextFiles__exists(template_vn))
{
#line 314 "inweb/Chapter 6/Readme Writeme.w"
@@ -28772,7 +28863,7 @@ writeme_asset *Readme__find_asset(text_stream *program) {
}
#line 297 "inweb/Chapter 6/Readme Writeme.w"
;
- filename *rmt_vn = Filenames__in(Pathnames__from_text(program), TL_IS_610);
+ filename *rmt_vn = Filenames__in(Pathnames__from_text(program), TL_IS_619);
if (TextFiles__exists(rmt_vn))
{
#line 318 "inweb/Chapter 6/Readme Writeme.w"
@@ -28782,7 +28873,7 @@ writeme_asset *Readme__find_asset(text_stream *program) {
}
#line 299 "inweb/Chapter 6/Readme Writeme.w"
;
- rmt_vn = Filenames__in(Pathnames__from_text(program), TL_IS_611);
+ rmt_vn = Filenames__in(Pathnames__from_text(program), TL_IS_620);
if (TextFiles__exists(rmt_vn))
{
#line 318 "inweb/Chapter 6/Readme Writeme.w"
@@ -28857,7 +28948,7 @@ void Readme__readme_harvester(text_stream *text, text_file_position *tfp, void *
void Colonies__load(filename *F) {
colony *C = CREATE(colony);
C->members = NEW_LINKED_LIST(colony_member);
- C->home = TL_IS_612;
+ C->home = TL_IS_621;
C->assets_path = NULL;
C->patterns_path = NULL;
colony_reader_state crs;
@@ -28881,8 +28972,8 @@ void Colonies__read_line(text_stream *line, text_file_position *tfp, void *v_crs
match_results mr = Regexp__create_mr();
if (Regexp__match(&mr, line, L"(%c*?): \"*(%C+)\" at \"(%c*)\" in \"(%c*)\"")) {
colony_member *CM = CREATE(colony_member);
- if (Str__eq(mr.exp[0], TL_IS_613)) CM->web_rather_than_module = TRUE;
- else if (Str__eq(mr.exp[0], TL_IS_614)) CM->web_rather_than_module = FALSE;
+ if (Str__eq(mr.exp[0], TL_IS_622)) CM->web_rather_than_module = TRUE;
+ else if (Str__eq(mr.exp[0], TL_IS_623)) CM->web_rather_than_module = FALSE;
else {
CM->web_rather_than_module = FALSE;
Errors__in_text_file("text before ':' must be 'web' or 'module'", tfp);
@@ -28890,7 +28981,7 @@ void Colonies__read_line(text_stream *line, text_file_position *tfp, void *v_crs
CM->name = Str__duplicate(mr.exp[1]);
CM->path = Str__duplicate(mr.exp[2]);
CM->home_leaf = Str__new();
- if (Str__suffix_eq(CM->path, TL_IS_615, 6)) {
+ if (Str__suffix_eq(CM->path, TL_IS_624, 6)) {
filename *F = Filenames__from_text(CM->path);
Filenames__write_unextended_leafname(CM->home_leaf, F);
WRITE_TO(CM->home_leaf, ".html");
@@ -29030,7 +29121,7 @@ module *Colonies__as_module(colony_member *CM, source_line *L, web_md *Wm) {
#line 254 "inweb/Chapter 6/Colonies.w"
filename *F = NULL;
pathname *P = NULL;
- if (Str__suffix_eq(CM->path, TL_IS_616, 6))
+ if (Str__suffix_eq(CM->path, TL_IS_625, 6))
F = Filenames__from_text(CM->path);
else
P = Pathnames__from_text(CM->path);
@@ -29057,7 +29148,7 @@ text_stream *Colonies__home(void) {
colony *C;
LOOP_OVER(C, colony)
return C->home;
- return TL_IS_617;
+ return TL_IS_626;
}
pathname *Colonies__assets_path(void) {
@@ -29234,7 +29325,7 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti
DISCARD_TEXT(err);
return FALSE;
} else if (N > 1) {
- Main__error_in_web(TL_IS_618, L);
+ Main__error_in_web(TL_IS_627, L);
WebModules__named_reference(&found_M, &found_Sm, &bare_module_name,
title, search_M, text, TRUE);
return FALSE;
@@ -29317,7 +29408,7 @@ void Colonies__paragraph_URL(OUTPUT_STREAM, paragraph *P, filename *from) {
if (P == NULL) internal_error("no para");
section *to_S = P->under_section;
module *to_M = to_S->md->owning_module;
- if (Str__ne(to_M->module_name, TL_IS_619)) {
+ if (Str__ne(to_M->module_name, TL_IS_628)) {
colony_member *to_C = Colonies__find(to_M->module_name);
if (to_C) {
pathname *from_path = Filenames__up(from);
@@ -29525,445 +29616,454 @@ void register_tangled_text_literals(void) {
TL_IS_176 = Str__literal(L"Audio");
TL_IS_177 = Str__literal(L"Video");
TL_IS_178 = Str__literal(L"Download");
- TL_IS_179 = Str__literal(L"Carousels");
+ TL_IS_179 = Str__literal(L"Download");
TL_IS_180 = Str__literal(L"Carousels");
TL_IS_181 = Str__literal(L"Carousels");
TL_IS_182 = Str__literal(L"Carousels");
TL_IS_183 = Str__literal(L"Carousels");
- TL_IS_184 = Str__literal(L"Videos");
- TL_IS_185 = Str__literal(L"unknown bracketed annotation");
- TL_IS_186 = Str__literal(L"unknown material after '='");
- TL_IS_187 = Str__literal(L"undisplayed");
- TL_IS_188 = Str__literal(L"hyperlinked");
- TL_IS_189 = Str__literal(L"only 'undisplayed' and/or 'hyperlinked' can precede 'text' here");
- TL_IS_190 = Str__literal(L"=");
- TL_IS_191 = Str__literal(L"don't understand @command");
- TL_IS_192 = Str__literal(L"Purpose used after bar");
- TL_IS_193 = Str__literal(L"Interface used after bar");
- TL_IS_194 = Str__literal(L"Definitions used after bar");
- TL_IS_195 = Str__literal(L"second bar in the same section");
- TL_IS_196 = Str__literal(L"enumeration constants can't supply a value");
- TL_IS_197 = Str__literal(L"P");
- TL_IS_198 = Str__literal(L"S");
- TL_IS_199 = Str__literal(L"Footnote Begins Notation");
- TL_IS_200 = Str__literal(L"Footnote Ends Notation");
- TL_IS_201 = Str__literal(L"Off");
- TL_IS_202 = Str__literal(L"ifdef-");
- TL_IS_203 = Str__literal(L"ifndef-");
- TL_IS_204 = Str__literal(L".");
- TL_IS_205 = Str__literal(L"This paragraph is used only if ");
- TL_IS_206 = Str__literal(L" and if ");
- TL_IS_207 = Str__literal(L" and ");
- TL_IS_208 = Str__literal(L" is");
- TL_IS_209 = Str__literal(L" are");
- TL_IS_210 = Str__literal(L" defined");
- TL_IS_211 = Str__literal(L" undefined");
- TL_IS_212 = Str__literal(L"enumeration constants must belong to a _FAMILY");
- TL_IS_213 = Str__literal(L"this enumeration _FAMILY is unknown");
- TL_IS_214 = Str__literal(L"this enumeration _FAMILY already exists");
- TL_IS_215 = Str__literal(L"unrecognised interface line");
- TL_IS_216 = Str__literal(L"makescript.txt");
+ TL_IS_184 = Str__literal(L"Carousels");
+ TL_IS_185 = Str__literal(L"Videos");
+ TL_IS_186 = Str__literal(L"unknown bracketed annotation");
+ TL_IS_187 = Str__literal(L"unknown material after '='");
+ TL_IS_188 = Str__literal(L"undisplayed");
+ TL_IS_189 = Str__literal(L"hyperlinked");
+ TL_IS_190 = Str__literal(L"only 'undisplayed' and/or 'hyperlinked' can precede 'text' here");
+ TL_IS_191 = Str__literal(L"=");
+ TL_IS_192 = Str__literal(L"don't understand @command");
+ TL_IS_193 = Str__literal(L"Purpose used after bar");
+ TL_IS_194 = Str__literal(L"Interface used after bar");
+ TL_IS_195 = Str__literal(L"Definitions used after bar");
+ TL_IS_196 = Str__literal(L"second bar in the same section");
+ TL_IS_197 = Str__literal(L"enumeration constants can't supply a value");
+ TL_IS_198 = Str__literal(L"P");
+ TL_IS_199 = Str__literal(L"S");
+ TL_IS_200 = Str__literal(L"Footnote Begins Notation");
+ TL_IS_201 = Str__literal(L"Footnote Ends Notation");
+ TL_IS_202 = Str__literal(L"Off");
+ TL_IS_203 = Str__literal(L"ifdef-");
+ TL_IS_204 = Str__literal(L"ifndef-");
+ TL_IS_205 = Str__literal(L".");
+ TL_IS_206 = Str__literal(L"This paragraph is used only if ");
+ TL_IS_207 = Str__literal(L" and if ");
+ TL_IS_208 = Str__literal(L" and ");
+ TL_IS_209 = Str__literal(L" is");
+ TL_IS_210 = Str__literal(L" are");
+ TL_IS_211 = Str__literal(L" defined");
+ TL_IS_212 = Str__literal(L" undefined");
+ TL_IS_213 = Str__literal(L"enumeration constants must belong to a _FAMILY");
+ TL_IS_214 = Str__literal(L"this enumeration _FAMILY is unknown");
+ TL_IS_215 = Str__literal(L"this enumeration _FAMILY already exists");
+ TL_IS_216 = Str__literal(L"unrecognised interface line");
TL_IS_217 = Str__literal(L"makescript.txt");
- TL_IS_218 = Str__literal(L"gitignorescript.txt");
+ TL_IS_218 = Str__literal(L"makescript.txt");
TL_IS_219 = Str__literal(L"gitignorescript.txt");
- TL_IS_220 = Str__literal(L"");
- TL_IS_221 = Str__literal(L"Chapters");
- TL_IS_222 = Str__literal(L"Modules");
- TL_IS_223 = Str__literal(L"Module Page");
- TL_IS_224 = Str__literal(L"Module Purpose");
- TL_IS_225 = Str__literal(L"Purpose");
- TL_IS_226 = Str__literal(L"Chapter Purpose");
- TL_IS_227 = Str__literal(L"Section Purpose");
- TL_IS_228 = Str__literal(L"Purpose");
- TL_IS_229 = Str__literal(L"index.html");
- TL_IS_230 = Str__literal(L"inweb");
+ TL_IS_220 = Str__literal(L"gitignorescript.txt");
+ TL_IS_221 = Str__literal(L"");
+ TL_IS_222 = Str__literal(L"Chapters");
+ TL_IS_223 = Str__literal(L"Modules");
+ TL_IS_224 = Str__literal(L"Module Page");
+ TL_IS_225 = Str__literal(L"Module Purpose");
+ TL_IS_226 = Str__literal(L"Purpose");
+ TL_IS_227 = Str__literal(L"Chapter Purpose");
+ TL_IS_228 = Str__literal(L"Section Purpose");
+ TL_IS_229 = Str__literal(L"Purpose");
+ TL_IS_230 = Str__literal(L"index.html");
TL_IS_231 = Str__literal(L"inweb");
TL_IS_232 = Str__literal(L"inweb");
- TL_IS_233 = Str__literal(L"End of weave");
- TL_IS_234 = Str__literal(L"Definitions");
- TL_IS_235 = Str__literal(L"bad start to paragraph");
- TL_IS_236 = Str__literal(L"");
+ TL_IS_233 = Str__literal(L"inweb");
+ TL_IS_234 = Str__literal(L"End of weave");
+ TL_IS_235 = Str__literal(L"Definitions");
+ TL_IS_236 = Str__literal(L"bad start to paragraph");
TL_IS_237 = Str__literal(L"");
- TL_IS_238 = Str__literal(L"footnote never cued");
- TL_IS_239 = Str__literal(L"define");
- TL_IS_240 = Str__literal(L"enum");
- TL_IS_241 = Str__literal(L"This code is ");
- TL_IS_242 = Str__literal(L"never used");
- TL_IS_243 = Str__literal(L", ");
- TL_IS_244 = Str__literal(L" and ");
- TL_IS_245 = Str__literal(L"used in ");
- TL_IS_246 = Str__literal(L" (twice)");
- TL_IS_247 = Str__literal(L" (three times)");
- TL_IS_248 = Str__literal(L" (four times)");
- TL_IS_249 = Str__literal(L" (five times)");
- TL_IS_250 = Str__literal(L".");
- TL_IS_251 = Str__literal(L"The structure ");
- TL_IS_252 = Str__literal(L" is private to this section");
- TL_IS_253 = Str__literal(L" is accessed in ");
- TL_IS_254 = Str__literal(L", ");
- TL_IS_255 = Str__literal(L" and here");
- TL_IS_256 = Str__literal(L".");
- TL_IS_257 = Str__literal(L"The function ");
- TL_IS_258 = Str__literal(L" appears nowhere else");
- TL_IS_259 = Str__literal(L"none");
- TL_IS_260 = Str__literal(L")");
- TL_IS_261 = Str__literal(L".");
- TL_IS_262 = Str__literal(L" is used in ");
- TL_IS_263 = Str__literal(L"), ");
- TL_IS_264 = Str__literal(L", ");
- TL_IS_265 = Str__literal(L" (");
- TL_IS_266 = Str__literal(L" - ");
- TL_IS_267 = Str__literal(L", ");
- TL_IS_268 = Str__literal(L"Code In Code Comments Notation");
- TL_IS_269 = Str__literal(L"Code In Commentary Notation");
- TL_IS_270 = Str__literal(L"Off");
- TL_IS_271 = Str__literal(L"TeX Mathematics Displayed Notation");
- TL_IS_272 = Str__literal(L"Off");
- TL_IS_273 = Str__literal(L"TeX Mathematics Notation");
- TL_IS_274 = Str__literal(L"Off");
- TL_IS_275 = Str__literal(L"Cross-References Notation");
- TL_IS_276 = Str__literal(L"Off");
- TL_IS_277 = Str__literal(L"http://");
- TL_IS_278 = Str__literal(L"https://");
- TL_IS_279 = Str__literal(L"this is a cue for a missing note");
- TL_IS_280 = Str__literal(L"Cross-References Notation");
- TL_IS_281 = Str__literal(L"Off");
- TL_IS_282 = Str__literal(L"http://");
- TL_IS_283 = Str__literal(L"https://");
- TL_IS_284 = Str__literal(L"misplaced definition");
- TL_IS_285 = Str__literal(L"unknown macro");
- TL_IS_286 = Str__literal(L"Dialects");
- TL_IS_287 = Str__literal(L"C");
- TL_IS_288 = Str__literal(L"Languages");
- TL_IS_289 = Str__literal(L"InC");
- TL_IS_290 = Str__literal(L"Name");
- TL_IS_291 = Str__literal(L"Details");
- TL_IS_292 = Str__literal(L"Extension");
- TL_IS_293 = Str__literal(L"Line Comment");
- TL_IS_294 = Str__literal(L"Whole Line Comment");
- TL_IS_295 = Str__literal(L"Multiline Comment Open");
- TL_IS_296 = Str__literal(L"Multiline Comment Close");
- TL_IS_297 = Str__literal(L"String Literal");
- TL_IS_298 = Str__literal(L"String Literal Escape");
- TL_IS_299 = Str__literal(L"Character Literal");
- TL_IS_300 = Str__literal(L"Character Literal Escape");
- TL_IS_301 = Str__literal(L"Binary Literal Prefix");
- TL_IS_302 = Str__literal(L"Octal Literal Prefix");
- TL_IS_303 = Str__literal(L"Hexadecimal Literal Prefix");
- TL_IS_304 = Str__literal(L"Negative Literal Prefix");
- TL_IS_305 = Str__literal(L"Shebang");
- TL_IS_306 = Str__literal(L"Line Marker");
- TL_IS_307 = Str__literal(L"Before Named Paragraph Expansion");
- TL_IS_308 = Str__literal(L"After Named Paragraph Expansion");
- TL_IS_309 = Str__literal(L"Start Definition");
- TL_IS_310 = Str__literal(L"Prolong Definition");
- TL_IS_311 = Str__literal(L"End Definition");
- TL_IS_312 = Str__literal(L"Start Ifdef");
- TL_IS_313 = Str__literal(L"Start Ifndef");
- TL_IS_314 = Str__literal(L"End Ifdef");
- TL_IS_315 = Str__literal(L"End Ifndef");
- TL_IS_316 = Str__literal(L"C-Like");
- TL_IS_317 = Str__literal(L"Suppress Disclaimer");
- TL_IS_318 = Str__literal(L"Supports Namespaces");
- TL_IS_319 = Str__literal(L"Function Declaration Notation");
- TL_IS_320 = Str__literal(L"Type Declaration Notation");
- TL_IS_321 = Str__literal(L"}");
- TL_IS_322 = Str__literal(L"unquoted");
- TL_IS_323 = Str__literal(L"{");
- TL_IS_324 = Str__literal(L"debug");
- TL_IS_325 = Str__literal(L"!string");
- TL_IS_326 = Str__literal(L"!function");
- TL_IS_327 = Str__literal(L"!definition");
- TL_IS_328 = Str__literal(L"!reserved");
- TL_IS_329 = Str__literal(L"!element");
- TL_IS_330 = Str__literal(L"!identifier");
- TL_IS_331 = Str__literal(L"!character");
- TL_IS_332 = Str__literal(L"!constant");
- TL_IS_333 = Str__literal(L"!plain");
- TL_IS_334 = Str__literal(L"!extract");
- TL_IS_335 = Str__literal(L"!comment");
- TL_IS_336 = Str__literal(L"true");
- TL_IS_337 = Str__literal(L"false");
- TL_IS_338 = Str__literal(L"both");
- TL_IS_339 = Str__literal(L"brackets");
- TL_IS_340 = Str__literal(L"characters");
- TL_IS_341 = Str__literal(L"coloured");
- TL_IS_342 = Str__literal(L"colouring");
- TL_IS_343 = Str__literal(L"debug");
- TL_IS_344 = Str__literal(L"false");
- TL_IS_345 = Str__literal(L"in");
- TL_IS_346 = Str__literal(L"instances");
- TL_IS_347 = Str__literal(L"keyword");
- TL_IS_348 = Str__literal(L"matches");
- TL_IS_349 = Str__literal(L"matching");
- TL_IS_350 = Str__literal(L"not");
- TL_IS_351 = Str__literal(L"of");
- TL_IS_352 = Str__literal(L"on");
- TL_IS_353 = Str__literal(L"optionally");
- TL_IS_354 = Str__literal(L"prefix");
- TL_IS_355 = Str__literal(L"runs");
- TL_IS_356 = Str__literal(L"spaced");
- TL_IS_357 = Str__literal(L"suffix");
- TL_IS_358 = Str__literal(L"true");
- TL_IS_359 = Str__literal(L"unquoted");
- TL_IS_360 = Str__literal(L"Structures");
- TL_IS_361 = Str__literal(L"Main::");
- TL_IS_362 = Str__literal(L"Tangled output generated by inweb: do not edit");
- TL_IS_363 = Str__literal(L"this programming language does not support @d");
- TL_IS_364 = Str__literal(L"this programming language does not support multiline @d");
- TL_IS_365 = Str__literal(L"Namespaces");
- TL_IS_366 = Str__literal(L"Being internally called, this function mustn't belong to a :: namespace");
- TL_IS_367 = Str__literal(L"Being externally called, this function must belong to a :: namespace");
- TL_IS_368 = Str__literal(L"Structures");
- TL_IS_369 = Str__literal(L"program ended with conditional compilation open");
- TL_IS_370 = Str__literal(L"conditional compilation too deeply nested");
- TL_IS_371 = Str__literal(L"found #endif without #ifdef or #ifndef");
- TL_IS_372 = Str__literal(L"quartz");
+ TL_IS_238 = Str__literal(L"");
+ TL_IS_239 = Str__literal(L"footnote never cued");
+ TL_IS_240 = Str__literal(L"define");
+ TL_IS_241 = Str__literal(L"enum");
+ TL_IS_242 = Str__literal(L"This code is ");
+ TL_IS_243 = Str__literal(L"never used");
+ TL_IS_244 = Str__literal(L", ");
+ TL_IS_245 = Str__literal(L" and ");
+ TL_IS_246 = Str__literal(L"used in ");
+ TL_IS_247 = Str__literal(L" (twice)");
+ TL_IS_248 = Str__literal(L" (three times)");
+ TL_IS_249 = Str__literal(L" (four times)");
+ TL_IS_250 = Str__literal(L" (five times)");
+ TL_IS_251 = Str__literal(L".");
+ TL_IS_252 = Str__literal(L"The structure ");
+ TL_IS_253 = Str__literal(L" is private to this section");
+ TL_IS_254 = Str__literal(L" is accessed in ");
+ TL_IS_255 = Str__literal(L", ");
+ TL_IS_256 = Str__literal(L" and here");
+ TL_IS_257 = Str__literal(L".");
+ TL_IS_258 = Str__literal(L"The function ");
+ TL_IS_259 = Str__literal(L" appears nowhere else");
+ TL_IS_260 = Str__literal(L"none");
+ TL_IS_261 = Str__literal(L")");
+ TL_IS_262 = Str__literal(L".");
+ TL_IS_263 = Str__literal(L" is used in ");
+ TL_IS_264 = Str__literal(L"), ");
+ TL_IS_265 = Str__literal(L", ");
+ TL_IS_266 = Str__literal(L" (");
+ TL_IS_267 = Str__literal(L" - ");
+ TL_IS_268 = Str__literal(L", ");
+ TL_IS_269 = Str__literal(L"Code In Code Comments Notation");
+ TL_IS_270 = Str__literal(L"Code In Commentary Notation");
+ TL_IS_271 = Str__literal(L"Off");
+ TL_IS_272 = Str__literal(L"TeX Mathematics Displayed Notation");
+ TL_IS_273 = Str__literal(L"Off");
+ TL_IS_274 = Str__literal(L"TeX Mathematics Notation");
+ TL_IS_275 = Str__literal(L"Off");
+ TL_IS_276 = Str__literal(L"Cross-References Notation");
+ TL_IS_277 = Str__literal(L"Off");
+ TL_IS_278 = Str__literal(L"http://");
+ TL_IS_279 = Str__literal(L"https://");
+ TL_IS_280 = Str__literal(L"this is a cue for a missing note");
+ TL_IS_281 = Str__literal(L"Cross-References Notation");
+ TL_IS_282 = Str__literal(L"Off");
+ TL_IS_283 = Str__literal(L"http://");
+ TL_IS_284 = Str__literal(L"https://");
+ TL_IS_285 = Str__literal(L"misplaced definition");
+ TL_IS_286 = Str__literal(L"unknown macro");
+ TL_IS_287 = Str__literal(L"Dialects");
+ TL_IS_288 = Str__literal(L"C");
+ TL_IS_289 = Str__literal(L"Languages");
+ TL_IS_290 = Str__literal(L"InC");
+ TL_IS_291 = Str__literal(L"Name");
+ TL_IS_292 = Str__literal(L"Details");
+ TL_IS_293 = Str__literal(L"Extension");
+ TL_IS_294 = Str__literal(L"Line Comment");
+ TL_IS_295 = Str__literal(L"Whole Line Comment");
+ TL_IS_296 = Str__literal(L"Multiline Comment Open");
+ TL_IS_297 = Str__literal(L"Multiline Comment Close");
+ TL_IS_298 = Str__literal(L"String Literal");
+ TL_IS_299 = Str__literal(L"String Literal Escape");
+ TL_IS_300 = Str__literal(L"Character Literal");
+ TL_IS_301 = Str__literal(L"Character Literal Escape");
+ TL_IS_302 = Str__literal(L"Binary Literal Prefix");
+ TL_IS_303 = Str__literal(L"Octal Literal Prefix");
+ TL_IS_304 = Str__literal(L"Hexadecimal Literal Prefix");
+ TL_IS_305 = Str__literal(L"Negative Literal Prefix");
+ TL_IS_306 = Str__literal(L"Shebang");
+ TL_IS_307 = Str__literal(L"Line Marker");
+ TL_IS_308 = Str__literal(L"Before Named Paragraph Expansion");
+ TL_IS_309 = Str__literal(L"After Named Paragraph Expansion");
+ TL_IS_310 = Str__literal(L"Start Definition");
+ TL_IS_311 = Str__literal(L"Prolong Definition");
+ TL_IS_312 = Str__literal(L"End Definition");
+ TL_IS_313 = Str__literal(L"Start Ifdef");
+ TL_IS_314 = Str__literal(L"Start Ifndef");
+ TL_IS_315 = Str__literal(L"End Ifdef");
+ TL_IS_316 = Str__literal(L"End Ifndef");
+ TL_IS_317 = Str__literal(L"C-Like");
+ TL_IS_318 = Str__literal(L"Suppress Disclaimer");
+ TL_IS_319 = Str__literal(L"Supports Namespaces");
+ TL_IS_320 = Str__literal(L"Function Declaration Notation");
+ TL_IS_321 = Str__literal(L"Type Declaration Notation");
+ TL_IS_322 = Str__literal(L"}");
+ TL_IS_323 = Str__literal(L"unquoted");
+ TL_IS_324 = Str__literal(L"{");
+ TL_IS_325 = Str__literal(L"debug");
+ TL_IS_326 = Str__literal(L"!string");
+ TL_IS_327 = Str__literal(L"!function");
+ TL_IS_328 = Str__literal(L"!definition");
+ TL_IS_329 = Str__literal(L"!reserved");
+ TL_IS_330 = Str__literal(L"!element");
+ TL_IS_331 = Str__literal(L"!identifier");
+ TL_IS_332 = Str__literal(L"!character");
+ TL_IS_333 = Str__literal(L"!constant");
+ TL_IS_334 = Str__literal(L"!plain");
+ TL_IS_335 = Str__literal(L"!extract");
+ TL_IS_336 = Str__literal(L"!comment");
+ TL_IS_337 = Str__literal(L"true");
+ TL_IS_338 = Str__literal(L"false");
+ TL_IS_339 = Str__literal(L"both");
+ TL_IS_340 = Str__literal(L"brackets");
+ TL_IS_341 = Str__literal(L"characters");
+ TL_IS_342 = Str__literal(L"coloured");
+ TL_IS_343 = Str__literal(L"colouring");
+ TL_IS_344 = Str__literal(L"debug");
+ TL_IS_345 = Str__literal(L"false");
+ TL_IS_346 = Str__literal(L"in");
+ TL_IS_347 = Str__literal(L"instances");
+ TL_IS_348 = Str__literal(L"keyword");
+ TL_IS_349 = Str__literal(L"matches");
+ TL_IS_350 = Str__literal(L"matching");
+ TL_IS_351 = Str__literal(L"not");
+ TL_IS_352 = Str__literal(L"of");
+ TL_IS_353 = Str__literal(L"on");
+ TL_IS_354 = Str__literal(L"optionally");
+ TL_IS_355 = Str__literal(L"prefix");
+ TL_IS_356 = Str__literal(L"runs");
+ TL_IS_357 = Str__literal(L"spaced");
+ TL_IS_358 = Str__literal(L"suffix");
+ TL_IS_359 = Str__literal(L"true");
+ TL_IS_360 = Str__literal(L"unquoted");
+ TL_IS_361 = Str__literal(L"Structures");
+ TL_IS_362 = Str__literal(L"Main::");
+ TL_IS_363 = Str__literal(L"Tangled output generated by inweb: do not edit");
+ TL_IS_364 = Str__literal(L"this programming language does not support @d");
+ TL_IS_365 = Str__literal(L"this programming language does not support multiline @d");
+ TL_IS_366 = Str__literal(L"Namespaces");
+ TL_IS_367 = Str__literal(L"Being internally called, this function mustn't belong to a :: namespace");
+ TL_IS_368 = Str__literal(L"Being externally called, this function must belong to a :: namespace");
+ TL_IS_369 = Str__literal(L"Structures");
+ TL_IS_370 = Str__literal(L"program ended with conditional compilation open");
+ TL_IS_371 = Str__literal(L"conditional compilation too deeply nested");
+ TL_IS_372 = Str__literal(L"found #endif without #ifdef or #ifndef");
TL_IS_373 = Str__literal(L"quartz");
TL_IS_374 = Str__literal(L"quartz");
- TL_IS_375 = Str__literal(L"like this");
- TL_IS_376 = Str__literal(L"most_recent_result");
- TL_IS_377 = Str__literal(L"most_recent_result_p");
- TL_IS_378 = Str__literal(L"Syntax.preform");
- TL_IS_379 = Str__literal(L"Preform Language");
+ TL_IS_375 = Str__literal(L"quartz");
+ TL_IS_376 = Str__literal(L"like this");
+ TL_IS_377 = Str__literal(L"most_recent_result");
+ TL_IS_378 = Str__literal(L"most_recent_result_p");
+ TL_IS_379 = Str__literal(L"Syntax.preform");
TL_IS_380 = Str__literal(L"Preform Language");
- TL_IS_381 = Str__literal(L"weave tree");
- TL_IS_382 = Str__literal(L"document");
- TL_IS_383 = Str__literal(L"head");
- TL_IS_384 = Str__literal(L"body");
- TL_IS_385 = Str__literal(L"tail");
- TL_IS_386 = Str__literal(L"chapter footer");
- TL_IS_387 = Str__literal(L"chapter header");
- TL_IS_388 = Str__literal(L"section footer");
- TL_IS_389 = Str__literal(L"section header");
- TL_IS_390 = Str__literal(L"section purpose");
- TL_IS_391 = Str__literal(L"subheading");
- TL_IS_392 = Str__literal(L"bar");
- TL_IS_393 = Str__literal(L"pagebreak");
- TL_IS_394 = Str__literal(L"linebreak");
- TL_IS_395 = Str__literal(L"paragraph");
- TL_IS_396 = Str__literal(L"endnote");
- TL_IS_397 = Str__literal(L"figure");
- TL_IS_398 = Str__literal(L"audio");
- TL_IS_399 = Str__literal(L"video");
- TL_IS_400 = Str__literal(L"download");
- TL_IS_401 = Str__literal(L"material");
- TL_IS_402 = Str__literal(L"embed");
- TL_IS_403 = Str__literal(L"pmac");
- TL_IS_404 = Str__literal(L"vskip");
- TL_IS_405 = Str__literal(L"chapter");
- TL_IS_406 = Str__literal(L"section");
- TL_IS_407 = Str__literal(L"code line");
- TL_IS_408 = Str__literal(L"function usage");
- TL_IS_409 = Str__literal(L"commentary");
- TL_IS_410 = Str__literal(L"carousel slide");
- TL_IS_411 = Str__literal(L"toc");
- TL_IS_412 = Str__literal(L"toc line");
- TL_IS_413 = Str__literal(L"chapter_title_page");
- TL_IS_414 = Str__literal(L"defn");
- TL_IS_415 = Str__literal(L"source_code");
- TL_IS_416 = Str__literal(L"url");
- TL_IS_417 = Str__literal(L"footnote_cue");
- TL_IS_418 = Str__literal(L"footnote");
- TL_IS_419 = Str__literal(L"display line");
- TL_IS_420 = Str__literal(L"function defn");
- TL_IS_421 = Str__literal(L"item");
- TL_IS_422 = Str__literal(L"grammar index");
- TL_IS_423 = Str__literal(L"inline");
- TL_IS_424 = Str__literal(L"locale");
- TL_IS_425 = Str__literal(L"mathematics");
- TL_IS_426 = Str__literal(L"verbatim");
- TL_IS_427 = Str__literal(L"Weave Content");
- TL_IS_428 = Str__literal(L"plain");
- TL_IS_429 = Str__literal(L".txt");
- TL_IS_430 = Str__literal(L"TeX");
- TL_IS_431 = Str__literal(L".tex");
- TL_IS_432 = Str__literal(L"S");
- TL_IS_433 = Str__literal(L"");
- TL_IS_434 = Str__literal(L"Figures");
- TL_IS_435 = Str__literal(L"weavesection");
- TL_IS_436 = Str__literal(L"weavesections");
- TL_IS_437 = Str__literal(L"weavesectionss");
- TL_IS_438 = Str__literal(L"weavesectionsss");
- TL_IS_439 = Str__literal(L"tweavesection");
- TL_IS_440 = Str__literal(L"tweavesections");
- TL_IS_441 = Str__literal(L"tweavesectionss");
- TL_IS_442 = Str__literal(L"tweavesectionsss");
- TL_IS_443 = Str__literal(L"nsweavesection");
- TL_IS_444 = Str__literal(L"nsweavesections");
- TL_IS_445 = Str__literal(L"HTML");
- TL_IS_446 = Str__literal(L".html");
- TL_IS_447 = Str__literal(L"ePub");
- TL_IS_448 = Str__literal(L".html");
- TL_IS_449 = Str__literal(L"");
- TL_IS_450 = Str__literal(L"private copy");
- TL_IS_451 = Str__literal(L"Base");
- TL_IS_452 = Str__literal(L"Colours");
- TL_IS_453 = Str__literal(L"");
+ TL_IS_381 = Str__literal(L"Preform Language");
+ TL_IS_382 = Str__literal(L"weave tree");
+ TL_IS_383 = Str__literal(L"document");
+ TL_IS_384 = Str__literal(L"head");
+ TL_IS_385 = Str__literal(L"body");
+ TL_IS_386 = Str__literal(L"tail");
+ TL_IS_387 = Str__literal(L"chapter footer");
+ TL_IS_388 = Str__literal(L"chapter header");
+ TL_IS_389 = Str__literal(L"section footer");
+ TL_IS_390 = Str__literal(L"section header");
+ TL_IS_391 = Str__literal(L"section purpose");
+ TL_IS_392 = Str__literal(L"subheading");
+ TL_IS_393 = Str__literal(L"bar");
+ TL_IS_394 = Str__literal(L"pagebreak");
+ TL_IS_395 = Str__literal(L"linebreak");
+ TL_IS_396 = Str__literal(L"paragraph");
+ TL_IS_397 = Str__literal(L"endnote");
+ TL_IS_398 = Str__literal(L"figure");
+ TL_IS_399 = Str__literal(L"audio");
+ TL_IS_400 = Str__literal(L"video");
+ TL_IS_401 = Str__literal(L"download");
+ TL_IS_402 = Str__literal(L"material");
+ TL_IS_403 = Str__literal(L"embed");
+ TL_IS_404 = Str__literal(L"pmac");
+ TL_IS_405 = Str__literal(L"vskip");
+ TL_IS_406 = Str__literal(L"chapter");
+ TL_IS_407 = Str__literal(L"section");
+ TL_IS_408 = Str__literal(L"code line");
+ TL_IS_409 = Str__literal(L"function usage");
+ TL_IS_410 = Str__literal(L"commentary");
+ TL_IS_411 = Str__literal(L"carousel slide");
+ TL_IS_412 = Str__literal(L"toc");
+ TL_IS_413 = Str__literal(L"toc line");
+ TL_IS_414 = Str__literal(L"chapter_title_page");
+ TL_IS_415 = Str__literal(L"defn");
+ TL_IS_416 = Str__literal(L"source_code");
+ TL_IS_417 = Str__literal(L"url");
+ TL_IS_418 = Str__literal(L"footnote_cue");
+ TL_IS_419 = Str__literal(L"footnote");
+ TL_IS_420 = Str__literal(L"display line");
+ TL_IS_421 = Str__literal(L"function defn");
+ TL_IS_422 = Str__literal(L"item");
+ TL_IS_423 = Str__literal(L"grammar index");
+ TL_IS_424 = Str__literal(L"inline");
+ TL_IS_425 = Str__literal(L"locale");
+ TL_IS_426 = Str__literal(L"mathematics");
+ TL_IS_427 = Str__literal(L"verbatim");
+ TL_IS_428 = Str__literal(L"Weave Content");
+ TL_IS_429 = Str__literal(L"plain");
+ TL_IS_430 = Str__literal(L".txt");
+ TL_IS_431 = Str__literal(L"TeX");
+ TL_IS_432 = Str__literal(L".tex");
+ TL_IS_433 = Str__literal(L"S");
+ TL_IS_434 = Str__literal(L"");
+ TL_IS_435 = Str__literal(L"Figures");
+ TL_IS_436 = Str__literal(L"weavesection");
+ TL_IS_437 = Str__literal(L"weavesections");
+ TL_IS_438 = Str__literal(L"weavesectionss");
+ TL_IS_439 = Str__literal(L"weavesectionsss");
+ TL_IS_440 = Str__literal(L"tweavesection");
+ TL_IS_441 = Str__literal(L"tweavesections");
+ TL_IS_442 = Str__literal(L"tweavesectionss");
+ TL_IS_443 = Str__literal(L"tweavesectionsss");
+ TL_IS_444 = Str__literal(L"nsweavesection");
+ TL_IS_445 = Str__literal(L"nsweavesections");
+ TL_IS_446 = Str__literal(L"HTML");
+ TL_IS_447 = Str__literal(L".html");
+ TL_IS_448 = Str__literal(L"ePub");
+ TL_IS_449 = Str__literal(L".html");
+ TL_IS_450 = Str__literal(L"");
+ TL_IS_451 = Str__literal(L"private copy");
+ TL_IS_452 = Str__literal(L"Base");
+ TL_IS_453 = Str__literal(L"Colours");
TL_IS_454 = Str__literal(L"");
- TL_IS_455 = Str__literal(L"Breadcrumbs");
- TL_IS_456 = Str__literal(L"Title");
- TL_IS_457 = Str__literal(L"Short Title");
+ TL_IS_455 = Str__literal(L"");
+ TL_IS_456 = Str__literal(L"Breadcrumbs");
+ TL_IS_457 = Str__literal(L"Title");
TL_IS_458 = Str__literal(L"Short Title");
- TL_IS_459 = Str__literal(L"index.html");
- TL_IS_460 = Str__literal(L"S");
- TL_IS_461 = Str__literal(L"Sequential Section Ranges");
- TL_IS_462 = Str__literal(L"On");
- TL_IS_463 = Str__literal(L"Figures");
- TL_IS_464 = Str__literal(L"Audio");
- TL_IS_465 = Str__literal(L"Video");
- TL_IS_466 = Str__literal(L"Downloads");
- TL_IS_467 = Str__literal(L"405");
- TL_IS_468 = Str__literal(L"720");
- TL_IS_469 = Str__literal(L"Embedding");
- TL_IS_470 = Str__literal(L"This is not a supported service");
- TL_IS_471 = Str__literal(L"Content ID");
- TL_IS_472 = Str__literal(L"Content Width");
- TL_IS_473 = Str__literal(L"Content Height");
- TL_IS_474 = Str__literal(L"named-paragraph-link");
- TL_IS_475 = Str__literal(L"function-link");
- TL_IS_476 = Str__literal(L"Carousel");
- TL_IS_477 = Str__literal(L"carousel-number");
- TL_IS_478 = Str__literal(L"carousel-caption");
- TL_IS_479 = Str__literal(L"carousel-caption-above");
- TL_IS_480 = Str__literal(L"carousel-number-above");
- TL_IS_481 = Str__literal(L"carousel-caption-below");
- TL_IS_482 = Str__literal(L"carousel-number-below");
- TL_IS_483 = Str__literal(L"external");
- TL_IS_484 = Str__literal(L"internal");
- TL_IS_485 = Str__literal(L"Popups");
- TL_IS_486 = Str__literal(L"Title");
- TL_IS_487 = Str__literal(L"Base");
- TL_IS_488 = Str__literal(L"Base.css");
- TL_IS_489 = Str__literal(L"TestingInweb");
- TL_IS_490 = Str__literal(L".txt");
- TL_IS_491 = Str__literal(L".pdf");
- TL_IS_492 = Str__literal(L"not");
- TL_IS_493 = Str__literal(L"leq");
- TL_IS_494 = Str__literal(L"geq");
- TL_IS_495 = Str__literal(L"sim");
- TL_IS_496 = Str__literal(L"hbox");
- TL_IS_497 = Str__literal(L"left");
- TL_IS_498 = Str__literal(L"right");
- TL_IS_499 = Str__literal(L"Rightarrow");
- TL_IS_500 = Str__literal(L"Leftrightarrow");
- TL_IS_501 = Str__literal(L"to");
- TL_IS_502 = Str__literal(L"rightarrow");
- TL_IS_503 = Str__literal(L"longrightarrow");
- TL_IS_504 = Str__literal(L"leftarrow");
- TL_IS_505 = Str__literal(L"longleftarrow");
- TL_IS_506 = Str__literal(L"lbrace");
- TL_IS_507 = Str__literal(L"mid");
- TL_IS_508 = Str__literal(L"rbrace");
- TL_IS_509 = Str__literal(L"cdot");
- TL_IS_510 = Str__literal(L"cdots");
- TL_IS_511 = Str__literal(L"dots");
- TL_IS_512 = Str__literal(L"times");
- TL_IS_513 = Str__literal(L"quad");
- TL_IS_514 = Str__literal(L"qquad");
- TL_IS_515 = Str__literal(L"TeX");
- TL_IS_516 = Str__literal(L"neq");
- TL_IS_517 = Str__literal(L"noteq");
- TL_IS_518 = Str__literal(L"ell");
- TL_IS_519 = Str__literal(L"log");
- TL_IS_520 = Str__literal(L"exp");
- TL_IS_521 = Str__literal(L"sin");
- TL_IS_522 = Str__literal(L"cos");
- TL_IS_523 = Str__literal(L"tan");
- TL_IS_524 = Str__literal(L"top");
- TL_IS_525 = Str__literal(L"Alpha");
- TL_IS_526 = Str__literal(L"Beta");
- TL_IS_527 = Str__literal(L"Gamma");
- TL_IS_528 = Str__literal(L"Delta");
- TL_IS_529 = Str__literal(L"Epsilon");
- TL_IS_530 = Str__literal(L"Zeta");
- TL_IS_531 = Str__literal(L"Eta");
- TL_IS_532 = Str__literal(L"Theta");
- TL_IS_533 = Str__literal(L"Iota");
- TL_IS_534 = Str__literal(L"Kappa");
- TL_IS_535 = Str__literal(L"Lambda");
- TL_IS_536 = Str__literal(L"Mu");
- TL_IS_537 = Str__literal(L"Nu");
- TL_IS_538 = Str__literal(L"Xi");
- TL_IS_539 = Str__literal(L"Omicron");
- TL_IS_540 = Str__literal(L"Pi");
- TL_IS_541 = Str__literal(L"Rho");
- TL_IS_542 = Str__literal(L"Varsigma");
- TL_IS_543 = Str__literal(L"Sigma");
- TL_IS_544 = Str__literal(L"Tau");
- TL_IS_545 = Str__literal(L"Upsilon");
- TL_IS_546 = Str__literal(L"Phi");
- TL_IS_547 = Str__literal(L"Chi");
- TL_IS_548 = Str__literal(L"Psi");
- TL_IS_549 = Str__literal(L"Omega");
- TL_IS_550 = Str__literal(L"alpha");
- TL_IS_551 = Str__literal(L"beta");
- TL_IS_552 = Str__literal(L"gamma");
- TL_IS_553 = Str__literal(L"delta");
- TL_IS_554 = Str__literal(L"epsilon");
- TL_IS_555 = Str__literal(L"zeta");
- TL_IS_556 = Str__literal(L"eta");
- TL_IS_557 = Str__literal(L"theta");
- TL_IS_558 = Str__literal(L"iota");
- TL_IS_559 = Str__literal(L"kappa");
- TL_IS_560 = Str__literal(L"lambda");
- TL_IS_561 = Str__literal(L"mu");
- TL_IS_562 = Str__literal(L"nu");
- TL_IS_563 = Str__literal(L"xi");
- TL_IS_564 = Str__literal(L"omicron");
- TL_IS_565 = Str__literal(L"pi");
- TL_IS_566 = Str__literal(L"rho");
- TL_IS_567 = Str__literal(L"varsigma");
- TL_IS_568 = Str__literal(L"sigma");
- TL_IS_569 = Str__literal(L"tau");
- TL_IS_570 = Str__literal(L"upsilon");
- TL_IS_571 = Str__literal(L"phi");
- TL_IS_572 = Str__literal(L"chi");
- TL_IS_573 = Str__literal(L"psi");
- TL_IS_574 = Str__literal(L"omega");
- TL_IS_575 = Str__literal(L"exists");
- TL_IS_576 = Str__literal(L"in");
- TL_IS_577 = Str__literal(L"forall");
- TL_IS_578 = Str__literal(L"cap");
- TL_IS_579 = Str__literal(L"emptyset");
- TL_IS_580 = Str__literal(L"subseteq");
- TL_IS_581 = Str__literal(L"land");
- TL_IS_582 = Str__literal(L"lor");
- TL_IS_583 = Str__literal(L"lnot");
- TL_IS_584 = Str__literal(L"sum");
- TL_IS_585 = Str__literal(L"prod");
- TL_IS_586 = Str__literal(L"n");
- TL_IS_587 = Str__literal(L"t");
- TL_IS_588 = Str__literal(L"exists");
- TL_IS_589 = Str__literal(L"forall");
- TL_IS_590 = Str__literal(L" ");
- TL_IS_591 = Str__literal(L"all");
- TL_IS_592 = Str__literal(L"platform-settings.mk");
- TL_IS_593 = Str__literal(L"intest");
- TL_IS_594 = Str__literal(L"all");
- TL_IS_595 = Str__literal(L"gitignorescript.txt");
- TL_IS_596 = Str__literal(L"version");
- TL_IS_597 = Str__literal(L"purpose");
- TL_IS_598 = Str__literal(L"var");
- TL_IS_599 = Str__literal(L"\n");
- TL_IS_600 = Str__literal(L"version");
- TL_IS_601 = Str__literal(L"purpose");
- TL_IS_602 = Str__literal(L"var");
- TL_IS_603 = Str__literal(L"Version Number");
- TL_IS_604 = Str__literal(L"Purpose");
- TL_IS_605 = Str__literal(L"Build Date");
- TL_IS_606 = Str__literal(L"Version Number");
- TL_IS_607 = Str__literal(L"inform6");
- TL_IS_608 = Str__literal(L"header.h");
- TL_IS_609 = Str__literal(L"(manifest).txt");
- TL_IS_610 = Str__literal(L"README.txt");
- TL_IS_611 = Str__literal(L"README.md");
- TL_IS_612 = Str__literal(L"docs");
- TL_IS_613 = Str__literal(L"web");
- TL_IS_614 = Str__literal(L"module");
- TL_IS_615 = Str__literal(L".inweb");
- TL_IS_616 = Str__literal(L".inweb");
- TL_IS_617 = Str__literal(L"docs");
- TL_IS_618 = Str__literal(L"Multiple cross-references might be meant here");
- TL_IS_619 = Str__literal(L"(main)");
+ TL_IS_459 = Str__literal(L"Short Title");
+ TL_IS_460 = Str__literal(L"index.html");
+ TL_IS_461 = Str__literal(L"S");
+ TL_IS_462 = Str__literal(L"Sequential Section Ranges");
+ TL_IS_463 = Str__literal(L"On");
+ TL_IS_464 = Str__literal(L"Figures");
+ TL_IS_465 = Str__literal(L"Audio");
+ TL_IS_466 = Str__literal(L"Video");
+ TL_IS_467 = Str__literal(L"Downloads");
+ TL_IS_468 = Str__literal(L"Embedding");
+ TL_IS_469 = Str__literal(L"Download.html");
+ TL_IS_470 = Str__literal(L"Downloads are not supported");
+ TL_IS_471 = Str__literal(L"Downloads");
+ TL_IS_472 = Str__literal(L"Download file missing or empty");
+ TL_IS_473 = Str__literal(L"File Name");
+ TL_IS_474 = Str__literal(L"File URL");
+ TL_IS_475 = Str__literal(L"File Details");
+ TL_IS_476 = Str__literal(L"405");
+ TL_IS_477 = Str__literal(L"720");
+ TL_IS_478 = Str__literal(L"Embedding");
+ TL_IS_479 = Str__literal(L"This is not a supported service");
+ TL_IS_480 = Str__literal(L"Content ID");
+ TL_IS_481 = Str__literal(L"Content Width");
+ TL_IS_482 = Str__literal(L"Content Height");
+ TL_IS_483 = Str__literal(L"named-paragraph-link");
+ TL_IS_484 = Str__literal(L"function-link");
+ TL_IS_485 = Str__literal(L"Carousel");
+ TL_IS_486 = Str__literal(L"carousel-number");
+ TL_IS_487 = Str__literal(L"carousel-caption");
+ TL_IS_488 = Str__literal(L"carousel-caption-above");
+ TL_IS_489 = Str__literal(L"carousel-number-above");
+ TL_IS_490 = Str__literal(L"carousel-caption-below");
+ TL_IS_491 = Str__literal(L"carousel-number-below");
+ TL_IS_492 = Str__literal(L"external");
+ TL_IS_493 = Str__literal(L"internal");
+ TL_IS_494 = Str__literal(L"Popups");
+ TL_IS_495 = Str__literal(L"Title");
+ TL_IS_496 = Str__literal(L"Base");
+ TL_IS_497 = Str__literal(L"Base.css");
+ TL_IS_498 = Str__literal(L"TestingInweb");
+ TL_IS_499 = Str__literal(L".txt");
+ TL_IS_500 = Str__literal(L".pdf");
+ TL_IS_501 = Str__literal(L"not");
+ TL_IS_502 = Str__literal(L"leq");
+ TL_IS_503 = Str__literal(L"geq");
+ TL_IS_504 = Str__literal(L"sim");
+ TL_IS_505 = Str__literal(L"hbox");
+ TL_IS_506 = Str__literal(L"left");
+ TL_IS_507 = Str__literal(L"right");
+ TL_IS_508 = Str__literal(L"Rightarrow");
+ TL_IS_509 = Str__literal(L"Leftrightarrow");
+ TL_IS_510 = Str__literal(L"to");
+ TL_IS_511 = Str__literal(L"rightarrow");
+ TL_IS_512 = Str__literal(L"longrightarrow");
+ TL_IS_513 = Str__literal(L"leftarrow");
+ TL_IS_514 = Str__literal(L"longleftarrow");
+ TL_IS_515 = Str__literal(L"lbrace");
+ TL_IS_516 = Str__literal(L"mid");
+ TL_IS_517 = Str__literal(L"rbrace");
+ TL_IS_518 = Str__literal(L"cdot");
+ TL_IS_519 = Str__literal(L"cdots");
+ TL_IS_520 = Str__literal(L"dots");
+ TL_IS_521 = Str__literal(L"times");
+ TL_IS_522 = Str__literal(L"quad");
+ TL_IS_523 = Str__literal(L"qquad");
+ TL_IS_524 = Str__literal(L"TeX");
+ TL_IS_525 = Str__literal(L"neq");
+ TL_IS_526 = Str__literal(L"noteq");
+ TL_IS_527 = Str__literal(L"ell");
+ TL_IS_528 = Str__literal(L"log");
+ TL_IS_529 = Str__literal(L"exp");
+ TL_IS_530 = Str__literal(L"sin");
+ TL_IS_531 = Str__literal(L"cos");
+ TL_IS_532 = Str__literal(L"tan");
+ TL_IS_533 = Str__literal(L"top");
+ TL_IS_534 = Str__literal(L"Alpha");
+ TL_IS_535 = Str__literal(L"Beta");
+ TL_IS_536 = Str__literal(L"Gamma");
+ TL_IS_537 = Str__literal(L"Delta");
+ TL_IS_538 = Str__literal(L"Epsilon");
+ TL_IS_539 = Str__literal(L"Zeta");
+ TL_IS_540 = Str__literal(L"Eta");
+ TL_IS_541 = Str__literal(L"Theta");
+ TL_IS_542 = Str__literal(L"Iota");
+ TL_IS_543 = Str__literal(L"Kappa");
+ TL_IS_544 = Str__literal(L"Lambda");
+ TL_IS_545 = Str__literal(L"Mu");
+ TL_IS_546 = Str__literal(L"Nu");
+ TL_IS_547 = Str__literal(L"Xi");
+ TL_IS_548 = Str__literal(L"Omicron");
+ TL_IS_549 = Str__literal(L"Pi");
+ TL_IS_550 = Str__literal(L"Rho");
+ TL_IS_551 = Str__literal(L"Varsigma");
+ TL_IS_552 = Str__literal(L"Sigma");
+ TL_IS_553 = Str__literal(L"Tau");
+ TL_IS_554 = Str__literal(L"Upsilon");
+ TL_IS_555 = Str__literal(L"Phi");
+ TL_IS_556 = Str__literal(L"Chi");
+ TL_IS_557 = Str__literal(L"Psi");
+ TL_IS_558 = Str__literal(L"Omega");
+ TL_IS_559 = Str__literal(L"alpha");
+ TL_IS_560 = Str__literal(L"beta");
+ TL_IS_561 = Str__literal(L"gamma");
+ TL_IS_562 = Str__literal(L"delta");
+ TL_IS_563 = Str__literal(L"epsilon");
+ TL_IS_564 = Str__literal(L"zeta");
+ TL_IS_565 = Str__literal(L"eta");
+ TL_IS_566 = Str__literal(L"theta");
+ TL_IS_567 = Str__literal(L"iota");
+ TL_IS_568 = Str__literal(L"kappa");
+ TL_IS_569 = Str__literal(L"lambda");
+ TL_IS_570 = Str__literal(L"mu");
+ TL_IS_571 = Str__literal(L"nu");
+ TL_IS_572 = Str__literal(L"xi");
+ TL_IS_573 = Str__literal(L"omicron");
+ TL_IS_574 = Str__literal(L"pi");
+ TL_IS_575 = Str__literal(L"rho");
+ TL_IS_576 = Str__literal(L"varsigma");
+ TL_IS_577 = Str__literal(L"sigma");
+ TL_IS_578 = Str__literal(L"tau");
+ TL_IS_579 = Str__literal(L"upsilon");
+ TL_IS_580 = Str__literal(L"phi");
+ TL_IS_581 = Str__literal(L"chi");
+ TL_IS_582 = Str__literal(L"psi");
+ TL_IS_583 = Str__literal(L"omega");
+ TL_IS_584 = Str__literal(L"exists");
+ TL_IS_585 = Str__literal(L"in");
+ TL_IS_586 = Str__literal(L"forall");
+ TL_IS_587 = Str__literal(L"cap");
+ TL_IS_588 = Str__literal(L"emptyset");
+ TL_IS_589 = Str__literal(L"subseteq");
+ TL_IS_590 = Str__literal(L"land");
+ TL_IS_591 = Str__literal(L"lor");
+ TL_IS_592 = Str__literal(L"lnot");
+ TL_IS_593 = Str__literal(L"sum");
+ TL_IS_594 = Str__literal(L"prod");
+ TL_IS_595 = Str__literal(L"n");
+ TL_IS_596 = Str__literal(L"t");
+ TL_IS_597 = Str__literal(L"exists");
+ TL_IS_598 = Str__literal(L"forall");
+ TL_IS_599 = Str__literal(L" ");
+ TL_IS_600 = Str__literal(L"all");
+ TL_IS_601 = Str__literal(L"platform-settings.mk");
+ TL_IS_602 = Str__literal(L"intest");
+ TL_IS_603 = Str__literal(L"all");
+ TL_IS_604 = Str__literal(L"gitignorescript.txt");
+ TL_IS_605 = Str__literal(L"version");
+ TL_IS_606 = Str__literal(L"purpose");
+ TL_IS_607 = Str__literal(L"var");
+ TL_IS_608 = Str__literal(L"\n");
+ TL_IS_609 = Str__literal(L"version");
+ TL_IS_610 = Str__literal(L"purpose");
+ TL_IS_611 = Str__literal(L"var");
+ TL_IS_612 = Str__literal(L"Version Number");
+ TL_IS_613 = Str__literal(L"Purpose");
+ TL_IS_614 = Str__literal(L"Build Date");
+ TL_IS_615 = Str__literal(L"Version Number");
+ TL_IS_616 = Str__literal(L"inform6");
+ TL_IS_617 = Str__literal(L"header.h");
+ TL_IS_618 = Str__literal(L"(manifest).txt");
+ TL_IS_619 = Str__literal(L"README.txt");
+ TL_IS_620 = Str__literal(L"README.md");
+ TL_IS_621 = Str__literal(L"docs");
+ TL_IS_622 = Str__literal(L"web");
+ TL_IS_623 = Str__literal(L"module");
+ TL_IS_624 = Str__literal(L".inweb");
+ TL_IS_625 = Str__literal(L".inweb");
+ TL_IS_626 = Str__literal(L"docs");
+ TL_IS_627 = Str__literal(L"Multiple cross-references might be meant here");
+ TL_IS_628 = Str__literal(L"(main)");
}
diff --git a/docs/docs-assets/Downloads.css b/docs/docs-assets/Downloads.css
new file mode 100644
index 0000000..c1b9f07
--- /dev/null
+++ b/docs/docs-assets/Downloads.css
@@ -0,0 +1,16 @@
+div.download-container p {
+ text-align: center;
+}
+
+div.download-container button.download-button {
+ background-color: DodgerBlue;
+ border: none;
+ color: white;
+ padding: 10px 24px;
+ cursor: pointer;
+ font-size: 18px;
+}
+
+div.download-container button.download-button:hover {
+ background-color: RoyalBlue;
+}
diff --git a/docs/docs-assets/download.png b/docs/docs-assets/download.png
new file mode 100644
index 0000000000000000000000000000000000000000..3834ae9212f376c15c032626f6bb1af1ac31bd78
GIT binary patch
literal 1085
zcmaJ=Pe>F|7=N~~iMl}$k#=w#=@7X)GpoDnPHwu+thwdLvb&UY(Q)RfgU-Bh=IO2r
zvRbF0Lw1QkMLN_igbo%(+9eADI~jN>sBTse2K_;{H|lDKwt<=VzK`GU_x;}czPX<0
zKJTfhsQ>_Y;+Ly_W(9)VUWn~y*sviz&Muh(QWSOQkH9}twNUUTEa7gRS
zSumCBPAj=#C9Kk|=ctw}PXu&`Wh$$W7&f1c&^x+3**j^5rgk8BI7085>X8zZfGkJ_
ze5_YtgDe%~d|YEwC=_a-{4B>Zte@fhUM|Ep`gxY6_8yv4v(y1TDR%7DB2k1M!r0^)
zCX>ndGL1fD4KiFf9CkGPelJ0I?Fj?RS+8N&7ZpTkE0$(r4H=Z9DEFf=9HEKR-6QDc
zzN}&IT@$%5CM%l^=VP5C6@ilUf2gkSqivjo2Y&x4Y^Nto$RweS#w>+2ZlK;NW%7ar
zWsIyeLL>*@QLMlK>vZ5JIyn~k{K5p1pHWU~aBQ#O)X`0IWg;+;W5P~5g
z8sNBCG|aV!qe3$$iZOu;u)!i%M9P>B4P4}^2i#Cet}_a{Nh*ub(#E0MVIiH`IWn)6
z_R>^RZ;z{%_7W(`Wr!KZY3yH(E~d!zINSZPCBgpSLxW7aMaH`9zGt5N67ED-I<~#N
zT__Y@POjY`nL{|)ohpD&OY8*_&BVoMI=iv?_W6-1s>=1|dm+D3`JxiTg}QrZ?@qe!
zT&!xiH0u%1xZG7I*uI4d@d|QP*FC)kLF(t1)2~1NUTvPK-I|`S4cwZ2=h`wlzpZVQ
zgZwiv6
Home foundation Chapter 1: Setting Up POSIX Platforms
A version of our operating system interface suitable for POSIX-compliant operating systems.
-
+
-void Main::error_in_web ( text_stream * message , source_line * sl ) {
+void Main::error_in_web ( text_stream * message , source_line * sl ) {
if ( sl ) {
Errors::in_text_file_S ( message , &( sl -> source ));
WRITE_TO ( STDERR , "%07d %S\n" , sl -> source . line_count , sl -> text );
diff --git a/docs/inweb/1-ptt.html b/docs/inweb/1-ptt.html
index 2faba85..cc85f41 100644
--- a/docs/inweb/1-ptt.html
+++ b/docs/inweb/1-ptt.html
@@ -333,7 +333,7 @@ from each other then this routine will lock up into an infinite loop.
-filename * Patterns::find_file_in_subdirectory ( weave_pattern * pattern ,
+filename * Patterns::find_file_in_subdirectory ( weave_pattern * pattern ,
text_stream * dirname , text_stream * leafname ) {
for ( weave_pattern * wp = pattern ; wp ; wp = wp -> based_on ) {
pathname * P = Pathnames::down ( wp -> pattern_location , dirname );
diff --git a/docs/inweb/1-ts.html b/docs/inweb/1-ts.html
index 9100422..7e7bb9f 100644
--- a/docs/inweb/1-ts.html
+++ b/docs/inweb/1-ts.html
@@ -259,7 +259,7 @@ and details of any cover-sheet to use.
-void Swarm::ensure_plugin ( weave_order * wv , text_stream * name ) {
+void Swarm::ensure_plugin ( weave_order * wv , text_stream * name ) {
weave_plugin * existing ;
LOOP_OVER_LINKED_LIST ( existing , weave_plugin , wv -> plugins )
if ( Str::eq_insensitive ( name , existing -> plugin_name ))
diff --git a/docs/inweb/2-tp.html b/docs/inweb/2-tp.html
index 61f45a0..f948cec 100644
--- a/docs/inweb/2-tp.html
+++ b/docs/inweb/2-tp.html
@@ -519,12 +519,22 @@ division in the current section.
L -> text_operand = Str::duplicate ( mr2 . exp [0]);
comment_mode = TRUE ;
} else if (( current_paragraph ) &&
+ ( Regexp::match (& mr2 , mr . exp [0], L "%(download (%c+) \"(%c*)\"%)" ))) {
+ Tags::add_by_name ( L -> owning_paragraph , I "Download" );
+ L -> command_code = DOWNLOAD_CMD ;
+ L -> category = COMMAND_LCAT ;
+ code_lcat_for_body = COMMENT_BODY_LCAT ;
+ L -> text_operand = Str::duplicate ( mr2 . exp [0]);
+ L -> text_operand2 = Str::duplicate ( mr2 . exp [1]);
+ comment_mode = TRUE ;
+ } else if (( current_paragraph ) &&
( Regexp::match (& mr2 , mr . exp [0], L "%(download (%c+)%)" ))) {
Tags::add_by_name ( L -> owning_paragraph , I "Download" );
L -> command_code = DOWNLOAD_CMD ;
L -> category = COMMAND_LCAT ;
code_lcat_for_body = COMMENT_BODY_LCAT ;
L -> text_operand = Str::duplicate ( mr2 . exp [0]);
+ L -> text_operand2 = Str::new ();
comment_mode = TRUE ;
} else if (( current_paragraph ) &&
( Regexp::match (& mr2 , mr . exp [0], L "%(carousel%)" ))) {
diff --git a/docs/inweb/3-tc.html b/docs/inweb/3-tc.html
index d4cf2ff..ec865b9 100644
--- a/docs/inweb/3-tc.html
+++ b/docs/inweb/3-tc.html
@@ -68,7 +68,7 @@ directly.
-void Collater::for_web_and_pattern ( text_stream * OUT , web * W ,
+void Collater::for_web_and_pattern ( text_stream * OUT , web * W ,
weave_pattern * pattern , filename * F , filename * into ) {
Collater::collate ( OUT , W , I "" , F , pattern , NULL , NULL , NULL , into );
}
@@ -635,27 +635,29 @@ used by the HTML renderer, would cause a modest-sized explosion on some pages.
Substitute a Section 5.1.11.8 ;
} else if ( Regexp::match (& mr , varname , L "Docs" )) {
Substitute a Docs 5.1.11.9 ;
+ } else if ( Regexp::match (& mr , varname , L "Assets" )) {
+ Substitute an Assets 5.1.11.10 ;
} else if ( Regexp::match (& mr , varname , L "URL \"(%c+)\"" )) {
text_stream * link_text = mr . exp [0];
- Substitute a URL 5.1.11.10 ;
+ Substitute a URL 5.1.11.11 ;
} else if ( Regexp::match (& mr , varname , L "Link \"(%c+)\"" )) {
text_stream * link_text = mr . exp [0];
- Substitute a Link 5.1.11.11 ;
+ Substitute a Link 5.1.11.12 ;
} else if ( Regexp::match (& mr , varname , L "Menu \"(%c+)\"" )) {
text_stream * menu_name = mr . exp [0];
- Substitute a Menu 5.1.11.12 ;
+ Substitute a Menu 5.1.11.13 ;
} else if ( Regexp::match (& mr , varname , L "Item \"(%c+)\"" )) {
text_stream * item_name = mr . exp [0];
text_stream * icon_text = NULL ;
- Look for icon text 5.1.11.13 ;
+ Look for icon text 5.1.11.14 ;
text_stream * link_text = item_name ;
- Substitute a member Item 5.1.11.14 ;
+ Substitute a member Item 5.1.11.15 ;
} else if ( Regexp::match (& mr , varname , L "Item \"(%c+)\" -> (%c+)" )) {
text_stream * item_name = mr . exp [0];
text_stream * link_text = mr . exp [1];
text_stream * icon_text = NULL ;
- Look for icon text 5.1.11.13 ;
- Substitute a general Item 5.1.11.15 ;
+ Look for icon text 5.1.11.14 ;
+ Substitute a general Item 5.1.11.16 ;
} else {
WRITE_TO ( substituted , "%S" , varname );
if ( Regexp::match (& mr , varname , L "%i+%c*" ))
@@ -862,7 +864,17 @@ navigation purposes.
Pathnames::from_text ( Colonies::home ()));
This code is used in §5.1.11 .
-
+
+
+ pathname * P = Colonies::assets_path ();
+ if ( P == NULL ) P = Filenames::up ( cls -> into_file );
+ Pathnames::relative_URL ( substituted ,
+ Filenames::up ( cls -> into_file ), P );
+
+This code is used in §5.1.11 .
+
@@ -871,7 +883,7 @@ navigation purposes.
Pathnames::from_text ( link_text ));
This code is used in §5.1.11 .
-
@@ -880,7 +892,7 @@ navigation purposes.
WRITE_TO ( substituted , "\">" );
This code is used in §5.1.11 .
-
@@ -889,7 +901,7 @@ navigation purposes.
cls -> inside_navigation_submenu = TRUE ;
This code is used in §5.1.11 .
-
@@ -904,27 +916,27 @@ navigation purposes.
Regexp::dispose_of (& mr );
This code is used in §5.1.11 (twice).
-
TEMPORARY_TEXT ( url );
Colonies::reference_URL ( url , link_text , cls -> into_file );
- Substitute an item at this URL 5.1.11.14.1 ;
+ Substitute an item at this URL 5.1.11.15.1 ;
DISCARD_TEXT ( url );
This code is used in §5.1.11 .
-
TEMPORARY_TEXT ( url );
Colonies::link_URL ( url , link_text , cls -> into_file );
- Substitute an item at this URL 5.1.11.14.1 ;
+ Substitute an item at this URL 5.1.11.15.1 ;
DISCARD_TEXT ( url );
This code is used in §5.1.11 .
-
@@ -933,23 +945,23 @@ navigation purposes.
WRITE_TO ( substituted , "<li>" );
if ( Str::eq ( url , Filenames::get_leafname ( cls -> into_file ))) {
WRITE_TO ( substituted , "<span class=\"unlink\">" );
- Substitute icon and name 5.1.11.14.1.1 ;
+ Substitute icon and name 5.1.11.15.1.1 ;
WRITE_TO ( substituted , "</span>" );
} else if ( Str::eq ( url , I "index.html" )) {
WRITE_TO ( substituted , "<a href=\"%S\">" , url );
WRITE_TO ( substituted , "<span class=\"selectedlink\">" );
- Substitute icon and name 5.1.11.14.1.1 ;
+ Substitute icon and name 5.1.11.15.1.1 ;
WRITE_TO ( substituted , "</span>" );
WRITE_TO ( substituted , "</a>" );
} else {
WRITE_TO ( substituted , "<a href=\"%S\">" , url );
- Substitute icon and name 5.1.11.14.1.1 ;
+ Substitute icon and name 5.1.11.15.1.1 ;
WRITE_TO ( substituted , "</a>" );
}
WRITE_TO ( substituted , "</li>" );
-This code is used in §5.1.11.14 , §5.1.11.15 .
-This code is used in §5.1.11.15 , §5.1.11.16 .
+
@@ -963,7 +975,7 @@ navigation purposes.
}
WRITE_TO ( substituted , "%S" , item_name );
-This code is used in §5.1.11.14.1 (three times).
+This code is used in §5.1.11.15.1 (three times).
diff --git a/docs/inweb/3-tw.html b/docs/inweb/3-tw.html
index 11da287..0ccca78 100644
--- a/docs/inweb/3-tw.html
+++ b/docs/inweb/3-tw.html
@@ -427,7 +427,8 @@ at us; but we don't weave them into the output, that's for sure.
- Trees::make_child ( WeaveTree::download ( tree , L -> text_operand ), state -> ap );
+ Trees::make_child ( WeaveTree::download ( tree , L -> text_operand , L -> text_operand2 ),
+ state -> ap );
This code is used in §2.7.2.4 .
weave_download_node * C = RETRIEVE_POINTER_weave_download_node ( N -> content );
- WRITE ( " <%S>" , C -> download_name );
+ WRITE ( " <%S> %S" , C -> download_name , C -> filetype );
+
+
+
+ WRITE_TO ( size , " (" );
+ if ( Str::len ( C -> filetype ) > 0 ) WRITE_TO ( size , "%S, " , C -> filetype );
+ if ( N < 1024 ) WRITE_TO ( size , "%d byte%s" , N , ( N !=1)? "s" : "" );
+ else if ( N < 1024 *1024) WRITE_TO ( size , "%dkB" , N /1024);
+ else if ( N < 1024 *1024*1024) WRITE_TO ( size , "%dMB" , N /1024/1024);
+ else WRITE_TO ( size , "%dGB" , N /1024/1024/1024);
+ WRITE_TO ( size , ")" );
+
+This code is used in §5.13 .
diff --git a/docs/inweb/5-wt.html b/docs/inweb/5-wt.html
index 77bc3f1..d98a2ca 100644
--- a/docs/inweb/5-wt.html
+++ b/docs/inweb/5-wt.html
@@ -146,6 +146,7 @@ function togglePopup(material_id) {
typedef struct weave_download_node {
struct text_stream * download_name ;
+ struct text_stream * filetype ;
MEMORY_MANAGEMENT
} weave_download_node ;
@@ -587,9 +588,10 @@ function togglePopup(material_id) {
}
tree_node * WeaveTree::download ( heterogeneous_tree * tree ,
- text_stream * download_name ) {
+ text_stream * download_name , text_stream * filetype ) {
weave_download_node * C = CREATE ( weave_download_node );
C -> download_name = Str::duplicate ( download_name );
+ C -> filetype = Str::duplicate ( filetype );
return Trees::new_node ( tree , weave_download_node_type ,
STORE_POINTER_weave_download_node ( C ));
}
diff --git a/docs/inweb/6-cln.html b/docs/inweb/6-cln.html
index 5a7825a..576b34e 100644
--- a/docs/inweb/6-cln.html
+++ b/docs/inweb/6-cln.html
@@ -370,14 +370,14 @@ the data we already have; but if not, we read it in.
-text_stream * Colonies::home ( void ) {
+text_stream * Colonies::home ( void ) {
colony * C ;
LOOP_OVER ( C , colony )
return C -> home ;
return I "docs" ;
}
-pathname * Colonies::assets_path ( void ) {
+pathname * Colonies::assets_path ( void ) {
colony * C ;
LOOP_OVER ( C , colony )
return C -> assets_path ;
@@ -590,7 +590,7 @@ the main one.
-void Colonies::link_URL ( OUTPUT_STREAM , text_stream * link_text , filename * F ) {
+void Colonies::link_URL ( OUTPUT_STREAM , text_stream * link_text , filename * F ) {
match_results mr = Regexp::create_mr ();
if ( Regexp::match (& mr , link_text , L " *//(%c+)// *" ))
Colonies::reference_URL ( OUT , mr . exp [0], F );
@@ -599,7 +599,7 @@ the main one.
Regexp::dispose_of (& mr );
}
-void Colonies::reference_URL ( OUTPUT_STREAM , text_stream * link_text , filename * F ) {
+void Colonies::reference_URL ( OUTPUT_STREAM , text_stream * link_text , filename * F ) {
TEMPORARY_TEXT ( title );
TEMPORARY_TEXT ( url );
if ( Colonies::resolve_reference_in_weave ( url , title , F , link_text , NULL , NULL , NULL ))
diff --git a/docs/inweb/M-awwp.html b/docs/inweb/M-awwp.html
index ed282d5..6006e6c 100644
--- a/docs/inweb/M-awwp.html
+++ b/docs/inweb/M-awwp.html
@@ -462,6 +462,9 @@ in BLOCK CAPITAL LETTERS.
a colony of webs — see Making Weaves into Websites for more, and for
syntaxes to do with links and URLs.
(b) expands to the HTML for the breadcrumb trail.
+ (c) expands to the URL to the home page of a colony.
+ (d) expands to the URL of the directory into which plugin
+assets such as images are placed.