From 40582edfcaa9347ebf0deb9d1addcc1fe57fbaff Mon Sep 17 00:00:00 2001
From: Graham Nelson
Date: Mon, 4 Apr 2022 00:00:46 +0100
Subject: [PATCH] Added new (html) inclusion feature
---
Chapter 1/Basics.w | 2 +
Chapter 2/Line Categories.w | 1 +
Chapter 2/The Parser.w | 8 +
Chapter 3/The Weaver.w | 5 +
Chapter 5/HTML Formats.w | 22 +
Chapter 5/Weave Tree.w | 16 +
Manual/How to Write a Web.w | 8 +
Patterns/HTML/Base/Navigation.css | 1 -
README.md | 2 +-
Tangled/inweb.c | 3106 +++++++++++++-------------
build.txt | 4 +-
docs/docs-assets/Navigation.css | 1 -
docs/foundation-module/2-mmr.html | 19 +-
docs/goldbach/goldbach.pdf | Bin 251986 -> 251998 bytes
docs/inweb/1-apacs.html | 2 +-
docs/inweb/1-bsc.html | 2 +
docs/inweb/1-pc.html | 2 +-
docs/inweb/1-ptt.html | 2 +-
docs/inweb/1-ts.html | 4 +-
docs/inweb/2-lc.html | 1 +
docs/inweb/2-tp.html | 10 +-
docs/inweb/3-tc.html | 2 +-
docs/inweb/3-tw.html | 39 +-
docs/inweb/4-taf.html | 2 +-
docs/inweb/5-hf.html | 212 +-
docs/inweb/5-tu.html | 2 +-
docs/inweb/5-wt.html | 72 +-
docs/inweb/6-cln.html | 2 +-
docs/inweb/M-htwaw.html | 18 +-
foundation-module/Chapter 2/Memory.w | 17 +-
30 files changed, 1883 insertions(+), 1701 deletions(-)
diff --git a/Chapter 1/Basics.w b/Chapter 1/Basics.w
index cdeca7a..0f4dcf5 100755
--- a/Chapter 1/Basics.w
+++ b/Chapter 1/Basics.w
@@ -67,6 +67,7 @@ see //foundation: A Brief Guide to Foundation//.
@e weave_endnote_node_CLASS
@e weave_material_node_CLASS
@e weave_figure_node_CLASS
+@e weave_extract_node_CLASS
@e weave_audio_node_CLASS
@e weave_download_node_CLASS
@e weave_video_node_CLASS
@@ -155,6 +156,7 @@ DECLARE_CLASS(weave_paragraph_heading_node)
DECLARE_CLASS(weave_endnote_node)
DECLARE_CLASS(weave_material_node)
DECLARE_CLASS(weave_figure_node)
+DECLARE_CLASS(weave_extract_node)
DECLARE_CLASS(weave_audio_node)
DECLARE_CLASS(weave_video_node)
DECLARE_CLASS(weave_download_node)
diff --git a/Chapter 2/Line Categories.w b/Chapter 2/Line Categories.w
index 11990d9..987028b 100644
--- a/Chapter 2/Line Categories.w
+++ b/Chapter 2/Line Categories.w
@@ -166,3 +166,4 @@ some of these fell into disuse in version 2 syntax.
@e CAROUSEL_END_CMD
@e EMBED_CMD
@e TAG_CMD
+@e HTML_CMD
diff --git a/Chapter 2/The Parser.w b/Chapter 2/The Parser.w
index 58c4db6..faf1b03 100644
--- a/Chapter 2/The Parser.w
+++ b/Chapter 2/The Parser.w
@@ -387,6 +387,14 @@ 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"%(html (%c+)%)"))) {
+ Tags::add_by_name(L->owning_paragraph, I"HTML");
+ L->command_code = HTML_CMD;
+ L->category = COMMAND_LCAT;
+ 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"%(audio (%c+)%)"))) {
Tags::add_by_name(L->owning_paragraph, I"Audio");
diff --git a/Chapter 3/The Weaver.w b/Chapter 3/The Weaver.w
index ab0a2d3..c7071a9 100644
--- a/Chapter 3/The Weaver.w
+++ b/Chapter 3/The Weaver.w
@@ -279,6 +279,7 @@ at us; but we don't weave them into the output, that's for sure.
if (L->command_code == GRAMMAR_INDEX_CMD)
Trees::make_child(WeaveTree::grammar_index(tree), state->ap);
if (L->command_code == FIGURE_CMD) @;
+ if (L->command_code == HTML_CMD) @;
if (L->command_code == AUDIO_CMD) @;
if (L->command_code == VIDEO_CMD) @;
if (L->command_code == DOWNLOAD_CMD) @;
@@ -297,6 +298,10 @@ at us; but we don't weave them into the output, that's for sure.
text_stream *figname = Parser::dimensions(L->text_operand, &w, &h, L);
Trees::make_child(WeaveTree::figure(tree, figname, w, h), state->ap);
+@ =
+ Trees::make_child(WeaveTree::raw_extract(tree, L->text_operand),
+ state->ap);
+
@ =
int w, h;
text_stream *figname = Parser::dimensions(L->text_operand, &w, &h, L);
diff --git a/Chapter 5/HTML Formats.w b/Chapter 5/HTML Formats.w
index 1fb11fe..6857507 100644
--- a/Chapter 5/HTML Formats.w
+++ b/Chapter 5/HTML Formats.w
@@ -106,6 +106,7 @@ int HTMLFormat::render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_paragraph_heading_node_type) @
else if (N->type == weave_endnote_node_type) @
else if (N->type == weave_figure_node_type) @
+ else if (N->type == weave_extract_node_type) @
else if (N->type == weave_audio_node_type) @
else if (N->type == weave_video_node_type) @
else if (N->type == weave_download_node_type) @
@@ -326,6 +327,27 @@ int HTMLFormat::render_visit(tree_node *N, void *state, int L) {
HTML_CLOSE("p");
WRITE("\n");
+@ =
+ weave_extract_node *C = RETRIEVE_POINTER_weave_extract_node(N->content);
+ filename *F = Filenames::in(
+ Pathnames::down(hrs->wv->weave_web->md->path_to_web, I"HTML"),
+ C->extract);
+ HTML_OPEN_WITH("div", "class=\"inweb-extract\"");
+ FILE *B = BinaryFiles::try_to_open_for_reading(F);
+ if (B == NULL) {
+ Main::error_in_web(I"Unable to find this HTML extract",
+ hrs->wv->current_weave_line);
+ } else {
+ while (TRUE) {
+ int c = getc(B);
+ if (c == EOF) break;
+ PUT((wchar_t) c);
+ }
+ BinaryFiles::close(B);
+ }
+ HTML_CLOSE("div");
+ WRITE("\n");
+
@ =
weave_audio_node *C = RETRIEVE_POINTER_weave_audio_node(N->content);
filename *F = Filenames::in(
diff --git a/Chapter 5/Weave Tree.w b/Chapter 5/Weave Tree.w
index 880fcef..3dc860b 100644
--- a/Chapter 5/Weave Tree.w
+++ b/Chapter 5/Weave Tree.w
@@ -81,6 +81,11 @@ typedef struct weave_figure_node {
CLASS_DEFINITION
} weave_figure_node;
+typedef struct weave_extract_node {
+ struct text_stream *extract;
+ CLASS_DEFINITION
+} weave_extract_node;
+
typedef struct weave_audio_node {
struct text_stream *audio_name;
int w;
@@ -263,6 +268,7 @@ tree_node_type *weave_linebreak_node_type = NULL;
tree_node_type *weave_paragraph_heading_node_type = NULL;
tree_node_type *weave_endnote_node_type = NULL;
tree_node_type *weave_figure_node_type = NULL;
+tree_node_type *weave_extract_node_type = NULL;
tree_node_type *weave_audio_node_type = NULL;
tree_node_type *weave_video_node_type = NULL;
tree_node_type *weave_download_node_type = NULL;
@@ -328,6 +334,8 @@ heterogeneous_tree *WeaveTree::new_tree(weave_order *wv) {
Trees::new_node_type(I"endnote", weave_endnote_node_CLASS, NULL);
weave_figure_node_type =
Trees::new_node_type(I"figure", weave_figure_node_CLASS, NULL);
+ weave_extract_node_type =
+ Trees::new_node_type(I"extract", weave_extract_node_CLASS, NULL);
weave_audio_node_type =
Trees::new_node_type(I"audio", weave_audio_node_CLASS, NULL);
weave_video_node_type =
@@ -517,6 +525,14 @@ tree_node *WeaveTree::figure(heterogeneous_tree *tree,
STORE_POINTER_weave_figure_node(C));
}
+tree_node *WeaveTree::raw_extract(heterogeneous_tree *tree,
+ text_stream *extract) {
+ weave_extract_node *C = CREATE(weave_extract_node);
+ C->extract = Str::duplicate(extract);
+ return Trees::new_node(tree, weave_extract_node_type,
+ STORE_POINTER_weave_extract_node(C));
+}
+
tree_node *WeaveTree::audio(heterogeneous_tree *tree,
text_stream *audio_name, int w) {
weave_audio_node *C = CREATE(weave_audio_node);
diff --git a/Manual/How to Write a Web.w b/Manual/How to Write a Web.w
index 7003b0d..f922d18 100644
--- a/Manual/How to Write a Web.w
+++ b/Manual/How to Write a Web.w
@@ -664,6 +664,14 @@ The file to download, in this case |alice.crt|, must be placed in a |Downloads|
subdirectory of the web. The explanatory text -- usually just an indication
of what sort of file this is -- is optional.
+@h Raw HTML snippets.
+Finally, it's possible to include a chunk of raw HTML code, though of course
+this will only be viewable if the web is being woven to HTML.
+= (text as Inweb)
+ = (html fireworks.html)
+=
+incorporates the contents of the file from the subdirectory |HTML| of the web.
+
@h Mathematics notation.
Literate programming is a good technique to justify code which hangs on
unobvious pieces of mathematics or computer science, and which must therefore
diff --git a/Patterns/HTML/Base/Navigation.css b/Patterns/HTML/Base/Navigation.css
index ad0a5f2..31a7677 100644
--- a/Patterns/HTML/Base/Navigation.css
+++ b/Patterns/HTML/Base/Navigation.css
@@ -1,5 +1,4 @@
nav[role="navigation"] {
- width: 180px;
position: fixed;
overflow: scroll;
left: 0;
diff --git a/README.md b/README.md
index 4a4cb51..2f9a5ac 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# Inweb 7
-v7-alpha.1+1A81 'Escape to Danger' (23 March 2022)
+v7-alpha.1+1A83 'Escape to Danger' (4 April 2022)
## About Inweb
diff --git a/Tangled/inweb.c b/Tangled/inweb.c
index a2744b0..1754eb3 100644
--- a/Tangled/inweb.c
+++ b/Tangled/inweb.c
@@ -374,7 +374,6 @@ struct Win32_Mutex { INIT_ONCE init; CRITICAL_SECTION crit; };
#define unused_class_value_CLASS 0
#define SAFETY_MARGIN 128
#define BLANK_END_SIZE 256
-#define MAX_BLOCKS_ALLOWED 15000
#define MEMORY_GRANULARITY 100*1024*8 /* which must be divisible by 1024 */
#define INTEGRITY_NUMBER 0x12345678 /* a value unlikely to be in memory just by chance */
#define CREATE(type_name) (allocate_##type_name())
@@ -824,33 +823,34 @@ struct Win32_Mutex { INIT_ONCE init; CRITICAL_SECTION crit; };
#define weave_endnote_node_CLASS 91
#define weave_material_node_CLASS 92
#define weave_figure_node_CLASS 93
-#define weave_audio_node_CLASS 94
-#define weave_download_node_CLASS 95
-#define weave_video_node_CLASS 96
-#define weave_embed_node_CLASS 97
-#define weave_pmac_node_CLASS 98
-#define weave_vskip_node_CLASS 99
-#define weave_chapter_node_CLASS 100
-#define weave_section_node_CLASS 101
-#define weave_code_line_node_CLASS 102
-#define weave_function_usage_node_CLASS 103
-#define weave_commentary_node_CLASS 104
-#define weave_carousel_slide_node_CLASS 105
-#define weave_toc_node_CLASS 106
-#define weave_toc_line_node_CLASS 107
-#define weave_chapter_title_page_node_CLASS 108
-#define weave_defn_node_CLASS 109
-#define weave_source_code_node_CLASS 110
-#define weave_url_node_CLASS 111
-#define weave_footnote_cue_node_CLASS 112
-#define weave_begin_footnote_text_node_CLASS 113
-#define weave_display_line_node_CLASS 114
-#define weave_function_defn_node_CLASS 115
-#define weave_item_node_CLASS 116
-#define weave_grammar_index_node_CLASS 117
-#define weave_inline_node_CLASS 118
-#define weave_locale_node_CLASS 119
-#define weave_maths_node_CLASS 120
+#define weave_extract_node_CLASS 94
+#define weave_audio_node_CLASS 95
+#define weave_download_node_CLASS 96
+#define weave_video_node_CLASS 97
+#define weave_embed_node_CLASS 98
+#define weave_pmac_node_CLASS 99
+#define weave_vskip_node_CLASS 100
+#define weave_chapter_node_CLASS 101
+#define weave_section_node_CLASS 102
+#define weave_code_line_node_CLASS 103
+#define weave_function_usage_node_CLASS 104
+#define weave_commentary_node_CLASS 105
+#define weave_carousel_slide_node_CLASS 106
+#define weave_toc_node_CLASS 107
+#define weave_toc_line_node_CLASS 108
+#define weave_chapter_title_page_node_CLASS 109
+#define weave_defn_node_CLASS 110
+#define weave_source_code_node_CLASS 111
+#define weave_url_node_CLASS 112
+#define weave_footnote_cue_node_CLASS 113
+#define weave_begin_footnote_text_node_CLASS 114
+#define weave_display_line_node_CLASS 115
+#define weave_function_defn_node_CLASS 116
+#define weave_item_node_CLASS 117
+#define weave_grammar_index_node_CLASS 118
+#define weave_inline_node_CLASS 119
+#define weave_locale_node_CLASS 120
+#define weave_maths_node_CLASS 121
#define NO_MODE 0
#define ANALYSE_MODE 1
#define TANGLE_MODE 2
@@ -945,6 +945,7 @@ struct Win32_Mutex { INIT_ONCE init; CRITICAL_SECTION crit; };
#define CAROUSEL_END_CMD 11
#define EMBED_CMD 12
#define TAG_CMD 13
+#define HTML_CMD 14
#define ORDINARY_WEIGHT 0 /* an ordinary paragraph has this "weight" */
#define SUBHEADING_WEIGHT 1 /* a heading paragraph */
#define POINTS_PER_CM 72
@@ -1066,7 +1067,7 @@ struct Win32_Mutex { INIT_ONCE init; CRITICAL_SECTION crit; };
#define PDFTEX_TEX_FORM 1
#define NO_DEFINED_CLSW_VALUES 38
#define NO_DEFINED_DA_VALUES 4
-#define NO_DEFINED_CLASS_VALUES 121
+#define NO_DEFINED_CLASS_VALUES 122
#define NO_DEFINED_MREASON_VALUES 5
#define NO_DEFINED_LOCALE_VALUES 2
#define NO_DEFINED_MTID_VALUES 42
@@ -1080,7 +1081,7 @@ struct Win32_Mutex { INIT_ONCE init; CRITICAL_SECTION crit; };
#define NO_DEFINED_SWM_VALUES 4
#define NO_DEFINED_METHOD_VALUES 4
#define NO_DEFINED_LCAT_VALUES 26
-#define NO_DEFINED_CMD_VALUES 14
+#define NO_DEFINED_CMD_VALUES 15
#define NO_DEFINED_SECTIONCAT_VALUES 3
#define NO_DEFINED_MATERIAL_VALUES 6
#define NO_DEFINED_FORM_VALUES 1
@@ -1106,20 +1107,20 @@ typedef struct allocation_status_structure {
int objects_count; /* total number currently in existence (i.e., undeleted) */
int no_allocated_together; /* number of objects in each array of this type of object */
} allocation_status_structure;
-#line 140 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 136 "inweb/foundation-module/Chapter 2/Memory.w"
typedef struct memblock_header {
int block_number;
struct memblock_header *next;
char *the_memory;
} memblock_header;
-#line 226 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 217 "inweb/foundation-module/Chapter 2/Memory.w"
typedef struct memory_frame {
int integrity_check; /* this should always contain the |INTEGRITY_NUMBER| */
struct memory_frame *next_frame; /* next frame in the list of memory frames */
int mem_type; /* type of object stored in this frame */
int allocation_id; /* allocation ID number of object stored in this frame */
} memory_frame;
-#line 752 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 743 "inweb/foundation-module/Chapter 2/Memory.w"
typedef struct general_pointer {
void *pointer_to_data;
int run_time_type_code;
@@ -1754,7 +1755,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 748 "inweb/Chapter 2/The Parser.w"
+#line 756 "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 */
@@ -1778,7 +1779,7 @@ typedef struct paragraph {
struct section *under_section;
CLASS_DEFINITION
} paragraph;
-#line 866 "inweb/Chapter 2/The Parser.w"
+#line 874 "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 */
@@ -2101,25 +2102,30 @@ typedef struct weave_figure_node {
CLASS_DEFINITION
} weave_figure_node;
#line 84 "inweb/Chapter 5/Weave Tree.w"
+typedef struct weave_extract_node {
+ struct text_stream *extract;
+ CLASS_DEFINITION
+} weave_extract_node;
+#line 89 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_audio_node {
struct text_stream *audio_name;
int w;
CLASS_DEFINITION
} weave_audio_node;
-#line 90 "inweb/Chapter 5/Weave Tree.w"
+#line 95 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_video_node {
struct text_stream *video_name;
int w;
int h;
CLASS_DEFINITION
} weave_video_node;
-#line 97 "inweb/Chapter 5/Weave Tree.w"
+#line 102 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_download_node {
struct text_stream *download_name;
struct text_stream *filetype;
CLASS_DEFINITION
} weave_download_node;
-#line 103 "inweb/Chapter 5/Weave Tree.w"
+#line 108 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_material_node {
int material_type;
int plainly;
@@ -2127,7 +2133,7 @@ typedef struct weave_material_node {
struct text_stream *endnote;
CLASS_DEFINITION
} weave_material_node;
-#line 111 "inweb/Chapter 5/Weave Tree.w"
+#line 116 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_embed_node {
struct text_stream *service;
struct text_stream *ID;
@@ -2135,130 +2141,130 @@ typedef struct weave_embed_node {
int h;
CLASS_DEFINITION
} weave_embed_node;
-#line 119 "inweb/Chapter 5/Weave Tree.w"
+#line 124 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_pmac_node {
struct para_macro *pmac;
int defn;
CLASS_DEFINITION
} weave_pmac_node;
-#line 125 "inweb/Chapter 5/Weave Tree.w"
+#line 130 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_vskip_node {
int in_comment;
CLASS_DEFINITION
} weave_vskip_node;
-#line 130 "inweb/Chapter 5/Weave Tree.w"
+#line 135 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_chapter_node {
struct chapter *chap;
CLASS_DEFINITION
} weave_chapter_node;
-#line 135 "inweb/Chapter 5/Weave Tree.w"
+#line 140 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_section_node {
struct section *sect;
CLASS_DEFINITION
} weave_section_node;
-#line 140 "inweb/Chapter 5/Weave Tree.w"
+#line 145 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_code_line_node {
CLASS_DEFINITION
} weave_code_line_node;
-#line 144 "inweb/Chapter 5/Weave Tree.w"
+#line 149 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_function_usage_node {
struct text_stream *url;
struct language_function *fn;
CLASS_DEFINITION
} weave_function_usage_node;
-#line 150 "inweb/Chapter 5/Weave Tree.w"
+#line 155 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_commentary_node {
struct text_stream *text;
int in_code;
CLASS_DEFINITION
} weave_commentary_node;
-#line 156 "inweb/Chapter 5/Weave Tree.w"
+#line 161 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_carousel_slide_node {
struct text_stream *caption;
int caption_command;
CLASS_DEFINITION
} weave_carousel_slide_node;
-#line 162 "inweb/Chapter 5/Weave Tree.w"
+#line 167 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_toc_node {
struct text_stream *text1;
CLASS_DEFINITION
} weave_toc_node;
-#line 167 "inweb/Chapter 5/Weave Tree.w"
+#line 172 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_toc_line_node {
struct text_stream *text1;
struct text_stream *text2;
struct paragraph *para;
CLASS_DEFINITION
} weave_toc_line_node;
-#line 174 "inweb/Chapter 5/Weave Tree.w"
+#line 179 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_chapter_title_page_node {
CLASS_DEFINITION
} weave_chapter_title_page_node;
-#line 178 "inweb/Chapter 5/Weave Tree.w"
+#line 183 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_defn_node {
struct text_stream *keyword;
CLASS_DEFINITION
} weave_defn_node;
-#line 183 "inweb/Chapter 5/Weave Tree.w"
+#line 188 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_inline_node {
CLASS_DEFINITION
} weave_inline_node;
-#line 187 "inweb/Chapter 5/Weave Tree.w"
+#line 192 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_locale_node {
struct paragraph *par1;
struct paragraph *par2;
CLASS_DEFINITION
} weave_locale_node;
-#line 193 "inweb/Chapter 5/Weave Tree.w"
+#line 198 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_source_code_node {
struct text_stream *matter;
struct text_stream *colouring;
CLASS_DEFINITION
} weave_source_code_node;
-#line 199 "inweb/Chapter 5/Weave Tree.w"
+#line 204 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_url_node {
struct text_stream *url;
struct text_stream *content;
int external;
CLASS_DEFINITION
} weave_url_node;
-#line 206 "inweb/Chapter 5/Weave Tree.w"
+#line 211 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_footnote_cue_node {
struct text_stream *cue_text;
CLASS_DEFINITION
} weave_footnote_cue_node;
-#line 211 "inweb/Chapter 5/Weave Tree.w"
+#line 216 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_begin_footnote_text_node {
struct text_stream *cue_text;
CLASS_DEFINITION
} weave_begin_footnote_text_node;
-#line 216 "inweb/Chapter 5/Weave Tree.w"
+#line 221 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_display_line_node {
struct text_stream *text;
CLASS_DEFINITION
} weave_display_line_node;
-#line 221 "inweb/Chapter 5/Weave Tree.w"
+#line 226 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_function_defn_node {
struct language_function *fn;
CLASS_DEFINITION
} weave_function_defn_node;
-#line 226 "inweb/Chapter 5/Weave Tree.w"
+#line 231 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_item_node {
int depth;
struct text_stream *label;
CLASS_DEFINITION
} weave_item_node;
-#line 232 "inweb/Chapter 5/Weave Tree.w"
+#line 237 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_grammar_index_node {
CLASS_DEFINITION
} weave_grammar_index_node;
-#line 236 "inweb/Chapter 5/Weave Tree.w"
+#line 241 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_maths_node {
struct text_stream *content;
int displayed;
CLASS_DEFINITION
} weave_maths_node;
-#line 242 "inweb/Chapter 5/Weave Tree.w"
+#line 247 "inweb/Chapter 5/Weave Tree.w"
typedef struct weave_verbatim_node {
struct text_stream *content;
CLASS_DEFINITION
@@ -2655,45 +2661,45 @@ void Log__show_debugging_settings_with_state(int state) ;
void Log__show_debugging_contents(void) ;
#line 78 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__start(void) ;
-#line 160 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 156 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__allocate_another_block(void) ;
-#line 205 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 196 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__free(void) ;
-#line 250 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 241 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__check_memory_integrity(void) ;
-#line 261 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 252 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__debug_memory_frames(int from, int to) ;
-#line 278 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 269 "inweb/foundation-module/Chapter 2/Memory.w"
void * Memory__allocate(int mem_type, int extent) ;
-#line 479 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 470 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__name_fundamental_reasons(void) ;
-#line 492 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 483 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__reason_name(int r, char *reason) ;
-#line 497 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 488 "inweb/foundation-module/Chapter 2/Memory.w"
char * Memory__description_of_reason(int r) ;
-#line 522 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 513 "inweb/foundation-module/Chapter 2/Memory.w"
void * Memory__calloc(int how_many, int size_in_bytes, int reason) ;
-#line 525 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 516 "inweb/foundation-module/Chapter 2/Memory.w"
void * Memory__malloc(int size_in_bytes, int reason) ;
-#line 532 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 523 "inweb/foundation-module/Chapter 2/Memory.w"
void * Memory__alloc_inner(int N, int S, int R) ;
-#line 583 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 574 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__I7_free(void *pointer, int R, int bytes_freed) ;
-#line 592 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 583 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__I7_array_free(void *pointer, int R, int num_cells, size_t cell_size) ;
-#line 600 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 591 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__log_statistics(void) ;
-#line 682 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 673 "inweb/foundation-module/Chapter 2/Memory.w"
int Memory__log_usage(int total) ;
-#line 702 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 693 "inweb/foundation-module/Chapter 2/Memory.w"
int Memory__compare_usage(const void *ent1, const void *ent2) ;
-#line 712 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 703 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__log_percentage(int bytes, int total) ;
-#line 725 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 716 "inweb/foundation-module/Chapter 2/Memory.w"
void * Memory__paranoid_calloc(size_t N, size_t S) ;
-#line 757 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 748 "inweb/foundation-module/Chapter 2/Memory.w"
general_pointer Memory__store_gp_null(void) ;
-#line 763 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 754 "inweb/foundation-module/Chapter 2/Memory.w"
int Memory__test_gp_null(general_pointer gp) ;
#line 12 "inweb/foundation-module/Chapter 2/Locales.w"
char * Locales__name(int L) ;
@@ -3865,15 +3871,15 @@ 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 848 "inweb/Chapter 2/The Parser.w"
+#line 856 "inweb/Chapter 2/The Parser.w"
text_stream * Parser__extract_purpose(text_stream *prologue, source_line *XL, section *S, source_line **adjust) ;
-#line 920 "inweb/Chapter 2/The Parser.w"
+#line 928 "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 963 "inweb/Chapter 2/The Parser.w"
+#line 971 "inweb/Chapter 2/The Parser.w"
footnote * Parser__find_footnote_in_para(paragraph *P, text_stream *cue) ;
-#line 980 "inweb/Chapter 2/The Parser.w"
+#line 988 "inweb/Chapter 2/The Parser.w"
text_stream * Parser__dimensions(text_stream *item, int *w, int *h, source_line *L) ;
-#line 1028 "inweb/Chapter 2/The Parser.w"
+#line 1036 "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) ;
@@ -3969,21 +3975,21 @@ int Collater__cmp_owners(text_stream *O1, text_stream *O2) ;
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 574 "inweb/Chapter 3/The Weaver.w"
+#line 579 "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 689 "inweb/Chapter 3/The Weaver.w"
+#line 694 "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 754 "inweb/Chapter 3/The Weaver.w"
+#line 759 "inweb/Chapter 3/The Weaver.w"
void Weaver__weave_subheading(heterogeneous_tree *tree, weave_order *wv, tree_node *ap, text_stream *text) ;
-#line 760 "inweb/Chapter 3/The Weaver.w"
+#line 765 "inweb/Chapter 3/The Weaver.w"
void Weaver__change_material(heterogeneous_tree *tree, weaver_state *state, int new_material, int plainly, programming_language *pl, text_stream *note) ;
-#line 773 "inweb/Chapter 3/The Weaver.w"
+#line 778 "inweb/Chapter 3/The Weaver.w"
void Weaver__change_material_for_para(heterogeneous_tree *tree, weaver_state *state) ;
-#line 781 "inweb/Chapter 3/The Weaver.w"
+#line 786 "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 787 "inweb/Chapter 3/The Weaver.w"
+#line 792 "inweb/Chapter 3/The Weaver.w"
void Weaver__commentary_text(heterogeneous_tree *tree, weave_order *wv, tree_node *ap, text_stream *matter) ;
-#line 797 "inweb/Chapter 3/The Weaver.w"
+#line 802 "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) ;
@@ -4245,103 +4251,105 @@ void InCSupport__new_tag_declared(programming_language *self, theme_tag *tag) ;
void InCSupport__analyse_code(programming_language *self, web *W) ;
#line 1134 "inweb/Chapter 4/InC Support.w"
int InCSupport__share_element(programming_language *self, text_stream *elname) ;
-#line 295 "inweb/Chapter 5/Weave Tree.w"
+#line 301 "inweb/Chapter 5/Weave Tree.w"
heterogeneous_tree * WeaveTree__new_tree(weave_order *wv) ;
-#line 396 "inweb/Chapter 5/Weave Tree.w"
+#line 404 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__document(heterogeneous_tree *tree, weave_order *wv) ;
-#line 403 "inweb/Chapter 5/Weave Tree.w"
+#line 411 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__head(heterogeneous_tree *tree, text_stream *banner) ;
-#line 410 "inweb/Chapter 5/Weave Tree.w"
+#line 418 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__body(heterogeneous_tree *tree) ;
-#line 416 "inweb/Chapter 5/Weave Tree.w"
+#line 424 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__tail(heterogeneous_tree *tree, text_stream *rennab) ;
-#line 423 "inweb/Chapter 5/Weave Tree.w"
+#line 431 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__verbatim(heterogeneous_tree *tree, text_stream *content) ;
-#line 430 "inweb/Chapter 5/Weave Tree.w"
+#line 438 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__section_header(heterogeneous_tree *tree, section *S) ;
-#line 437 "inweb/Chapter 5/Weave Tree.w"
+#line 445 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__section_footer(heterogeneous_tree *tree, section *S) ;
-#line 444 "inweb/Chapter 5/Weave Tree.w"
+#line 452 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__chapter(heterogeneous_tree *tree, chapter *Ch) ;
-#line 450 "inweb/Chapter 5/Weave Tree.w"
+#line 458 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__chapter_header(heterogeneous_tree *tree, chapter *Ch) ;
-#line 457 "inweb/Chapter 5/Weave Tree.w"
+#line 465 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__chapter_footer(heterogeneous_tree *tree, chapter *Ch) ;
-#line 464 "inweb/Chapter 5/Weave Tree.w"
+#line 472 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__purpose(heterogeneous_tree *tree, text_stream *P) ;
-#line 471 "inweb/Chapter 5/Weave Tree.w"
+#line 479 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__subheading(heterogeneous_tree *tree, text_stream *P) ;
-#line 478 "inweb/Chapter 5/Weave Tree.w"
+#line 486 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__pagebreak(heterogeneous_tree *tree) ;
-#line 484 "inweb/Chapter 5/Weave Tree.w"
+#line 492 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__linebreak(heterogeneous_tree *tree) ;
-#line 490 "inweb/Chapter 5/Weave Tree.w"
+#line 498 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__bar(heterogeneous_tree *tree) ;
-#line 496 "inweb/Chapter 5/Weave Tree.w"
-tree_node * WeaveTree__paragraph_heading(heterogeneous_tree *tree, paragraph *P, int no_skip) ;
#line 504 "inweb/Chapter 5/Weave Tree.w"
+tree_node * WeaveTree__paragraph_heading(heterogeneous_tree *tree, paragraph *P, int no_skip) ;
+#line 512 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__endnote(heterogeneous_tree *tree) ;
-#line 510 "inweb/Chapter 5/Weave Tree.w"
+#line 518 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__figure(heterogeneous_tree *tree, text_stream *figname, int w, int h) ;
-#line 520 "inweb/Chapter 5/Weave Tree.w"
+#line 528 "inweb/Chapter 5/Weave Tree.w"
+tree_node * WeaveTree__raw_extract(heterogeneous_tree *tree, text_stream *extract) ;
+#line 536 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__audio(heterogeneous_tree *tree, text_stream *audio_name, int w) ;
-#line 529 "inweb/Chapter 5/Weave Tree.w"
+#line 545 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__video(heterogeneous_tree *tree, text_stream *video_name, int w, int h) ;
-#line 538 "inweb/Chapter 5/Weave Tree.w"
+#line 554 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__download(heterogeneous_tree *tree, text_stream *download_name, text_stream *filetype) ;
-#line 547 "inweb/Chapter 5/Weave Tree.w"
+#line 563 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__material(heterogeneous_tree *tree, int material_type, int plainly, programming_language *styling, text_stream *endnote) ;
-#line 557 "inweb/Chapter 5/Weave Tree.w"
+#line 573 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__embed(heterogeneous_tree *tree, text_stream *service, text_stream *ID, int w, int h) ;
-#line 572 "inweb/Chapter 5/Weave Tree.w"
+#line 588 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__pmac(heterogeneous_tree *tree, para_macro *pmac, int defn) ;
-#line 584 "inweb/Chapter 5/Weave Tree.w"
+#line 600 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__vskip(heterogeneous_tree *tree, int in_comment) ;
-#line 590 "inweb/Chapter 5/Weave Tree.w"
+#line 606 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__section(heterogeneous_tree *tree, section *sect) ;
-#line 596 "inweb/Chapter 5/Weave Tree.w"
+#line 612 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__code_line(heterogeneous_tree *tree) ;
-#line 601 "inweb/Chapter 5/Weave Tree.w"
+#line 617 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__function_usage(heterogeneous_tree *tree, text_stream *url, language_function *fn) ;
-#line 609 "inweb/Chapter 5/Weave Tree.w"
+#line 625 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__commentary(heterogeneous_tree *tree, text_stream *text, int in_code) ;
-#line 616 "inweb/Chapter 5/Weave Tree.w"
+#line 632 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__carousel_slide(heterogeneous_tree *tree, text_stream *caption, int c) ;
-#line 623 "inweb/Chapter 5/Weave Tree.w"
+#line 639 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__table_of_contents(heterogeneous_tree *tree, text_stream *text1) ;
-#line 629 "inweb/Chapter 5/Weave Tree.w"
+#line 645 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__contents_line(heterogeneous_tree *tree, text_stream *text1, text_stream *text2, paragraph *P) ;
-#line 638 "inweb/Chapter 5/Weave Tree.w"
+#line 654 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__weave_chapter_title_page_node(heterogeneous_tree *tree) ;
-#line 643 "inweb/Chapter 5/Weave Tree.w"
+#line 659 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__weave_defn_node(heterogeneous_tree *tree, text_stream *keyword) ;
-#line 660 "inweb/Chapter 5/Weave Tree.w"
+#line 676 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__source_code(heterogeneous_tree *tree, text_stream *matter, text_stream *colouring) ;
-#line 692 "inweb/Chapter 5/Weave Tree.w"
+#line 708 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__url(heterogeneous_tree *tree, text_stream *url, text_stream *content, int external) ;
-#line 701 "inweb/Chapter 5/Weave Tree.w"
-tree_node * WeaveTree__footnote_cue(heterogeneous_tree *tree, text_stream *cue) ;
-#line 707 "inweb/Chapter 5/Weave Tree.w"
-tree_node * WeaveTree__footnote(heterogeneous_tree *tree, text_stream *cue) ;
#line 717 "inweb/Chapter 5/Weave Tree.w"
+tree_node * WeaveTree__footnote_cue(heterogeneous_tree *tree, text_stream *cue) ;
+#line 723 "inweb/Chapter 5/Weave Tree.w"
+tree_node * WeaveTree__footnote(heterogeneous_tree *tree, text_stream *cue) ;
+#line 733 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__function_defn(heterogeneous_tree *tree, language_function *fn) ;
-#line 727 "inweb/Chapter 5/Weave Tree.w"
+#line 743 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__display_line(heterogeneous_tree *tree, text_stream *text) ;
-#line 746 "inweb/Chapter 5/Weave Tree.w"
+#line 762 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__weave_item_node(heterogeneous_tree *tree, int depth, text_stream *label) ;
-#line 753 "inweb/Chapter 5/Weave Tree.w"
+#line 769 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__grammar_index(heterogeneous_tree *tree) ;
-#line 758 "inweb/Chapter 5/Weave Tree.w"
+#line 774 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__inline(heterogeneous_tree *tree) ;
-#line 763 "inweb/Chapter 5/Weave Tree.w"
+#line 779 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__locale(heterogeneous_tree *tree, paragraph *par1, paragraph *par2) ;
-#line 770 "inweb/Chapter 5/Weave Tree.w"
+#line 786 "inweb/Chapter 5/Weave Tree.w"
tree_node * WeaveTree__mathematics(heterogeneous_tree *tree, text_stream *content, int displayed) ;
-#line 777 "inweb/Chapter 5/Weave Tree.w"
+#line 793 "inweb/Chapter 5/Weave Tree.w"
void WeaveTree__show(text_stream *OUT, heterogeneous_tree *T) ;
-#line 784 "inweb/Chapter 5/Weave Tree.w"
+#line 800 "inweb/Chapter 5/Weave Tree.w"
void WeaveTree__prune(heterogeneous_tree *T) ;
-#line 788 "inweb/Chapter 5/Weave Tree.w"
+#line 804 "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) ;
@@ -4401,19 +4409,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 895 "inweb/Chapter 5/HTML Formats.w"
+#line 917 "inweb/Chapter 5/HTML Formats.w"
int HTMLFormat__interior_material(tree_node *N) ;
-#line 909 "inweb/Chapter 5/HTML Formats.w"
+#line 931 "inweb/Chapter 5/HTML Formats.w"
void HTMLFormat__go_to_depth(HTML_render_state *hrs, int from_depth, int to_depth) ;
-#line 927 "inweb/Chapter 5/HTML Formats.w"
+#line 949 "inweb/Chapter 5/HTML Formats.w"
void HTMLFormat__paragraph_number(text_stream *OUT, paragraph *P) ;
-#line 942 "inweb/Chapter 5/HTML Formats.w"
+#line 964 "inweb/Chapter 5/HTML Formats.w"
void HTMLFormat__change_colour(text_stream *OUT, int col, colour_scheme *cs) ;
-#line 966 "inweb/Chapter 5/HTML Formats.w"
+#line 988 "inweb/Chapter 5/HTML Formats.w"
void HTMLFormat__escape_text(text_stream *OUT, text_stream *id) ;
-#line 978 "inweb/Chapter 5/HTML Formats.w"
+#line 1000 "inweb/Chapter 5/HTML Formats.w"
int HTMLFormat__begin_weaving_EPUB(weave_format *wf, web *W, weave_pattern *pattern) ;
-#line 993 "inweb/Chapter 5/HTML Formats.w"
+#line 1015 "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) ;
@@ -5177,6 +5185,10 @@ text_stream *TL_IS_649 = NULL;
text_stream *TL_IS_650 = NULL;
text_stream *TL_IS_651 = NULL;
text_stream *TL_IS_652 = NULL;
+text_stream *TL_IS_653 = NULL;
+text_stream *TL_IS_654 = NULL;
+text_stream *TL_IS_655 = NULL;
+text_stream *TL_IS_656 = NULL;
void register_tangled_text_literals(void);
#line 57 "inweb/foundation-module/Chapter 2/Streams.w"
#define WRITE(args...) Writers__printf(OUT, args)
@@ -6082,13 +6094,13 @@ void Memory__start(void) {
Memory__name_fundamental_reasons();
}
-#line 131 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 127 "inweb/foundation-module/Chapter 2/Memory.w"
int no_blocks_allocated = 0;
int total_objects_allocated = 0; /* a potentially larger number, used only for the debugging log */
-#line 145 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 141 "inweb/foundation-module/Chapter 2/Memory.w"
-#line 147 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 143 "inweb/foundation-module/Chapter 2/Memory.w"
memblock_header *first_memblock_header = NULL; /* head of list of memory blocks */
memblock_header *current_memblock_header = NULL; /* tail of list of memory blocks */
@@ -6098,26 +6110,21 @@ CREATE_MUTEX(memory_single_allocation_mutex)
CREATE_MUTEX(memory_array_allocation_mutex)
CREATE_MUTEX(memory_statistics_mutex)
-#line 160 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 156 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__allocate_another_block(void) {
unsigned char *cp;
memblock_header *mh;
{
-#line 177 "inweb/foundation-module/Chapter 2/Memory.w"
- int i;
- if (no_blocks_allocated++ >= MAX_BLOCKS_ALLOWED)
- Errors__fatal(
- "the memory manager has halted inweb, which seems to be generating "
- "endless structures. Presumably it is trapped in a loop");
+#line 173 "inweb/foundation-module/Chapter 2/Memory.w"
Memory__check_memory_integrity();
cp = (unsigned char *) (Memory__paranoid_calloc(MEMORY_GRANULARITY, 1));
if (cp == NULL) Errors__fatal("Run out of memory: malloc failed");
- for (i=0; iblock_number = 0;
first_memblock_header = mh;
@@ -6137,11 +6144,11 @@ void Memory__allocate_another_block(void) {
current_memblock_header = mh;
}
-#line 170 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 166 "inweb/foundation-module/Chapter 2/Memory.w"
;
}
-#line 205 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 196 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__free(void) {
CStrings__free_ssas();
memblock_header *mh = first_memblock_header;
@@ -6153,13 +6160,13 @@ void Memory__free(void) {
}
}
-#line 232 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 223 "inweb/foundation-module/Chapter 2/Memory.w"
-#line 238 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 229 "inweb/foundation-module/Chapter 2/Memory.w"
memory_frame *first_memory_frame = NULL; /* earliest memory frame ever allocated */
memory_frame *last_memory_frame = NULL; /* most recent memory frame allocated */
-#line 249 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 240 "inweb/foundation-module/Chapter 2/Memory.w"
int calls_to_cmi = 0;
void Memory__check_memory_integrity(void) {
int c;
@@ -6183,7 +6190,7 @@ void Memory__debug_memory_frames(int from, int to) {
}
}
-#line 278 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 269 "inweb/foundation-module/Chapter 2/Memory.w"
void *Memory__allocate(int mem_type, int extent) {
unsigned char *cp;
memory_frame *mf;
@@ -6194,7 +6201,7 @@ void *Memory__allocate(int mem_type, int extent) {
{
-#line 310 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 301 "inweb/foundation-module/Chapter 2/Memory.w"
if (current_memblock_header == NULL) Memory__allocate_another_block();
bytes_free_in_current_memblock = MEMORY_GRANULARITY - (used_in_current_memblock + extent);
if (bytes_free_in_current_memblock < BLANK_END_SIZE) {
@@ -6204,7 +6211,7 @@ void *Memory__allocate(int mem_type, int extent) {
}
}
-#line 286 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 277 "inweb/foundation-module/Chapter 2/Memory.w"
;
cp = ((unsigned char *) (current_memblock_header->the_memory)) + used_in_current_memblock;
@@ -6219,18 +6226,18 @@ void *Memory__allocate(int mem_type, int extent) {
{
-#line 321 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 312 "inweb/foundation-module/Chapter 2/Memory.w"
mf->next_frame = NULL;
if (first_memory_frame == NULL) first_memory_frame = mf;
else last_memory_frame->next_frame = mf;
last_memory_frame = mf;
}
-#line 298 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 289 "inweb/foundation-module/Chapter 2/Memory.w"
;
{
-#line 329 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 320 "inweb/foundation-module/Chapter 2/Memory.w"
if (alloc_status[mem_type].first_in_memory == NULL)
alloc_status[mem_type].first_in_memory = (void *) cp;
alloc_status[mem_type].last_in_memory = (void *) cp;
@@ -6238,14 +6245,14 @@ void *Memory__allocate(int mem_type, int extent) {
alloc_status[mem_type].bytes_allocated += extent_without_overheads;
}
-#line 299 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 290 "inweb/foundation-module/Chapter 2/Memory.w"
;
total_objects_allocated++;
return (void *) cp;
}
-#line 479 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 470 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__name_fundamental_reasons(void) {
Memory__reason_name(STREAM_MREASON, "text stream storage");
Memory__reason_name(FILENAME_STORAGE_MREASON, "filename/pathname storage");
@@ -6254,7 +6261,7 @@ void Memory__name_fundamental_reasons(void) {
Memory__reason_name(ARRAY_SORTING_MREASON, "sorting");
}
-#line 490 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 481 "inweb/foundation-module/Chapter 2/Memory.w"
char *memory_needs[NO_DEFINED_MREASON_VALUES];
void Memory__reason_name(int r, char *reason) {
@@ -6267,13 +6274,13 @@ char *Memory__description_of_reason(int r) {
return memory_needs[r];
}
-#line 510 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 501 "inweb/foundation-module/Chapter 2/Memory.w"
int max_memory_at_once_for_each_need[NO_DEFINED_MREASON_VALUES],
memory_claimed_for_each_need[NO_DEFINED_MREASON_VALUES],
number_of_claims_for_each_need[NO_DEFINED_MREASON_VALUES];
int total_claimed_simply = 0;
-#line 522 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 513 "inweb/foundation-module/Chapter 2/Memory.w"
void *Memory__calloc(int how_many, int size_in_bytes, int reason) {
return Memory__alloc_inner(how_many, size_in_bytes, reason);
}
@@ -6281,14 +6288,14 @@ void *Memory__malloc(int size_in_bytes, int reason) {
return Memory__alloc_inner(-1, size_in_bytes, reason);
}
-#line 532 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 523 "inweb/foundation-module/Chapter 2/Memory.w"
void *Memory__alloc_inner(int N, int S, int R) {
void *pointer;
int bytes_needed;
if ((R < 0) || (R >= NO_DEFINED_MREASON_VALUES)) internal_error("no such memory reason");
if (total_claimed_simply == 0)
{
-#line 563 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 554 "inweb/foundation-module/Chapter 2/Memory.w"
LOCK_MUTEX(memory_statistics_mutex);
for (int i=0; i 0) {
pointer = Memory__paranoid_calloc((size_t) N, (size_t) S);
bytes_needed = N*S;
@@ -6315,11 +6322,11 @@ void *Memory__alloc_inner(int N, int S, int R) {
}
}
-#line 537 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 528 "inweb/foundation-module/Chapter 2/Memory.w"
;
{
-#line 572 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 563 "inweb/foundation-module/Chapter 2/Memory.w"
LOCK_MUTEX(memory_statistics_mutex);
memory_claimed_for_each_need[R] += bytes_needed;
total_claimed_simply += bytes_needed;
@@ -6329,12 +6336,12 @@ void *Memory__alloc_inner(int N, int S, int R) {
UNLOCK_MUTEX(memory_statistics_mutex);
}
-#line 538 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 529 "inweb/foundation-module/Chapter 2/Memory.w"
;
return pointer;
}
-#line 583 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 574 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__I7_free(void *pointer, int R, int bytes_freed) {
if ((R < 0) || (R >= NO_DEFINED_MREASON_VALUES)) internal_error("no such memory reason");
if (pointer == NULL) internal_error("can't free NULL memory");
@@ -6348,7 +6355,7 @@ void Memory__I7_array_free(void *pointer, int R, int num_cells, size_t cell_size
Memory__I7_free(pointer, R, num_cells*((int) cell_size));
}
-#line 600 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 591 "inweb/foundation-module/Chapter 2/Memory.w"
void Memory__log_statistics(void) {
int total_for_objects = MEMORY_GRANULARITY*no_blocks_allocated; /* usage in bytes */
int total_for_SMAs = Memory__log_usage(0); /* usage in bytes */
@@ -6357,19 +6364,19 @@ void Memory__log_statistics(void) {
{
-#line 633 "inweb/foundation-module/Chapter 2/Memory.w"
+#line 624 "inweb/foundation-module/Chapter 2/Memory.w"
for (int i=0; iplainer = TRUE;
- else if (Str__eq(mr3.exp[0], TL_IS_185)) L->enable_hyperlinks = TRUE;
+ if (Str__eq(mr3.exp[0], TL_IS_185)) L->plainer = TRUE;
+ else if (Str__eq(mr3.exp[0], TL_IS_186)) L->enable_hyperlinks = TRUE;
else {
Main__error_in_web(
- TL_IS_186, L);
+ TL_IS_187, L);
}
} else break;
Str__clear(mr2.exp[0]);
@@ -18720,15 +18728,15 @@ void Parser__parse_web(web *W, int inweb_mode) {
(Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text to *(%c+)%)"))) {
{
-#line 486 "inweb/Chapter 2/The Parser.w"
+#line 494 "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_184)) L->plainer = TRUE;
- else if (Str__eq(mr3.exp[0], TL_IS_185)) L->enable_hyperlinks = TRUE;
+ if (Str__eq(mr3.exp[0], TL_IS_185)) L->plainer = TRUE;
+ else if (Str__eq(mr3.exp[0], TL_IS_186)) L->enable_hyperlinks = TRUE;
else {
Main__error_in_web(
- TL_IS_186, L);
+ TL_IS_187, L);
}
} else break;
Str__clear(mr2.exp[0]);
@@ -18747,15 +18755,15 @@ void Parser__parse_web(web *W, int inweb_mode) {
(Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text as code%)"))) {
{
-#line 486 "inweb/Chapter 2/The Parser.w"
+#line 494 "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_184)) L->plainer = TRUE;
- else if (Str__eq(mr3.exp[0], TL_IS_185)) L->enable_hyperlinks = TRUE;
+ if (Str__eq(mr3.exp[0], TL_IS_185)) L->plainer = TRUE;
+ else if (Str__eq(mr3.exp[0], TL_IS_186)) L->enable_hyperlinks = TRUE;
else {
Main__error_in_web(
- TL_IS_186, L);
+ TL_IS_187, L);
}
} else break;
Str__clear(mr2.exp[0]);
@@ -18774,15 +18782,15 @@ void Parser__parse_web(web *W, int inweb_mode) {
(Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text as (%c+)%)"))) {
{
-#line 486 "inweb/Chapter 2/The Parser.w"
+#line 494 "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_184)) L->plainer = TRUE;
- else if (Str__eq(mr3.exp[0], TL_IS_185)) L->enable_hyperlinks = TRUE;
+ if (Str__eq(mr3.exp[0], TL_IS_185)) L->plainer = TRUE;
+ else if (Str__eq(mr3.exp[0], TL_IS_186)) L->enable_hyperlinks = TRUE;
else {
Main__error_in_web(
- TL_IS_186, L);
+ TL_IS_187, L);
}
} else break;
Str__clear(mr2.exp[0]);
@@ -18801,15 +18809,15 @@ void Parser__parse_web(web *W, int inweb_mode) {
(Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text from (%c+) as code%)"))) {
{
-#line 486 "inweb/Chapter 2/The Parser.w"
+#line 494 "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_184)) L->plainer = TRUE;
- else if (Str__eq(mr3.exp[0], TL_IS_185)) L->enable_hyperlinks = TRUE;
+ if (Str__eq(mr3.exp[0], TL_IS_185)) L->plainer = TRUE;
+ else if (Str__eq(mr3.exp[0], TL_IS_186)) L->enable_hyperlinks = TRUE;
else {
Main__error_in_web(
- TL_IS_186, L);
+ TL_IS_187, L);
}
} else break;
Str__clear(mr2.exp[0]);
@@ -18823,7 +18831,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
code_pl_for_body = S->sect_language;
{
-#line 502 "inweb/Chapter 2/The Parser.w"
+#line 510 "inweb/Chapter 2/The Parser.w"
L->category = BEGIN_CODE_LCAT;
pathname *P = W->md->path_to_web;
if ((S->md->owning_module) && (S->md->owning_module->module_location))
@@ -18839,7 +18847,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_187, &(L->source), S);
+ source_line *EEL = Lines__new_source_line_in(TL_IS_188, &(L->source), S);
EEL->next_line = latest->next_line;
latest->next_line = EEL;
code_lcat_for_body = TEXT_EXTRACT_LCAT;
@@ -18852,15 +18860,15 @@ void Parser__parse_web(web *W, int inweb_mode) {
(Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text from (%c+) as (%c+)%)"))) {
{
-#line 486 "inweb/Chapter 2/The Parser.w"
+#line 494 "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_184)) L->plainer = TRUE;
- else if (Str__eq(mr3.exp[0], TL_IS_185)) L->enable_hyperlinks = TRUE;
+ if (Str__eq(mr3.exp[0], TL_IS_185)) L->plainer = TRUE;
+ else if (Str__eq(mr3.exp[0], TL_IS_186)) L->enable_hyperlinks = TRUE;
else {
Main__error_in_web(
- TL_IS_186, L);
+ TL_IS_187, L);
}
} else break;
Str__clear(mr2.exp[0]);
@@ -18874,7 +18882,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
code_pl_for_body = Languages__find_by_name(mr2.exp[2], W, TRUE);
{
-#line 502 "inweb/Chapter 2/The Parser.w"
+#line 510 "inweb/Chapter 2/The Parser.w"
L->category = BEGIN_CODE_LCAT;
pathname *P = W->md->path_to_web;
if ((S->md->owning_module) && (S->md->owning_module->module_location))
@@ -18890,7 +18898,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_187, &(L->source), S);
+ source_line *EEL = Lines__new_source_line_in(TL_IS_188, &(L->source), S);
EEL->next_line = latest->next_line;
latest->next_line = EEL;
code_lcat_for_body = TEXT_EXTRACT_LCAT;
@@ -18903,15 +18911,15 @@ void Parser__parse_web(web *W, int inweb_mode) {
(Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text from (%c+)%)"))) {
{
-#line 486 "inweb/Chapter 2/The Parser.w"
+#line 494 "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_184)) L->plainer = TRUE;
- else if (Str__eq(mr3.exp[0], TL_IS_185)) L->enable_hyperlinks = TRUE;
+ if (Str__eq(mr3.exp[0], TL_IS_185)) L->plainer = TRUE;
+ else if (Str__eq(mr3.exp[0], TL_IS_186)) L->enable_hyperlinks = TRUE;
else {
Main__error_in_web(
- TL_IS_186, L);
+ TL_IS_187, L);
}
} else break;
Str__clear(mr2.exp[0]);
@@ -18925,7 +18933,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
code_pl_for_body = NULL;
{
-#line 502 "inweb/Chapter 2/The Parser.w"
+#line 510 "inweb/Chapter 2/The Parser.w"
L->category = BEGIN_CODE_LCAT;
pathname *P = W->md->path_to_web;
if ((S->md->owning_module) && (S->md->owning_module->module_location))
@@ -18941,7 +18949,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_187, &(L->source), S);
+ source_line *EEL = Lines__new_source_line_in(TL_IS_188, &(L->source), S);
EEL->next_line = latest->next_line;
latest->next_line = EEL;
code_lcat_for_body = TEXT_EXTRACT_LCAT;
@@ -18959,8 +18967,16 @@ 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"%(audio (%c+)%)"))) {
+ (Regexp__match(&mr2, mr.exp[0], L"%(html (%c+)%)"))) {
Tags__add_by_name(L->owning_paragraph, TL_IS_172);
+ L->command_code = HTML_CMD;
+ L->category = COMMAND_LCAT;
+ 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"%(audio (%c+)%)"))) {
+ Tags__add_by_name(L->owning_paragraph, TL_IS_173);
L->command_code = AUDIO_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -18968,7 +18984,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
comment_mode = TRUE;
} else if ((current_paragraph) &&
(Regexp__match(&mr2, mr.exp[0], L"%(video (%c+)%)"))) {
- Tags__add_by_name(L->owning_paragraph, TL_IS_173);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_174);
L->command_code = VIDEO_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -18976,7 +18992,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
comment_mode = TRUE;
} else if ((current_paragraph) &&
(Regexp__match(&mr2, mr.exp[0], L"%(download (%c+) \"(%c*)\"%)"))) {
- Tags__add_by_name(L->owning_paragraph, TL_IS_174);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_175);
L->command_code = DOWNLOAD_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -18985,7 +19001,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
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_175);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_176);
L->command_code = DOWNLOAD_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -18994,7 +19010,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%)"))) {
- Tags__add_by_name(L->owning_paragraph, TL_IS_176);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_177);
L->command_code = CAROUSEL_UNCAPTIONED_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -19002,7 +19018,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_177);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_178);
L->command_code = CAROUSEL_BELOW_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -19010,7 +19026,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_178);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_179);
L->command_code = CAROUSEL_ABOVE_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -19018,7 +19034,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_179);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_180);
L->command_code = CAROUSEL_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -19026,7 +19042,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_180);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_181);
L->command_code = CAROUSEL_END_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -19034,7 +19050,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_181);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_182);
L->command_code = EMBED_CMD;
L->category = COMMAND_LCAT;
code_lcat_for_body = COMMENT_BODY_LCAT;
@@ -19042,10 +19058,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_182, L);
+ Main__error_in_web(TL_IS_183, L);
}
} else if (Regexp__match(&mr, L->text, L"= *%C%c*")) {
- Main__error_in_web(TL_IS_183, L);
+ Main__error_in_web(TL_IS_184, L);
}
code_plainness_for_body = L->plainer;
hyperlink_body = L->enable_hyperlinks;
@@ -19074,12 +19090,12 @@ void Parser__parse_web(web *W, int inweb_mode) {
}
{
-#line 530 "inweb/Chapter 2/The Parser.w"
+#line 538 "inweb/Chapter 2/The Parser.w"
extract_mode = FALSE;
if (Str__eq_wide_string(command_text, L"Purpose:"))
{
-#line 578 "inweb/Chapter 2/The Parser.w"
- if (before_bar == FALSE) Main__error_in_web(TL_IS_189, L);
+#line 586 "inweb/Chapter 2/The Parser.w"
+ if (before_bar == FALSE) Main__error_in_web(TL_IS_190, L);
if (S->md->using_syntax >= V2_SYNTAX)
Parser__wrong_version(S->md->using_syntax, L, "'@Purpose'", V1_SYNTAX);
L->category = PURPOSE_LCAT;
@@ -19088,14 +19104,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 531 "inweb/Chapter 2/The Parser.w"
+#line 539 "inweb/Chapter 2/The Parser.w"
else if (Str__eq_wide_string(command_text, L"Interface:"))
{
-#line 587 "inweb/Chapter 2/The Parser.w"
+#line 595 "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_190, L);
+ if (before_bar == FALSE) Main__error_in_web(TL_IS_191, L);
L->category = INTERFACE_LCAT;
L->owning_paragraph = NULL;
L->is_commentary = TRUE;
@@ -19108,14 +19124,14 @@ void Parser__parse_web(web *W, int inweb_mode) {
}
}
-#line 532 "inweb/Chapter 2/The Parser.w"
+#line 540 "inweb/Chapter 2/The Parser.w"
else if (Str__eq_wide_string(command_text, L"Definitions:"))
{
-#line 602 "inweb/Chapter 2/The Parser.w"
+#line 610 "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_191, L);
+ if (before_bar == FALSE) Main__error_in_web(TL_IS_192, L);
L->category = DEFINITIONS_LCAT;
L->owning_paragraph = NULL;
L->is_commentary = TRUE;
@@ -19123,14 +19139,14 @@ void Parser__parse_web(web *W, int inweb_mode) {
next_par_number = 1;
}
-#line 533 "inweb/Chapter 2/The Parser.w"
+#line 541 "inweb/Chapter 2/The Parser.w"
else if (Regexp__match(&mr, command_text, L"----+"))
{
-#line 615 "inweb/Chapter 2/The Parser.w"
+#line 623 "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_192, L);
+ if (before_bar == FALSE) Main__error_in_web(TL_IS_193, L);
L->category = BAR_LCAT;
L->owning_paragraph = NULL;
L->is_commentary = TRUE;
@@ -19140,14 +19156,14 @@ void Parser__parse_web(web *W, int inweb_mode) {
next_par_number = 1;
}
-#line 534 "inweb/Chapter 2/The Parser.w"
+#line 542 "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 633 "inweb/Chapter 2/The Parser.w"
+#line 641 "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;
@@ -19161,11 +19177,11 @@ void Parser__parse_web(web *W, int inweb_mode) {
hyperlink_body = FALSE;
}
-#line 538 "inweb/Chapter 2/The Parser.w"
+#line 546 "inweb/Chapter 2/The Parser.w"
else if (Str__eq_wide_string(command_text, L"d"))
{
-#line 649 "inweb/Chapter 2/The Parser.w"
+#line 657 "inweb/Chapter 2/The Parser.w"
L->category = BEGIN_DEFINITION_LCAT;
code_lcat_for_body = CONT_DEFINITION_LCAT;
code_pl_for_body = NULL;
@@ -19184,14 +19200,14 @@ void Parser__parse_web(web *W, int inweb_mode) {
Regexp__dispose_of(&mr);
}
-#line 539 "inweb/Chapter 2/The Parser.w"
+#line 547 "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 649 "inweb/Chapter 2/The Parser.w"
+#line 657 "inweb/Chapter 2/The Parser.w"
L->category = BEGIN_DEFINITION_LCAT;
code_lcat_for_body = CONT_DEFINITION_LCAT;
code_pl_for_body = NULL;
@@ -19209,104 +19225,104 @@ void Parser__parse_web(web *W, int inweb_mode) {
L->is_commentary = FALSE;
Regexp__dispose_of(&mr);
-}
-#line 543 "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 649 "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);
- Ctags__note_defined_constant(L, L->text_operand);
- comment_mode = FALSE;
- L->is_commentary = FALSE;
- Regexp__dispose_of(&mr);
-
-}
-#line 548 "inweb/Chapter 2/The Parser.w"
-;
- } else if (Str__eq_wide_string(command_text, L"enum"))
-{
-#line 670 "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_193, 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);
- Ctags__note_defined_constant(L, L->text_operand);
- comment_mode = FALSE;
- L->is_commentary = FALSE;
- Regexp__dispose_of(&mr);
-
-}
-#line 549 "inweb/Chapter 2/The Parser.w"
-
- else if ((Str__eq_wide_string(command_text, L"e")) && (S->md->using_syntax >= V2_SYNTAX))
-
-{
-#line 670 "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_193, 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);
- Ctags__note_defined_constant(L, L->text_operand);
- comment_mode = FALSE;
- L->is_commentary = FALSE;
- Regexp__dispose_of(&mr);
-
}
#line 551 "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 657 "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);
+ Ctags__note_defined_constant(L, L->text_operand);
+ comment_mode = FALSE;
+ L->is_commentary = FALSE;
+ Regexp__dispose_of(&mr);
+
+}
+#line 556 "inweb/Chapter 2/The Parser.w"
+;
+ } else if (Str__eq_wide_string(command_text, L"enum"))
+{
+#line 678 "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_194, 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);
+ Ctags__note_defined_constant(L, L->text_operand);
+ comment_mode = FALSE;
+ L->is_commentary = FALSE;
+ Regexp__dispose_of(&mr);
+
+}
+#line 557 "inweb/Chapter 2/The Parser.w"
+
+ else if ((Str__eq_wide_string(command_text, L"e")) && (S->md->using_syntax >= V2_SYNTAX))
+
+{
+#line 678 "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_194, 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);
+ Ctags__note_defined_constant(L, L->text_operand);
+ comment_mode = FALSE;
+ L->is_commentary = FALSE;
+ Regexp__dispose_of(&mr);
+
+}
+#line 559 "inweb/Chapter 2/The Parser.w"
else {
int weight = -1, new_page = FALSE;
@@ -19328,7 +19344,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
}
if (weight >= 0)
{
-#line 723 "inweb/Chapter 2/The Parser.w"
+#line 731 "inweb/Chapter 2/The Parser.w"
comment_mode = TRUE;
L->is_commentary = TRUE;
L->category = PARAGRAPH_START_LCAT;
@@ -19347,7 +19363,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
}
{
-#line 773 "inweb/Chapter 2/The Parser.w"
+#line 781 "inweb/Chapter 2/The Parser.w"
paragraph *P = CREATE(paragraph);
if (S->md->using_syntax > V1_SYNTAX) {
P->above_bar = FALSE;
@@ -19359,13 +19375,13 @@ void Parser__parse_web(web *W, int inweb_mode) {
P->placed_very_early = FALSE;
}
P->invisible = FALSE;
- if (Str__eq(Bibliographic__get_datum(W->md, TL_IS_194), TL_IS_195))
+ if (Str__eq(Bibliographic__get_datum(W->md, TL_IS_195), TL_IS_196))
P->invisible = TRUE;
P->heading_text = Str__duplicate(L->text_operand);
if ((S->md->using_syntax == V1_SYNTAX) && (before_bar))
- P->ornament = Str__duplicate(TL_IS_196);
- else
P->ornament = Str__duplicate(TL_IS_197);
+ else
+ P->ornament = Str__duplicate(TL_IS_198);
WRITE_TO(P->paragraph_number, "%d", next_par_number++);
P->parent_paragraph = NULL;
P->next_child_number = 1;
@@ -19385,7 +19401,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
current_paragraph = P;
}
-#line 739 "inweb/Chapter 2/The Parser.w"
+#line 747 "inweb/Chapter 2/The Parser.w"
;
L->owning_paragraph = current_paragraph;
@@ -19393,9 +19409,9 @@ void Parser__parse_web(web *W, int inweb_mode) {
Regexp__dispose_of(&mr);
}
-#line 570 "inweb/Chapter 2/The Parser.w"
+#line 578 "inweb/Chapter 2/The Parser.w"
- else Main__error_in_web(TL_IS_188, L);
+ else Main__error_in_web(TL_IS_189, L);
}
}
@@ -19411,7 +19427,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
;
if (comment_mode)
{
-#line 812 "inweb/Chapter 2/The Parser.w"
+#line 820 "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;
@@ -19424,7 +19440,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
;
if (comment_mode == FALSE)
{
-#line 824 "inweb/Chapter 2/The Parser.w"
+#line 832 "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;
@@ -19487,7 +19503,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
LOOP_OVER_LINKED_LIST(P, paragraph, S->paragraphs)
{
-#line 875 "inweb/Chapter 2/The Parser.w"
+#line 883 "inweb/Chapter 2/The Parser.w"
int next_footnote_in_para = 1;
footnote *current_text = NULL;
TEMPORARY_TEXT(before)
@@ -19505,7 +19521,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
if (this_is_a_cue == FALSE)
{
-#line 899 "inweb/Chapter 2/The Parser.w"
+#line 907 "inweb/Chapter 2/The Parser.w"
L->category = FOOTNOTE_TEXT_LCAT;
footnote *F = CREATE(footnote);
F->footnote_cue_number = Str__atoi(cue, 0);
@@ -19525,7 +19541,7 @@ void Parser__parse_web(web *W, int inweb_mode) {
current_text = F;
}
-#line 890 "inweb/Chapter 2/The Parser.w"
+#line 898 "inweb/Chapter 2/The Parser.w"
;
}
L->footnote_text = current_text;
@@ -19550,9 +19566,9 @@ void Parser__parse_web(web *W, int inweb_mode) {
LanguageMethods__further_parsing(W, W->main_language);
}
-#line 771 "inweb/Chapter 2/The Parser.w"
+#line 779 "inweb/Chapter 2/The Parser.w"
-#line 848 "inweb/Chapter 2/The Parser.w"
+#line 856 "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) &&
@@ -19568,16 +19584,16 @@ text_stream *Parser__extract_purpose(text_stream *prologue, source_line *XL, sec
return P;
}
-#line 873 "inweb/Chapter 2/The Parser.w"
+#line 881 "inweb/Chapter 2/The Parser.w"
-#line 920 "inweb/Chapter 2/The Parser.w"
+#line 928 "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_198);
- text_stream *fn_off_notation =
Bibliographic__get_datum(W->md, TL_IS_199);
- if (Str__ne(fn_on_notation, TL_IS_200)) {
+ text_stream *fn_off_notation =
+ Bibliographic__get_datum(W->md, TL_IS_200);
+ if (Str__ne(fn_on_notation, TL_IS_201)) {
int N1 = Str__len(fn_on_notation);
int N2 = Str__len(fn_off_notation);
if ((N1 > 0) && (N2 > 0))
@@ -19624,7 +19640,7 @@ footnote *Parser__find_footnote_in_para(paragraph *P, text_stream *cue) {
return NULL;
}
-#line 980 "inweb/Chapter 2/The Parser.w"
+#line 988 "inweb/Chapter 2/The Parser.w"
text_stream *Parser__dimensions(text_stream *item, int *w, int *h, source_line *L) {
int sv = L->owning_section->md->using_syntax;
*w = -1; *h = -1;
@@ -19667,7 +19683,7 @@ text_stream *Parser__dimensions(text_stream *item, int *w, int *h, source_line *
return use;
}
-#line 1028 "inweb/Chapter 2/The Parser.w"
+#line 1036 "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 of version %d syntax (you're using v%d)",
@@ -19712,10 +19728,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_201, 6)) {
+ if (Str__prefix_eq(name, TL_IS_202, 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_202, 7)) {
+ } else if (Str__prefix_eq(name, TL_IS_203, 7)) {
Str__substr(tag->ifdef_symbol, Str__at(name, 7), Str__end(name));
tag->ifdef_positive = FALSE;
}
@@ -19810,20 +19826,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_204);
- } else {
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_206);
+ TextWeaver__commentary_text(tree, ap, TL_IS_207);
}
TextWeaver__commentary_text(tree, ap, pt->the_tag->ifdef_symbol);
}
if (c > 0) {
- if (c == 1) TextWeaver__commentary_text(tree, ap, TL_IS_207);
- else TextWeaver__commentary_text(tree, ap, TL_IS_208);
- if (sense) TextWeaver__commentary_text(tree, ap, TL_IS_209);
- else TextWeaver__commentary_text(tree, ap, TL_IS_210);
+ 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);
}
}
@@ -19842,26 +19858,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_204);
- } else {
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_206);
+ TextWeaver__commentary_text(tree, ap, TL_IS_207);
}
TextWeaver__commentary_text(tree, ap, pt->the_tag->ifdef_symbol);
}
if (c > 0) {
- if (c == 1) TextWeaver__commentary_text(tree, ap, TL_IS_207);
- else TextWeaver__commentary_text(tree, ap, TL_IS_208);
- if (sense) TextWeaver__commentary_text(tree, ap, TL_IS_209);
- else TextWeaver__commentary_text(tree, ap, TL_IS_210);
+ 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);
}
}
#line 139 "inweb/Chapter 2/Tags.w"
;
- if (d > 0) TextWeaver__commentary_text(tree, ap, TL_IS_203);
+ if (d > 0) TextWeaver__commentary_text(tree, ap, TL_IS_204);
}
#line 22 "inweb/Chapter 2/Enumerated Constants.w"
@@ -19885,7 +19901,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_211, L);
+ Main__error_in_web(TL_IS_212, L);
WRITE_TO(pf, "BOGUS");
}
Regexp__dispose_of(&mr);
@@ -19901,7 +19917,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_212, L);
+ } else Main__error_in_web(TL_IS_213, L);
}
#line 45 "inweb/Chapter 2/Enumerated Constants.w"
@@ -19909,7 +19925,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_213, L);
+ if (es) Main__error_in_web(TL_IS_214, L);
else {
es = CREATE(enumeration_set);
es->postfix = Str__duplicate(pf);
@@ -20199,7 +20215,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_214, L);
+ Main__error_in_web(TL_IS_215, L);
}
#line 109 "inweb/Chapter 3/The Analyser.w"
@@ -20434,23 +20450,23 @@ void Analyser__analyse_find(web *W, source_line *L, text_stream *identifier, int
#line 392 "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_215);
+ filename *prototype = Filenames__in(W->md->path_to_web, TL_IS_216);
if (!(TextFiles__exists(prototype)))
- prototype = Filenames__in(path_to_inweb_materials, TL_IS_216);
+ prototype = Filenames__in(path_to_inweb_materials, TL_IS_217);
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_217);
+ filename *prototype = Filenames__in(W->md->path_to_web, TL_IS_218);
if (!(TextFiles__exists(prototype)))
- prototype = Filenames__in(path_to_inweb_materials, TL_IS_218);
+ prototype = Filenames__in(path_to_inweb_materials, TL_IS_219);
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_219, F, pattern, NULL, NULL, NULL, into);
+ Collater__collate(OUT, W, TL_IS_220, F, pattern, NULL, NULL, NULL, into);
}
void Collater__for_order(text_stream *OUT, weave_order *wv,
@@ -20605,33 +20621,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_220)) {
+ if (Str__eq(condition, TL_IS_221)) {
if (cls->for_web->md->chaptered) level = IF_TRUE_LEVEL;
- } else if (Str__eq(condition, TL_IS_221)) {
+ } else if (Str__eq(condition, TL_IS_222)) {
if (LinkedLists__len(cls->modules) > 0)
level = IF_TRUE_LEVEL;
- } else if (Str__eq(condition, TL_IS_222)) {
+ } else if (Str__eq(condition, TL_IS_223)) {
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_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) {
TEMPORARY_TEXT(url)
TEMPORARY_TEXT(purpose)
WRITE_TO(url, "%p", M->module_location);
- Readme__write_var(purpose, url, TL_IS_224);
+ Readme__write_var(purpose, url, TL_IS_225);
if (Str__len(purpose) > 0) level = IF_TRUE_LEVEL;
DISCARD_TEXT(url)
DISCARD_TEXT(purpose)
}
- } else if (Str__eq(condition, TL_IS_225)) {
+ } else if (Str__eq(condition, TL_IS_226)) {
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_226)) {
+ } else if (Str__eq(condition, TL_IS_227)) {
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;
@@ -20962,7 +20978,7 @@ 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_227);
+ Readme__write_var(substituted, url, TL_IS_228);
DISCARD_TEXT(url)
} else {
WRITE_TO(substituted, "%S for %S", varname, M->module_name);
@@ -21162,7 +21178,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
#line 720 "inweb/Chapter 3/The Collater.w"
;
WRITE_TO(substituted, "");
- } else if (Str__eq(url, TL_IS_228)) {
+ } else if (Str__eq(url, TL_IS_229)) {
WRITE_TO(substituted, "", url);
WRITE_TO(substituted, "");
@@ -21263,7 +21279,7 @@ void Collater__process(text_stream *OUT, collater_state *cls) {
#line 720 "inweb/Chapter 3/The Collater.w"
;
WRITE_TO(substituted, " ");
- } else if (Str__eq(url, TL_IS_228)) {
+ } else if (Str__eq(url, TL_IS_229)) {
WRITE_TO(substituted, " ", url);
WRITE_TO(substituted, "");
@@ -21402,11 +21418,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_229)) {
- if (Str__eq_insensitive(O2, TL_IS_230) == FALSE) return 1;
+ if (Str__eq_insensitive(O1, TL_IS_230)) {
+ if (Str__eq_insensitive(O2, TL_IS_231) == FALSE) return 1;
return 0;
}
- if (Str__eq_insensitive(O2, TL_IS_231)) return -1;
+ if (Str__eq_insensitive(O2, TL_IS_232)) return -1;
return Str__cmp_insensitive(O1, O2);
}
@@ -21418,7 +21434,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_232);
+ tree_node *T = WeaveTree__tail(tree, TL_IS_233);
Trees__make_child(H, tree->root);
Trees__make_child(B, tree->root);
Trees__make_child(T, tree->root);
@@ -21532,7 +21548,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_233);
+ Weaver__weave_subheading(tree, wv, state->ap, TL_IS_234);
state->next_heading_without_vertical_skip = TRUE;
state->horizontal_rule_just_drawn = FALSE;
continue;
@@ -21572,7 +21588,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_234, L); /* should never happen */
+ Main__error_in_web(TL_IS_235, L); /* should never happen */
{
@@ -21634,67 +21650,65 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
Trees__make_child(WeaveTree__grammar_index(tree), state->ap);
if (L->command_code == FIGURE_CMD)
{
-#line 296 "inweb/Chapter 3/The Weaver.w"
+#line 297 "inweb/Chapter 3/The Weaver.w"
int w, h;
text_stream *figname = Parser__dimensions(L->text_operand, &w, &h, L);
Trees__make_child(WeaveTree__figure(tree, figname, w, h), state->ap);
}
#line 281 "inweb/Chapter 3/The Weaver.w"
+;
+ if (L->command_code == HTML_CMD)
+{
+#line 302 "inweb/Chapter 3/The Weaver.w"
+ Trees__make_child(WeaveTree__raw_extract(tree, L->text_operand),
+ state->ap);
+
+}
+#line 282 "inweb/Chapter 3/The Weaver.w"
;
if (L->command_code == AUDIO_CMD)
{
-#line 301 "inweb/Chapter 3/The Weaver.w"
+#line 306 "inweb/Chapter 3/The Weaver.w"
int w, h;
text_stream *figname = Parser__dimensions(L->text_operand, &w, &h, L);
Trees__make_child(WeaveTree__audio(tree, figname, w), state->ap);
}
-#line 282 "inweb/Chapter 3/The Weaver.w"
+#line 283 "inweb/Chapter 3/The Weaver.w"
;
if (L->command_code == VIDEO_CMD)
{
-#line 306 "inweb/Chapter 3/The Weaver.w"
+#line 311 "inweb/Chapter 3/The Weaver.w"
int w, h;
text_stream *figname = Parser__dimensions(L->text_operand, &w, &h, L);
Trees__make_child(WeaveTree__video(tree, figname, w, h), state->ap);
}
-#line 283 "inweb/Chapter 3/The Weaver.w"
+#line 284 "inweb/Chapter 3/The Weaver.w"
;
if (L->command_code == DOWNLOAD_CMD)
{
-#line 311 "inweb/Chapter 3/The Weaver.w"
+#line 316 "inweb/Chapter 3/The Weaver.w"
Trees__make_child(WeaveTree__download(tree, L->text_operand, L->text_operand2),
state->ap);
}
-#line 284 "inweb/Chapter 3/The Weaver.w"
+#line 285 "inweb/Chapter 3/The Weaver.w"
;
if (L->command_code == EMBED_CMD)
{
-#line 315 "inweb/Chapter 3/The Weaver.w"
+#line 320 "inweb/Chapter 3/The Weaver.w"
int w, h;
text_stream *ID = Parser__dimensions(L->text_operand2, &w, &h, L);
Trees__make_child(WeaveTree__embed(tree, L->text_operand, ID, w, h), state->ap);
}
-#line 285 "inweb/Chapter 3/The Weaver.w"
+#line 286 "inweb/Chapter 3/The Weaver.w"
;
if (L->command_code == CAROUSEL_CMD)
{
-#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;
- state->carousel_node = C;
-
-}
-#line 286 "inweb/Chapter 3/The Weaver.w"
-;
- if (L->command_code == CAROUSEL_ABOVE_CMD)
-{
-#line 320 "inweb/Chapter 3/The Weaver.w"
+#line 325 "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;
@@ -21703,9 +21717,9 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
}
#line 287 "inweb/Chapter 3/The Weaver.w"
;
- if (L->command_code == CAROUSEL_BELOW_CMD)
+ if (L->command_code == CAROUSEL_ABOVE_CMD)
{
-#line 320 "inweb/Chapter 3/The Weaver.w"
+#line 325 "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;
@@ -21714,9 +21728,9 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
}
#line 288 "inweb/Chapter 3/The Weaver.w"
;
- if (L->command_code == CAROUSEL_UNCAPTIONED_CMD)
+ if (L->command_code == CAROUSEL_BELOW_CMD)
{
-#line 320 "inweb/Chapter 3/The Weaver.w"
+#line 325 "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;
@@ -21724,15 +21738,26 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
}
#line 289 "inweb/Chapter 3/The Weaver.w"
+;
+ if (L->command_code == CAROUSEL_UNCAPTIONED_CMD)
+{
+#line 325 "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;
+ state->carousel_node = C;
+
+}
+#line 290 "inweb/Chapter 3/The Weaver.w"
;
if (L->command_code == CAROUSEL_END_CMD)
{
-#line 326 "inweb/Chapter 3/The Weaver.w"
+#line 331 "inweb/Chapter 3/The Weaver.w"
state->ap = state->para_node;
state->carousel_node = NULL;
}
-#line 290 "inweb/Chapter 3/The Weaver.w"
+#line 291 "inweb/Chapter 3/The Weaver.w"
;
/* Otherwise assume it was a tangler command, and ignore it here */
continue;
@@ -21758,21 +21783,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 334 "inweb/Chapter 3/The Weaver.w"
+#line 339 "inweb/Chapter 3/The Weaver.w"
{
-#line 346 "inweb/Chapter 3/The Weaver.w"
+#line 351 "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 334 "inweb/Chapter 3/The Weaver.w"
+#line 339 "inweb/Chapter 3/The Weaver.w"
;
{
-#line 355 "inweb/Chapter 3/The Weaver.w"
+#line 360 "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();
@@ -21785,19 +21810,19 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
}
}
-#line 335 "inweb/Chapter 3/The Weaver.w"
+#line 340 "inweb/Chapter 3/The Weaver.w"
;
{
-#line 370 "inweb/Chapter 3/The Weaver.w"
+#line 375 "inweb/Chapter 3/The Weaver.w"
match_results mr = Regexp__create_mr();
if (Regexp__match(&mr, matter, L"%(-...%) (%c*)")) { /* continue double */
Weaver__change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, NULL);
- Trees__make_child(WeaveTree__weave_item_node(tree, 2, TL_IS_235), state->ap);
+ Trees__make_child(WeaveTree__weave_item_node(tree, 2, TL_IS_236), state->ap);
Str__copy(matter, mr.exp[0]);
} else if (Regexp__match(&mr, matter, L"%(...%) (%c*)")) { /* continue single */
Weaver__change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, 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"%(-([a-zA-Z0-9*]+)%) (%c*)")) { /* begin double */
Weaver__change_material(tree, state, COMMENTARY_MATERIAL, FALSE, NULL, NULL);
@@ -21811,11 +21836,11 @@ 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 341 "inweb/Chapter 3/The Weaver.w"
;
{
-#line 394 "inweb/Chapter 3/The Weaver.w"
+#line 399 "inweb/Chapter 3/The Weaver.w"
match_results mr = Regexp__create_mr();
if (Regexp__match(&mr, matter, L"\t|(%c*)|(%c*?)")) {
TEMPORARY_TEXT(original)
@@ -21836,22 +21861,22 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
Regexp__dispose_of(&mr);
}
-#line 337 "inweb/Chapter 3/The Weaver.w"
+#line 342 "inweb/Chapter 3/The Weaver.w"
;
{
-#line 414 "inweb/Chapter 3/The Weaver.w"
+#line 419 "inweb/Chapter 3/The Weaver.w"
if (L->category == FOOTNOTE_TEXT_LCAT) {
Weaver__change_material(tree, state, FOOTNOTES_MATERIAL, FALSE, NULL, NULL);
footnote *F = L->footnote_text;
tree_node *FN = WeaveTree__footnote(tree, F->cue_text);
Trees__make_child(FN, state->material_node);
- if (F->cued_already == FALSE) Main__error_in_web(TL_IS_237, L);
+ if (F->cued_already == FALSE) Main__error_in_web(TL_IS_238, L);
state->ap = FN;
}
}
-#line 338 "inweb/Chapter 3/The Weaver.w"
+#line 343 "inweb/Chapter 3/The Weaver.w"
;
WRITE_TO(matter, "\n");
Weaver__commentary_text(tree, wv, state->ap, matter);
@@ -21862,10 +21887,10 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
else
{
-#line 429 "inweb/Chapter 3/The Weaver.w"
+#line 434 "inweb/Chapter 3/The Weaver.w"
{
-#line 463 "inweb/Chapter 3/The Weaver.w"
+#line 468 "inweb/Chapter 3/The Weaver.w"
if (state->kind_of_material != CODE_MATERIAL) {
int will_be = CODE_MATERIAL;
if (L->category == MACRO_DEFINITION_LCAT)
@@ -21880,10 +21905,10 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
programming_language *pl = L->colour_as;
if (pl == NULL) pl = S->sect_language;
if (will_be != CODE_MATERIAL) pl = NULL;
- theme_tag *T = Tags__find_by_name(TL_IS_238, FALSE);
+ theme_tag *T = Tags__find_by_name(TL_IS_239, FALSE);
if ((T) && (Tags__tagged_with(L->owning_paragraph, T))) {
programming_language *prepl =
- Languages__find_by_name(TL_IS_239, wv->weave_web, FALSE);
+ Languages__find_by_name(TL_IS_240, wv->weave_web, FALSE);
if (prepl) pl = prepl;
}
text_stream *note = NULL;
@@ -21896,11 +21921,11 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
}
}
-#line 429 "inweb/Chapter 3/The Weaver.w"
+#line 434 "inweb/Chapter 3/The Weaver.w"
;
{
-#line 496 "inweb/Chapter 3/The Weaver.w"
+#line 501 "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;
@@ -21911,7 +21936,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
}
}
-#line 430 "inweb/Chapter 3/The Weaver.w"
+#line 435 "inweb/Chapter 3/The Weaver.w"
;
Str__rectify_indentation(matter, 4);
@@ -21920,7 +21945,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
TEMPORARY_TEXT(concluding_comment)
{
-#line 509 "inweb/Chapter 3/The Weaver.w"
+#line 514 "inweb/Chapter 3/The Weaver.w"
TEMPORARY_TEXT(part_before_comment)
TEMPORARY_TEXT(part_within_comment)
programming_language *pl = S->sect_language;
@@ -21934,30 +21959,30 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
DISCARD_TEXT(part_within_comment)
}
-#line 436 "inweb/Chapter 3/The Weaver.w"
+#line 441 "inweb/Chapter 3/The Weaver.w"
;
{
-#line 524 "inweb/Chapter 3/The Weaver.w"
+#line 529 "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_240);
+ Str__copy(prefatory, TL_IS_241);
Str__copy(matter, mr.exp[0]);
} else if (Regexp__match(&mr, matter, L"@default (%c*)")) {
- Str__copy(prefatory, TL_IS_241);
+ Str__copy(prefatory, TL_IS_242);
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_242);
+ Str__copy(prefatory, TL_IS_243);
Str__copy(matter, mr.exp[0]);
}
Regexp__dispose_of(&mr);
}
}
-#line 437 "inweb/Chapter 3/The Weaver.w"
+#line 442 "inweb/Chapter 3/The Weaver.w"
;
tree_node *CL = WeaveTree__code_line(tree);
@@ -21968,7 +21993,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
{
-#line 542 "inweb/Chapter 3/The Weaver.w"
+#line 547 "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);
@@ -21980,12 +22005,12 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
if (taken) goto ClumsyLabel;
}
-#line 445 "inweb/Chapter 3/The Weaver.w"
+#line 450 "inweb/Chapter 3/The Weaver.w"
;
{
-#line 553 "inweb/Chapter 3/The Weaver.w"
+#line 558 "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);
@@ -22003,7 +22028,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
Regexp__dispose_of(&mr);
}
-#line 447 "inweb/Chapter 3/The Weaver.w"
+#line 452 "inweb/Chapter 3/The Weaver.w"
;
TEMPORARY_TEXT(colouring)
LanguageMethods__syntax_colour(S->sect_language, wv, L, matter, colouring);
@@ -22073,62 +22098,62 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo
#line 127 "inweb/Chapter 3/The Weaver.w"
-#line 574 "inweb/Chapter 3/The Weaver.w"
+#line 579 "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;
- theme_tag *T = Tags__find_by_name(TL_IS_243, FALSE);
+ theme_tag *T = Tags__find_by_name(TL_IS_244, FALSE);
if ((T) && (Tags__tagged_with(P, T)))
{
-#line 592 "inweb/Chapter 3/The Weaver.w"
+#line 597 "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_244);
+ TextWeaver__commentary_text(tree, ap, TL_IS_245);
TEMPORARY_TEXT(url)
int ext = FALSE;
if (Colonies__resolve_reference_in_weave(url, NULL, wv->weave_to,
- TL_IS_245, wv->weave_web->md, NULL, &ext))
- Trees__make_child(WeaveTree__url(tree, url, TL_IS_246, ext), ap);
+ TL_IS_246, wv->weave_web->md, NULL, &ext))
+ Trees__make_child(WeaveTree__url(tree, url, TL_IS_247, ext), ap);
else
- TextWeaver__commentary_text(tree, ap, TL_IS_247);
+ TextWeaver__commentary_text(tree, ap, TL_IS_248);
DISCARD_TEXT(url)
- TextWeaver__commentary_text(tree, ap, TL_IS_248);
+ TextWeaver__commentary_text(tree, ap, TL_IS_249);
}
-#line 579 "inweb/Chapter 3/The Weaver.w"
+#line 584 "inweb/Chapter 3/The Weaver.w"
;
Tags__show_endnote_on_ifdefs(tree, ap, P);
if (P->defines_macro)
{
-#line 606 "inweb/Chapter 3/The Weaver.w"
+#line 611 "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_249);
+ TextWeaver__commentary_text(tree, ap, TL_IS_250);
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_250);
+ if (ct == 1) TextWeaver__commentary_text(tree, ap, TL_IS_251);
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_251);
- else TextWeaver__commentary_text(tree, ap, TL_IS_252);
+ if (k < ct-1) TextWeaver__commentary_text(tree, ap, TL_IS_252);
+ else 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);
}
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_254); break;
- case 3: TextWeaver__commentary_text(tree, ap, TL_IS_255); break;
- case 4: TextWeaver__commentary_text(tree, ap, TL_IS_256); break;
- case 5: TextWeaver__commentary_text(tree, ap, TL_IS_257); break;
+ case 2: TextWeaver__commentary_text(tree, ap, TL_IS_255); break;
+ case 3: TextWeaver__commentary_text(tree, ap, TL_IS_256); break;
+ case 4: TextWeaver__commentary_text(tree, ap, TL_IS_257); break;
+ case 5: TextWeaver__commentary_text(tree, ap, TL_IS_258); break;
default: {
TEMPORARY_TEXT(mt)
WRITE_TO(mt, " (%d times)", mu->multiplicity);
@@ -22139,30 +22164,30 @@ void Weaver__show_endnotes_on_previous_paragraph(heterogeneous_tree *tree,
}
}
}
- TextWeaver__commentary_text(tree, ap, TL_IS_258);
+ TextWeaver__commentary_text(tree, ap, TL_IS_259);
}
-#line 582 "inweb/Chapter 3/The Weaver.w"
+#line 587 "inweb/Chapter 3/The Weaver.w"
;
language_function *fn;
LOOP_OVER_LINKED_LIST(fn, language_function, P->functions)
{
-#line 645 "inweb/Chapter 3/The Weaver.w"
+#line 650 "inweb/Chapter 3/The Weaver.w"
if (fn->usage_described == FALSE)
Weaver__show_function_usage(tree, wv, ap, P, fn, FALSE);
}
-#line 585 "inweb/Chapter 3/The Weaver.w"
+#line 590 "inweb/Chapter 3/The Weaver.w"
;
language_type *st;
LOOP_OVER_LINKED_LIST(st, language_type, P->structures)
{
-#line 649 "inweb/Chapter 3/The Weaver.w"
+#line 654 "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_259);
+ TextWeaver__commentary_text(tree, ap, TL_IS_260);
TextWeaver__commentary_text(tree, ap, st->structure_name);
section *S;
@@ -22186,25 +22211,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_260);
+ if (external == 0) TextWeaver__commentary_text(tree, ap, TL_IS_261);
else {
- TextWeaver__commentary_text(tree, ap, TL_IS_261);
+ TextWeaver__commentary_text(tree, ap, TL_IS_262);
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_262);
+ if (c++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_263);
TextWeaver__commentary_text(tree, ap, S->md->sect_range);
}
- if (P->under_section->scratch_flag) TextWeaver__commentary_text(tree, ap, TL_IS_263);
+ if (P->under_section->scratch_flag) TextWeaver__commentary_text(tree, ap, TL_IS_264);
}
- TextWeaver__commentary_text(tree, ap, TL_IS_264);
+ TextWeaver__commentary_text(tree, ap, TL_IS_265);
}
-#line 588 "inweb/Chapter 3/The Weaver.w"
+#line 593 "inweb/Chapter 3/The Weaver.w"
;
}
-#line 689 "inweb/Chapter 3/The Weaver.w"
+#line 694 "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;
@@ -22215,7 +22240,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_265);
+ TextWeaver__commentary_text(tree, ap, TL_IS_266);
TextWeaver__commentary_text(tree, ap, fn->function_name);
}
int used_flag = FALSE;
@@ -22227,9 +22252,9 @@ void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv,
(P->under_section == hteu->usage_recorded_at->under_section))
{
-#line 728 "inweb/Chapter 3/The Weaver.w"
+#line 733 "inweb/Chapter 3/The Weaver.w"
if (as_list == FALSE) {
- if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_270);
+ if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_271);
}
used_flag = TRUE;
section *S = hteu->usage_recorded_at->under_section;
@@ -22237,30 +22262,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_271);
- else TextWeaver__commentary_text(tree, ap, TL_IS_272);
+ if (last_cited_in != P->under_section) TextWeaver__commentary_text(tree, ap, TL_IS_272);
+ else TextWeaver__commentary_text(tree, ap, TL_IS_273);
} 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_273);
- else TextWeaver__commentary_text(tree, ap, TL_IS_274);
+ if (as_list == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_274);
+ else TextWeaver__commentary_text(tree, ap, TL_IS_275);
}
- if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_275);
+ if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_276);
Trees__make_child(WeaveTree__locale(tree, hteu->usage_recorded_at, NULL), ap);
last_cited_in = hteu->usage_recorded_at->under_section;
}
-#line 709 "inweb/Chapter 3/The Weaver.w"
+#line 714 "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 728 "inweb/Chapter 3/The Weaver.w"
+#line 733 "inweb/Chapter 3/The Weaver.w"
if (as_list == FALSE) {
- if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_270);
+ if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_271);
}
used_flag = TRUE;
section *S = hteu->usage_recorded_at->under_section;
@@ -22268,38 +22293,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_271);
- else TextWeaver__commentary_text(tree, ap, TL_IS_272);
+ if (last_cited_in != P->under_section) TextWeaver__commentary_text(tree, ap, TL_IS_272);
+ else TextWeaver__commentary_text(tree, ap, TL_IS_273);
} 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_273);
- else TextWeaver__commentary_text(tree, ap, TL_IS_274);
+ if (as_list == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_274);
+ else TextWeaver__commentary_text(tree, ap, TL_IS_275);
}
- if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_275);
+ if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_276);
Trees__make_child(WeaveTree__locale(tree, hteu->usage_recorded_at, NULL), ap);
last_cited_in = hteu->usage_recorded_at->under_section;
}
-#line 712 "inweb/Chapter 3/The Weaver.w"
+#line 717 "inweb/Chapter 3/The Weaver.w"
;
if (used_flag == FALSE) {
if (as_list == FALSE) {
- TextWeaver__commentary_text(tree, ap, TL_IS_266);
- } else {
TextWeaver__commentary_text(tree, ap, TL_IS_267);
+ } else {
+ TextWeaver__commentary_text(tree, ap, TL_IS_268);
}
}
if (as_list == FALSE) {
if ((last_cited_in != P->under_section) && (last_cited_in))
- TextWeaver__commentary_text(tree, ap, TL_IS_268);
- TextWeaver__commentary_text(tree, ap, TL_IS_269);
+ TextWeaver__commentary_text(tree, ap, TL_IS_269);
+ TextWeaver__commentary_text(tree, ap, TL_IS_270);
}
}
-#line 754 "inweb/Chapter 3/The Weaver.w"
+#line 759 "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);
@@ -22338,7 +22363,7 @@ void Weaver__commentary_text(heterogeneous_tree *tree, weave_order *wv,
TextWeaver__commentary_text(tree, ap, matter);
}
-#line 797 "inweb/Chapter 3/The Weaver.w"
+#line 802 "inweb/Chapter 3/The Weaver.w"
int Weaver__weave_table_of_contents(heterogeneous_tree *tree,
tree_node *ap, section *S) {
int noteworthy = 0;
@@ -22377,8 +22402,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_276):(TL_IS_277));
- if (Str__ne(code_in_comments_notation, TL_IS_278))
+ (in_code)?(TL_IS_277):(TL_IS_278));
+ if (Str__ne(code_in_comments_notation, TL_IS_279))
{
#line 51 "inweb/Chapter 3/The Weaver of Text.w"
for (int i=0; i < Str__len(matter); i++) {
@@ -22403,8 +22428,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_279);
- if (Str__ne(tex_notation, TL_IS_280))
+ TL_IS_280);
+ if (Str__ne(tex_notation, TL_IS_281))
{
#line 99 "inweb/Chapter 3/The Weaver of Text.w"
int N = Str__len(tex_notation);
@@ -22439,8 +22464,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_281);
- if (Str__ne(tex_notation, TL_IS_282))
+ TL_IS_282);
+ if (Str__ne(tex_notation, TL_IS_283))
{
#line 99 "inweb/Chapter 3/The Weaver of Text.w"
int N = Str__len(tex_notation);
@@ -22475,8 +22500,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_283);
- if (Str__ne(xref_notation, TL_IS_284))
+ TL_IS_284);
+ if (Str__ne(xref_notation, TL_IS_285))
{
#line 150 "inweb/Chapter 3/The Weaver of Text.w"
int N = Str__len(xref_notation);
@@ -22536,8 +22561,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_285)) ||
- (Str__includes_at(matter, i, TL_IS_286))) {
+ if ((Str__includes_at(matter, i, TL_IS_286)) ||
+ (Str__includes_at(matter, i, TL_IS_287))) {
TEMPORARY_TEXT(before)
Str__copy(before, matter); Str__truncate(before, i);
TEMPORARY_TEXT(after)
@@ -22585,7 +22610,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_287, wv->current_weave_line);
+ Main__error_in_web(TL_IS_288, wv->current_weave_line);
}
}
DISCARD_TEXT(before)
@@ -22639,8 +22664,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_290)) ||
- (Str__includes_at(matter, i, TL_IS_291))) {
+ if ((Str__includes_at(matter, i, TL_IS_291)) ||
+ (Str__includes_at(matter, i, TL_IS_292))) {
TEMPORARY_TEXT(after)
Str__substr(after, Str__at(matter, i), Str__end(matter));
match_results mr = Regexp__create_mr();
@@ -22658,8 +22683,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_288);
- if (Str__ne(xref_notation, TL_IS_289))
+ TL_IS_289);
+ if (Str__ne(xref_notation, TL_IS_290))
{
#line 277 "inweb/Chapter 3/The Weaver of Text.w"
@@ -22796,7 +22821,7 @@ void Tangler__tangle(web *W, tangle_target *target, filename *dest_file) {
{
#line 88 "inweb/Chapter 3/The Tangler.w"
- if (L->owning_paragraph == NULL) Main__error_in_web(TL_IS_292, L);
+ if (L->owning_paragraph == NULL) Main__error_in_web(TL_IS_293, L);
else Tags__open_ifdefs(OUT, L->owning_paragraph);
LanguageMethods__start_definition(OUT, lang,
L->text_operand,
@@ -22818,7 +22843,7 @@ void Tangler__tangle(web *W, tangle_target *target, filename *dest_file) {
{
#line 88 "inweb/Chapter 3/The Tangler.w"
- if (L->owning_paragraph == NULL) Main__error_in_web(TL_IS_292, L);
+ if (L->owning_paragraph == NULL) Main__error_in_web(TL_IS_293, L);
else Tags__open_ifdefs(OUT, L->owning_paragraph);
LanguageMethods__start_definition(OUT, lang,
L->text_operand,
@@ -22969,7 +22994,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_293, L);
+ Main__error_in_web(TL_IS_294, L);
WRITE_TO(STDERR, "Macro is '%S'\n", temp);
LanguageMethods__comment(OUT, lang, temp); /* recover by putting macro name in comment */
}
@@ -23039,7 +23064,7 @@ programming_language *Languages__find_by_name(text_stream *lname, web *W,
#line 27 "inweb/Chapter 4/Programming Languages.w"
filename *F = NULL;
if (W) {
- pathname *P = Pathnames__down(W->md->path_to_web, TL_IS_294);
+ pathname *P = Pathnames__down(W->md->path_to_web, TL_IS_295);
{
#line 43 "inweb/Chapter 4/Programming Languages.w"
@@ -23089,7 +23114,7 @@ programming_language *Languages__find_by_name(text_stream *lname, web *W,
#line 54 "inweb/Chapter 4/Programming Languages.w"
programming_language *Languages__default(web *W) {
- return Languages__find_by_name(TL_IS_295, W, TRUE);
+ return Languages__find_by_name(TL_IS_296, W, TRUE);
}
void Languages__show(OUTPUT_STREAM) {
@@ -23131,7 +23156,7 @@ void Languages__read_definitions(pathname *P) {
}
pathname *Languages__default_directory(void) {
- return Pathnames__down(path_to_inweb, TL_IS_296);
+ return Pathnames__down(path_to_inweb, TL_IS_297);
}
#line 148 "inweb/Chapter 4/Programming Languages.w"
@@ -23191,7 +23216,7 @@ programming_language *Languages__read_definition(filename *F) {
{
#line 219 "inweb/Chapter 4/Programming Languages.w"
if (pl->C_like) CLike__make_c_like(pl);
- if (Str__eq(pl->language_name, TL_IS_297)) InCSupport__add_features(pl);
+ if (Str__eq(pl->language_name, TL_IS_298)) InCSupport__add_features(pl);
ACMESupport__add_fallbacks(pl);
}
@@ -23213,7 +23238,7 @@ void Languages__read_definition_line(text_stream *line, text_file_position *tfp,
if (state->current_block)
{
#line 327 "inweb/Chapter 4/Programming Languages.w"
- if (Str__eq(line, TL_IS_329)) {
+ if (Str__eq(line, TL_IS_330)) {
state->current_block = state->current_block->parent;
} else if (Regexp__match(&mr, line, L"characters {")) {
colouring_rule *rule = Languages__new_rule(state->current_block);
@@ -23229,7 +23254,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);
wchar_t r = UNQUOTED_COLOUR;
- if (Str__ne(mr.exp[0], TL_IS_330)) r = Languages__colour(mr.exp[0], tfp);
+ if (Str__ne(mr.exp[0], TL_IS_331)) r = Languages__colour(mr.exp[0], tfp);
rule->execute_block = Languages__new_block(state->current_block, (int) r);
state->current_block = rule->execute_block;
} else if (Regexp__match(&mr, line, L"instances of (%c+) {")) {
@@ -23284,66 +23309,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_298)) pl->language_name = Languages__text(value, tfp, TRUE);
- else if (Str__eq(key, TL_IS_299))
- pl->language_details = Languages__text(value, tfp, TRUE);
+ if (Str__eq(key, TL_IS_299)) pl->language_name = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_300))
- pl->file_extension = Languages__text(value, tfp, TRUE);
+ pl->language_details = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_301))
- pl->line_comment = Languages__text(value, tfp, TRUE);
+ pl->file_extension = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_302))
- pl->whole_line_comment = Languages__text(value, tfp, TRUE);
+ pl->line_comment = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_303))
- 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_304))
- 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_305))
- pl->string_literal = Languages__text(value, tfp, TRUE);
+ pl->multiline_comment_close = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_306))
- pl->string_literal_escape = Languages__text(value, tfp, TRUE);
+ pl->string_literal = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_307))
- pl->character_literal = Languages__text(value, tfp, TRUE);
+ pl->string_literal_escape = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_308))
- pl->character_literal_escape = Languages__text(value, tfp, TRUE);
+ pl->character_literal = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_309))
- 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_310))
- 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_311))
- 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_312))
- 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_313))
- pl->shebang = Languages__text(value, tfp, TRUE);
+ pl->negative_literal_prefix = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_314))
- pl->line_marker = Languages__text(value, tfp, TRUE);
+ pl->shebang = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_315))
- pl->before_macro_expansion = Languages__text(value, tfp, TRUE);
+ pl->line_marker = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_316))
- 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_317))
- pl->start_definition = Languages__text(value, tfp, TRUE);
+ pl->after_macro_expansion = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_318))
- pl->prolong_definition = Languages__text(value, tfp, TRUE);
+ pl->start_definition = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_319))
- pl->end_definition = Languages__text(value, tfp, TRUE);
+ pl->prolong_definition = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_320))
- pl->start_ifdef = Languages__text(value, tfp, TRUE);
+ pl->end_definition = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_321))
- pl->start_ifndef = Languages__text(value, tfp, TRUE);
+ pl->start_ifdef = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_322))
- pl->end_ifdef = Languages__text(value, tfp, TRUE);
+ pl->start_ifndef = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_323))
- pl->end_ifndef = Languages__text(value, tfp, TRUE);
+ pl->end_ifdef = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_324))
- pl->C_like = Languages__boolean(value, tfp);
+ pl->end_ifndef = Languages__text(value, tfp, TRUE);
else if (Str__eq(key, TL_IS_325))
- pl->suppress_disclaimer = Languages__boolean(value, tfp);
+ pl->C_like = Languages__boolean(value, tfp);
else if (Str__eq(key, TL_IS_326))
- pl->supports_namespaces = Languages__boolean(value, tfp);
+ pl->suppress_disclaimer = Languages__boolean(value, tfp);
else if (Str__eq(key, TL_IS_327))
- Languages__regexp(pl->function_notation, value, tfp);
+ pl->supports_namespaces = Languages__boolean(value, tfp);
else if (Str__eq(key, TL_IS_328))
+ Languages__regexp(pl->function_notation, value, tfp);
+ else if (Str__eq(key, TL_IS_329))
Languages__regexp(pl->type_notation, value, tfp);
else {
Errors__in_text_file("unknown property name before ':'", tfp);
@@ -23453,7 +23478,7 @@ void Languages__parse_rule(language_reader_state *state, text_stream *premiss,
{
#line 537 "inweb/Chapter 4/Programming Languages.w"
- if (Str__eq(action, TL_IS_331)) {
+ if (Str__eq(action, TL_IS_332)) {
rule->execute_block =
Languages__new_block(state->current_block, WHOLE_LINE_CRULE_RUN);
state->current_block = rule->execute_block;
@@ -23466,7 +23491,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_332)) {
+ } else if (Str__eq(action, TL_IS_333)) {
rule->debug = TRUE;
} else {
Errors__in_text_file("action after '=>' illegible", tfp);
@@ -23501,17 +23526,17 @@ wchar_t 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_333)) return STRING_COLOUR;
- else if (Str__eq(T, TL_IS_334)) return FUNCTION_COLOUR;
- else if (Str__eq(T, TL_IS_335)) return DEFINITION_COLOUR;
- else if (Str__eq(T, TL_IS_336)) return RESERVED_COLOUR;
- else if (Str__eq(T, TL_IS_337)) return ELEMENT_COLOUR;
- else if (Str__eq(T, TL_IS_338)) return IDENTIFIER_COLOUR;
- else if (Str__eq(T, TL_IS_339)) return CHARACTER_COLOUR;
- else if (Str__eq(T, TL_IS_340)) return CONSTANT_COLOUR;
- else if (Str__eq(T, TL_IS_341)) return PLAIN_COLOUR;
- else if (Str__eq(T, TL_IS_342)) return EXTRACT_COLOUR;
- else if (Str__eq(T, TL_IS_343)) return COMMENT_COLOUR;
+ if (Str__eq(T, TL_IS_334)) return STRING_COLOUR;
+ else if (Str__eq(T, TL_IS_335)) return FUNCTION_COLOUR;
+ else if (Str__eq(T, TL_IS_336)) return DEFINITION_COLOUR;
+ else if (Str__eq(T, TL_IS_337)) return RESERVED_COLOUR;
+ else if (Str__eq(T, TL_IS_338)) return ELEMENT_COLOUR;
+ else if (Str__eq(T, TL_IS_339)) return IDENTIFIER_COLOUR;
+ else if (Str__eq(T, TL_IS_340)) return CHARACTER_COLOUR;
+ else if (Str__eq(T, TL_IS_341)) return CONSTANT_COLOUR;
+ else if (Str__eq(T, TL_IS_342)) return PLAIN_COLOUR;
+ else if (Str__eq(T, TL_IS_343)) return EXTRACT_COLOUR;
+ else if (Str__eq(T, TL_IS_344)) return COMMENT_COLOUR;
else {
Errors__in_text_file("no such !colour", tfp);
return PLAIN_COLOUR;
@@ -23520,8 +23545,8 @@ wchar_t Languages__colour(text_stream *T, text_file_position *tfp) {
#line 628 "inweb/Chapter 4/Programming Languages.w"
int Languages__boolean(text_stream *T, text_file_position *tfp) {
- if (Str__eq(T, TL_IS_344)) return TRUE;
- else if (Str__eq(T, TL_IS_345)) return FALSE;
+ if (Str__eq(T, TL_IS_345)) return TRUE;
+ else if (Str__eq(T, TL_IS_346)) return FALSE;
else {
Errors__in_text_file("must be true or false", tfp);
return FALSE;
@@ -23579,7 +23604,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_346)) rw = TRUE;
if (Str__eq(V, TL_IS_347)) rw = TRUE;
if (Str__eq(V, TL_IS_348)) rw = TRUE;
if (Str__eq(V, TL_IS_349)) rw = TRUE;
@@ -23601,6 +23625,7 @@ text_stream *Languages__text(text_stream *T, text_file_position *tfp, int allow)
if (Str__eq(V, TL_IS_365)) rw = TRUE;
if (Str__eq(V, TL_IS_366)) rw = TRUE;
if (Str__eq(V, TL_IS_367)) rw = TRUE;
+ if (Str__eq(V, TL_IS_368)) rw = TRUE;
if (rw) {
TEMPORARY_TEXT(err)
@@ -23699,7 +23724,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_368);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_369);
ADD_TO_LINKED_LIST(str, language_type, W->language_types);
ADD_TO_LINKED_LIST(str, language_type, L->owning_paragraph->structures);
@@ -23812,7 +23837,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_369;
+ declared_namespace = TL_IS_370;
if ((Str__ne(declared_namespace, ambient_namespace)) &&
(L->owning_paragraph->placed_very_early == FALSE)) {
TEMPORARY_TEXT(err_mess)
@@ -23925,7 +23950,7 @@ void LanguageMethods__disclaimer(text_stream *OUT, programming_language *pl, web
int rv = FALSE;
INT_METHOD_CALL_WITHOUT_ARGUMENTS(rv, pl, SUPPRESS_DISCLAIMER_TAN_MTID);
if (rv == FALSE)
- LanguageMethods__comment(OUT, pl, TL_IS_370);
+ LanguageMethods__comment(OUT, pl, TL_IS_371);
}
#line 127 "inweb/Chapter 4/Language Methods.w"
@@ -23948,7 +23973,7 @@ void LanguageMethods__start_definition(OUTPUT_STREAM, programming_language *pl,
int rv = FALSE;
INT_METHOD_CALL(rv, pl, START_DEFN_TAN_MTID, OUT, term, start, S, L);
if (rv == FALSE)
- Main__error_in_web(TL_IS_371, L);
+ Main__error_in_web(TL_IS_372, L);
}
void LanguageMethods__prolong_definition(OUTPUT_STREAM, programming_language *pl,
@@ -23956,7 +23981,7 @@ void LanguageMethods__prolong_definition(OUTPUT_STREAM, programming_language *pl
int rv = FALSE;
INT_METHOD_CALL(rv, pl, PROLONG_DEFN_TAN_MTID, OUT, more, S, L);
if (rv == FALSE)
- Main__error_in_web(TL_IS_372, L);
+ Main__error_in_web(TL_IS_373, L);
}
void LanguageMethods__end_definition(OUTPUT_STREAM, programming_language *pl,
@@ -24113,9 +24138,9 @@ int LanguageMethods__syntax_colour(programming_language *pl,
int rv = FALSE;
programming_language *colour_as = pl;
if (L->category == TEXT_EXTRACT_LCAT) colour_as = L->colour_as;
- theme_tag *T = Tags__find_by_name(TL_IS_373, FALSE);
+ theme_tag *T = Tags__find_by_name(TL_IS_374, FALSE);
if ((T) && (Tags__tagged_with(L->owning_paragraph, T))) {
- programming_language *prepl = Languages__find_by_name(TL_IS_374, wv->weave_web, FALSE);
+ programming_language *prepl = Languages__find_by_name(TL_IS_375, wv->weave_web, FALSE);
if ((L->category == PREFORM_LCAT) || (L->category == PREFORM_GRAMMAR_LCAT))
if (prepl) colour_as = prepl;
}
@@ -24454,7 +24479,7 @@ void ACMESupport__parse_functions(programming_language *self, web *W) {
#line 287 "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_375), L"On"))
+ if (Str__eq_wide_string(Bibliographic__get_datum(W->md, TL_IS_376), L"On"))
check_namespaces = TRUE;
language_function *fn;
LOOP_OVER(fn, language_function) {
@@ -24474,11 +24499,11 @@ void ACMESupport__post_analysis(programming_language *self, web *W) {
&& (fn->call_freely == FALSE)) {
if (fn->within_namespace)
Main__error_in_web(
- TL_IS_376,
+ TL_IS_377,
fn->function_header_at);
else
Main__error_in_web(
- TL_IS_377,
+ TL_IS_378,
fn->function_header_at);
}
}
@@ -24953,7 +24978,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_378);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_379);
} else if ((Str__get_first_char(L->text) == '}') && (current_str)) {
current_str->typedef_ends = L;
current_str = NULL;
@@ -25089,14 +25114,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_380, L);
+ Main__error_in_web(TL_IS_381, 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_381, L);
+ Main__error_in_web(TL_IS_382, L);
else
cc_sp--;
}
@@ -25190,7 +25215,7 @@ void CLike__parse_functions(programming_language *self, web *W) {
;
}
if (cc_sp > 0)
- Main__error_in_web(TL_IS_379, NULL);
+ Main__error_in_web(TL_IS_380, NULL);
}
#line 316 "inweb/Chapter 4/C-Like Languages.w"
@@ -25364,7 +25389,7 @@ void InCSupport__further_parsing(programming_language *self, web *W) {
{
#line 218 "inweb/Chapter 4/InC Support.w"
- Tags__add_by_name(L->owning_paragraph, TL_IS_382);
+ Tags__add_by_name(L->owning_paragraph, TL_IS_383);
source_line *AL;
for (AL = L; (AL) && (AL->category == CODE_BODY_LCAT); AL = AL->next_line) {
if (Regexp__string_is_white_space(AL->text)) break;
@@ -25792,7 +25817,7 @@ void InCSupport__expand_formula(text_stream *OUT, source_line *AL, preform_nonte
(Str__get_at(formula, i+2) == '[') &&
(isdigit(Str__get_at(formula, i+3))) && (Str__get_at(formula, i+4) == ']')) {
if (pnt == NULL) {
- Main__error_in_web(TL_IS_383, AL);
+ Main__error_in_web(TL_IS_384, AL);
if (AL == NULL) WRITE_TO(STDERR, "%S\n", formula);
} else {
WRITE_TO(expanded,
@@ -25870,25 +25895,25 @@ void InCSupport__tangle_line_inner(text_stream *OUT, source_line *AL, preform_no
if (clauses == 1)
{
#line 764 "inweb/Chapter 4/InC Support.w"
- if (Str__eq(clause[0], TL_IS_385)) {
+ if (Str__eq(clause[0], TL_IS_386)) {
clause[1] = Str__new(); clauses = 2;
WRITE_TO(extra, "return FAIL_NONTERMINAL;");
Str__clear(clause[0]);
WRITE_TO(clause[0], "-");
WRITE_TO(clause[1], "-");
- } else if (Str__eq(clause[0], TL_IS_386)) {
- clause[1] = Str__new(); clauses = 2;
- WRITE_TO(extra, "return FALSE;");
- Str__clear(clause[0]);
- WRITE_TO(clause[0], "-");
- WRITE_TO(clause[1], "-");
} else if (Str__eq(clause[0], TL_IS_387)) {
clause[1] = Str__new(); clauses = 2;
WRITE_TO(extra, "return FALSE;");
Str__clear(clause[0]);
WRITE_TO(clause[0], "-");
WRITE_TO(clause[1], "-");
- } else if (Str__prefix_eq(clause[0], TL_IS_388, 8)) {
+ } else if (Str__eq(clause[0], TL_IS_388)) {
+ clause[1] = Str__new(); clauses = 2;
+ WRITE_TO(extra, "return FALSE;");
+ Str__clear(clause[0]);
+ WRITE_TO(clause[0], "-");
+ WRITE_TO(clause[1], "-");
+ } else if (Str__prefix_eq(clause[0], TL_IS_389, 8)) {
clause[1] = Str__new(); clauses = 2;
WRITE_TO(extra, "return FAIL_NONTERMINAL + ");
Str__substr(extra, Str__at(clause[0], 8), Str__end(clause[0]));
@@ -25896,7 +25921,7 @@ void InCSupport__tangle_line_inner(text_stream *OUT, source_line *AL, preform_no
Str__clear(clause[0]);
WRITE_TO(clause[0], "0");
WRITE_TO(clause[1], "NULL");
- } else if (Str__prefix_eq(clause[0], TL_IS_389, 5)) {
+ } else if (Str__prefix_eq(clause[0], TL_IS_390, 5)) {
clause[1] = Str__new(); clauses = 2;
TEMPORARY_TEXT(from)
Str__substr(from, Str__at(clause[0], 5), Str__end(clause[0]));
@@ -25904,7 +25929,7 @@ void InCSupport__tangle_line_inner(text_stream *OUT, source_line *AL, preform_no
WRITE_TO(clause[0], "R[%S]", from);
WRITE_TO(clause[1], "RP[%S]", from);
DISCARD_TEXT(from)
- } else if (Str__eq(clause[0], TL_IS_390)) {
+ } else if (Str__eq(clause[0], TL_IS_391)) {
clause[1] = Str__new(); clauses = 2;
Str__clear(clause[0]);
WRITE_TO(clause[0], "0");
@@ -25920,7 +25945,7 @@ void InCSupport__tangle_line_inner(text_stream *OUT, source_line *AL, preform_no
{
#line 814 "inweb/Chapter 4/InC Support.w"
for (int c=0; cntv_name, name))
@@ -26054,7 +26079,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_395);
+ filename *Syntax = Filenames__in(P, TL_IS_396);
text_stream TO_struct;
text_stream *OUT = &TO_struct;
@@ -26065,8 +26090,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_396))
- WRITE("language %S\n", Bibliographic__get_datum(W->md, TL_IS_397));
+ if (Bibliographic__data_exists(W->md, TL_IS_397))
+ WRITE("language %S\n", Bibliographic__get_datum(W->md, TL_IS_398));
{
@@ -26259,17 +26284,17 @@ int InCSupport__share_element(programming_language *self, text_stream *elname) {
#line 83 "inweb/Chapter 5/Weave Tree.w"
-#line 89 "inweb/Chapter 5/Weave Tree.w"
+#line 88 "inweb/Chapter 5/Weave Tree.w"
-#line 96 "inweb/Chapter 5/Weave Tree.w"
+#line 94 "inweb/Chapter 5/Weave Tree.w"
-#line 102 "inweb/Chapter 5/Weave Tree.w"
+#line 101 "inweb/Chapter 5/Weave Tree.w"
-#line 110 "inweb/Chapter 5/Weave Tree.w"
+#line 107 "inweb/Chapter 5/Weave Tree.w"
-#line 118 "inweb/Chapter 5/Weave Tree.w"
+#line 115 "inweb/Chapter 5/Weave Tree.w"
-#line 124 "inweb/Chapter 5/Weave Tree.w"
+#line 123 "inweb/Chapter 5/Weave Tree.w"
#line 129 "inweb/Chapter 5/Weave Tree.w"
@@ -26277,29 +26302,29 @@ int InCSupport__share_element(programming_language *self, text_stream *elname) {
#line 139 "inweb/Chapter 5/Weave Tree.w"
-#line 143 "inweb/Chapter 5/Weave Tree.w"
+#line 144 "inweb/Chapter 5/Weave Tree.w"
-#line 149 "inweb/Chapter 5/Weave Tree.w"
+#line 148 "inweb/Chapter 5/Weave Tree.w"
-#line 155 "inweb/Chapter 5/Weave Tree.w"
+#line 154 "inweb/Chapter 5/Weave Tree.w"
-#line 161 "inweb/Chapter 5/Weave Tree.w"
+#line 160 "inweb/Chapter 5/Weave Tree.w"
#line 166 "inweb/Chapter 5/Weave Tree.w"
-#line 173 "inweb/Chapter 5/Weave Tree.w"
+#line 171 "inweb/Chapter 5/Weave Tree.w"
-#line 177 "inweb/Chapter 5/Weave Tree.w"
+#line 178 "inweb/Chapter 5/Weave Tree.w"
#line 182 "inweb/Chapter 5/Weave Tree.w"
-#line 186 "inweb/Chapter 5/Weave Tree.w"
+#line 187 "inweb/Chapter 5/Weave Tree.w"
-#line 192 "inweb/Chapter 5/Weave Tree.w"
+#line 191 "inweb/Chapter 5/Weave Tree.w"
-#line 198 "inweb/Chapter 5/Weave Tree.w"
+#line 197 "inweb/Chapter 5/Weave Tree.w"
-#line 205 "inweb/Chapter 5/Weave Tree.w"
+#line 203 "inweb/Chapter 5/Weave Tree.w"
#line 210 "inweb/Chapter 5/Weave Tree.w"
@@ -26309,15 +26334,17 @@ int InCSupport__share_element(programming_language *self, text_stream *elname) {
#line 225 "inweb/Chapter 5/Weave Tree.w"
-#line 231 "inweb/Chapter 5/Weave Tree.w"
+#line 230 "inweb/Chapter 5/Weave Tree.w"
-#line 235 "inweb/Chapter 5/Weave Tree.w"
+#line 236 "inweb/Chapter 5/Weave Tree.w"
-#line 241 "inweb/Chapter 5/Weave Tree.w"
+#line 240 "inweb/Chapter 5/Weave Tree.w"
#line 246 "inweb/Chapter 5/Weave Tree.w"
-#line 248 "inweb/Chapter 5/Weave Tree.w"
+#line 251 "inweb/Chapter 5/Weave Tree.w"
+
+#line 253 "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;
@@ -26336,6 +26363,7 @@ tree_node_type *weave_linebreak_node_type = NULL;
tree_node_type *weave_paragraph_heading_node_type = NULL;
tree_node_type *weave_endnote_node_type = NULL;
tree_node_type *weave_figure_node_type = NULL;
+tree_node_type *weave_extract_node_type = NULL;
tree_node_type *weave_audio_node_type = NULL;
tree_node_type *weave_video_node_type = NULL;
tree_node_type *weave_download_node_type = NULL;
@@ -26367,99 +26395,101 @@ 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_398, NULL);
+ weave_tree_type = Trees__new_type(TL_IS_399, NULL);
weave_document_node_type =
- Trees__new_node_type(TL_IS_399, weave_document_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_400, weave_document_node_CLASS, NULL);
weave_head_node_type =
- Trees__new_node_type(TL_IS_400, weave_head_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_401, weave_head_node_CLASS, NULL);
weave_body_node_type =
- Trees__new_node_type(TL_IS_401, weave_body_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_402, weave_body_node_CLASS, NULL);
weave_tail_node_type =
- Trees__new_node_type(TL_IS_402, weave_tail_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_403, weave_tail_node_CLASS, NULL);
weave_chapter_footer_node_type =
- Trees__new_node_type(TL_IS_403, weave_chapter_footer_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_404, weave_chapter_footer_node_CLASS, NULL);
weave_chapter_header_node_type =
- Trees__new_node_type(TL_IS_404, weave_chapter_header_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_405, weave_chapter_header_node_CLASS, NULL);
weave_section_footer_node_type =
- Trees__new_node_type(TL_IS_405, weave_section_footer_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_406, weave_section_footer_node_CLASS, NULL);
weave_section_header_node_type =
- Trees__new_node_type(TL_IS_406, weave_section_header_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_407, weave_section_header_node_CLASS, NULL);
weave_section_purpose_node_type =
- Trees__new_node_type(TL_IS_407, weave_section_purpose_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_408, weave_section_purpose_node_CLASS, NULL);
weave_subheading_node_type =
- Trees__new_node_type(TL_IS_408, weave_subheading_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_409, weave_subheading_node_CLASS, NULL);
weave_bar_node_type =
- Trees__new_node_type(TL_IS_409, weave_bar_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_410, weave_bar_node_CLASS, NULL);
weave_pagebreak_node_type =
- Trees__new_node_type(TL_IS_410, weave_pagebreak_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_411, weave_pagebreak_node_CLASS, NULL);
weave_linebreak_node_type =
- Trees__new_node_type(TL_IS_411, weave_linebreak_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_412, weave_linebreak_node_CLASS, NULL);
weave_paragraph_heading_node_type =
- Trees__new_node_type(TL_IS_412, weave_paragraph_heading_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_413, weave_paragraph_heading_node_CLASS, NULL);
weave_endnote_node_type =
- Trees__new_node_type(TL_IS_413, weave_endnote_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_414, weave_endnote_node_CLASS, NULL);
weave_figure_node_type =
- Trees__new_node_type(TL_IS_414, weave_figure_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_415, weave_figure_node_CLASS, NULL);
+ weave_extract_node_type =
+ Trees__new_node_type(TL_IS_416, weave_extract_node_CLASS, NULL);
weave_audio_node_type =
- Trees__new_node_type(TL_IS_415, weave_audio_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_417, weave_audio_node_CLASS, NULL);
weave_video_node_type =
- Trees__new_node_type(TL_IS_416, weave_video_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_418, weave_video_node_CLASS, NULL);
weave_download_node_type =
- Trees__new_node_type(TL_IS_417, weave_download_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_419, weave_download_node_CLASS, NULL);
weave_material_node_type =
- Trees__new_node_type(TL_IS_418, weave_material_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_420, weave_material_node_CLASS, NULL);
weave_embed_node_type =
- Trees__new_node_type(TL_IS_419, weave_embed_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_421, weave_embed_node_CLASS, NULL);
weave_pmac_node_type =
- Trees__new_node_type(TL_IS_420, weave_pmac_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_422, weave_pmac_node_CLASS, NULL);
weave_vskip_node_type =
- Trees__new_node_type(TL_IS_421, weave_vskip_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_423, weave_vskip_node_CLASS, NULL);
weave_chapter_node_type =
- Trees__new_node_type(TL_IS_422, weave_chapter_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_424, weave_chapter_node_CLASS, NULL);
weave_section_node_type =
- Trees__new_node_type(TL_IS_423, weave_section_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_425, weave_section_node_CLASS, NULL);
weave_code_line_node_type =
- Trees__new_node_type(TL_IS_424, weave_code_line_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_426, weave_code_line_node_CLASS, NULL);
weave_function_usage_node_type =
- Trees__new_node_type(TL_IS_425, weave_function_usage_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_427, weave_function_usage_node_CLASS, NULL);
weave_commentary_node_type =
- Trees__new_node_type(TL_IS_426, weave_commentary_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_428, weave_commentary_node_CLASS, NULL);
weave_carousel_slide_node_type =
- Trees__new_node_type(TL_IS_427, weave_carousel_slide_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_429, weave_carousel_slide_node_CLASS, NULL);
weave_toc_node_type =
- Trees__new_node_type(TL_IS_428, weave_toc_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_430, weave_toc_node_CLASS, NULL);
weave_toc_line_node_type =
- Trees__new_node_type(TL_IS_429, weave_toc_line_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_431, weave_toc_line_node_CLASS, NULL);
weave_chapter_title_page_node_type =
- Trees__new_node_type(TL_IS_430, weave_chapter_title_page_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_432, weave_chapter_title_page_node_CLASS, NULL);
weave_defn_node_type =
- Trees__new_node_type(TL_IS_431, weave_defn_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_433, weave_defn_node_CLASS, NULL);
weave_source_code_node_type =
- Trees__new_node_type(TL_IS_432, weave_source_code_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_434, weave_source_code_node_CLASS, NULL);
weave_url_node_type =
- Trees__new_node_type(TL_IS_433, weave_url_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_435, weave_url_node_CLASS, NULL);
weave_footnote_cue_node_type =
- Trees__new_node_type(TL_IS_434, weave_footnote_cue_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_436, weave_footnote_cue_node_CLASS, NULL);
weave_begin_footnote_text_node_type =
- Trees__new_node_type(TL_IS_435, weave_begin_footnote_text_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_437, weave_begin_footnote_text_node_CLASS, NULL);
weave_display_line_node_type =
- Trees__new_node_type(TL_IS_436, weave_display_line_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_438, weave_display_line_node_CLASS, NULL);
weave_function_defn_node_type =
- Trees__new_node_type(TL_IS_437, weave_function_defn_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_439, weave_function_defn_node_CLASS, NULL);
weave_item_node_type =
- Trees__new_node_type(TL_IS_438, weave_item_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_440, weave_item_node_CLASS, NULL);
weave_grammar_index_node_type =
- Trees__new_node_type(TL_IS_439, weave_grammar_index_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_441, weave_grammar_index_node_CLASS, NULL);
weave_inline_node_type =
- Trees__new_node_type(TL_IS_440, weave_inline_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_442, weave_inline_node_CLASS, NULL);
weave_locale_node_type =
- Trees__new_node_type(TL_IS_441, weave_locale_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_443, weave_locale_node_CLASS, NULL);
weave_maths_node_type =
- Trees__new_node_type(TL_IS_442, weave_maths_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_444, weave_maths_node_CLASS, NULL);
weave_verbatim_node_type =
- Trees__new_node_type(TL_IS_443, weave_verbatim_node_CLASS, NULL);
+ Trees__new_node_type(TL_IS_445, weave_verbatim_node_CLASS, NULL);
}
heterogeneous_tree *tree = Trees__new(weave_tree_type);
Trees__make_root(tree, WeaveTree__document(tree, wv));
@@ -26590,6 +26620,14 @@ tree_node *WeaveTree__figure(heterogeneous_tree *tree,
STORE_POINTER_weave_figure_node(C));
}
+tree_node *WeaveTree__raw_extract(heterogeneous_tree *tree,
+ text_stream *extract) {
+ weave_extract_node *C = CREATE(weave_extract_node);
+ C->extract = Str__duplicate(extract);
+ return Trees__new_node(tree, weave_extract_node_type,
+ STORE_POINTER_weave_extract_node(C));
+}
+
tree_node *WeaveTree__audio(heterogeneous_tree *tree,
text_stream *audio_name, int w) {
weave_audio_node *C = CREATE(weave_audio_node);
@@ -26637,7 +26675,7 @@ tree_node *WeaveTree__embed(heterogeneous_tree *tree,
return Trees__new_node(tree, weave_embed_node_type, STORE_POINTER_weave_embed_node(C));
}
-#line 572 "inweb/Chapter 5/Weave Tree.w"
+#line 588 "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;
@@ -26645,7 +26683,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 584 "inweb/Chapter 5/Weave Tree.w"
+#line 600 "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;
@@ -26711,7 +26749,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 660 "inweb/Chapter 5/Weave Tree.w"
+#line 676 "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");
@@ -26765,21 +26803,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 717 "inweb/Chapter 5/Weave Tree.w"
+#line 733 "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 727 "inweb/Chapter 5/Weave Tree.w"
+#line 743 "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 746 "inweb/Chapter 5/Weave Tree.w"
+#line 762 "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;
@@ -26891,7 +26929,7 @@ void Formats__render(text_stream *OUT, heterogeneous_tree *tree, filename *into)
filename *F = Patterns__find_template(C->wv->pattern, template);
TEMPORARY_TEXT(interior)
VOID_METHOD_CALL(wf, RENDER_FOR_MTID, interior, tree);
- Bibliographic__set_datum(C->wv->weave_web->md, TL_IS_444, interior);
+ Bibliographic__set_datum(C->wv->weave_web->md, TL_IS_446, interior);
if (F) Collater__for_order(OUT, C->wv, F, into);
else WRITE("%S", interior);
DISCARD_TEXT(interior)
@@ -26945,7 +26983,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_445, TL_IS_446);
+ weave_format *wf = Formats__create_weave_format(TL_IS_447, TL_IS_448);
METHOD_ADD(wf, RENDER_FOR_MTID, PlainText__render);
}
@@ -27269,7 +27307,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_447, TL_IS_448);
+ weave_format *wf = Formats__create_weave_format(TL_IS_449, TL_IS_450);
METHOD_ADD(wf, RENDER_FOR_MTID, TeX__render_TeX);
METHOD_ADD(wf, PREFORM_DOCUMENT_FOR_MTID, TeX__preform_document);
}
@@ -27347,7 +27385,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_449)) {
+ if (Str__ne(C->chap->md->ch_range, TL_IS_451)) {
TeX__general_heading(OUT, trs->wv,
FIRST_IN_LINKED_LIST(section, C->chap->sections), NULL, C->chap->md->ch_title,
3, FALSE);
@@ -27421,7 +27459,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_450, 0, FALSE);
+ C->para, TL_IS_452, 0, FALSE);
}
#line 76 "inweb/Chapter 5/TeX Format.w"
@@ -27451,7 +27489,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_451),
+ Pathnames__down(trs->wv->weave_web->md->path_to_web, TL_IS_453),
C->figname);
WRITE("\\pdfximage");
if (C->w >= 0) WRITE(" width %d cm{%f}\n", C->w/POINTS_PER_CM, F);
@@ -27858,23 +27896,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_452; break;
- case 1: TeX_macro = TL_IS_453; break;
- case 2: TeX_macro = TL_IS_454; break;
- default: TeX_macro = TL_IS_455; break;
+ case 0: TeX_macro = TL_IS_454; break;
+ case 1: TeX_macro = TL_IS_455; break;
+ case 2: TeX_macro = TL_IS_456; break;
+ default: TeX_macro = TL_IS_457; break;
}
if (wv->theme_match) {
switch (weight) {
- case 0: TeX_macro = TL_IS_456; break;
- case 1: TeX_macro = TL_IS_457; break;
- case 2: TeX_macro = TL_IS_458; break;
- default: TeX_macro = TL_IS_459; break;
+ case 0: TeX_macro = TL_IS_458; break;
+ case 1: TeX_macro = TL_IS_459; break;
+ case 2: TeX_macro = TL_IS_460; break;
+ default: TeX_macro = TL_IS_461; break;
}
}
if (no_skip) {
switch (weight) {
- case 0: TeX_macro = TL_IS_460; break;
- case 1: TeX_macro = TL_IS_461; break;
+ case 0: TeX_macro = TL_IS_462; break;
+ case 1: TeX_macro = TL_IS_463; break;
}
}
@@ -28111,7 +28149,7 @@ void HTMLFormat__create(void) {
{
#line 15 "inweb/Chapter 5/HTML Formats.w"
- weave_format *wf = Formats__create_weave_format(TL_IS_462, TL_IS_463);
+ weave_format *wf = Formats__create_weave_format(TL_IS_464, TL_IS_465);
METHOD_ADD(wf, RENDER_FOR_MTID, HTMLFormat__render);
}
@@ -28120,7 +28158,7 @@ void HTMLFormat__create(void) {
{
#line 19 "inweb/Chapter 5/HTML Formats.w"
- weave_format *wf = Formats__create_weave_format(TL_IS_464, TL_IS_465);
+ weave_format *wf = Formats__create_weave_format(TL_IS_466, TL_IS_467);
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);
@@ -28144,10 +28182,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_466, TL_IS_467, NULL);
+ hrs.copy_rule = Assets__new_rule(NULL, TL_IS_468, TL_IS_469, NULL);
- Swarm__ensure_plugin(wv, TL_IS_468);
- hrs.colours = Swarm__ensure_colour_scheme(wv, TL_IS_469, TL_IS_470);
+ Swarm__ensure_plugin(wv, TL_IS_470);
+ hrs.colours = Swarm__ensure_colour_scheme(wv, TL_IS_471, TL_IS_472);
return hrs;
}
@@ -28164,7 +28202,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_471);
+ Epub__note_page(C->wv->weave_web->as_ebook, C->wv->weave_to, C->wv->booklet_title, TL_IS_473);
HTML__completed(OUT);
}
@@ -28181,7 +28219,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 885 "inweb/Chapter 5/HTML Formats.w"
+#line 907 "inweb/Chapter 5/HTML Formats.w"
;
}
@@ -28190,7 +28228,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_head_node_type)
{
-#line 141 "inweb/Chapter 5/HTML Formats.w"
+#line 142 "inweb/Chapter 5/HTML Formats.w"
weave_head_node *C = RETRIEVE_POINTER_weave_head_node(N->content);
HTML__comment(OUT, C->banner);
@@ -28199,7 +28237,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_tail_node_type)
{
-#line 281 "inweb/Chapter 5/HTML Formats.w"
+#line 282 "inweb/Chapter 5/HTML Formats.w"
weave_tail_node *C = RETRIEVE_POINTER_weave_tail_node(N->content);
HTML__comment(OUT, C->rennab);
@@ -28208,7 +28246,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_verbatim_node_type)
{
-#line 845 "inweb/Chapter 5/HTML Formats.w"
+#line 867 "inweb/Chapter 5/HTML Formats.w"
weave_verbatim_node *C = RETRIEVE_POINTER_weave_verbatim_node(N->content);
WRITE("%S", C->content);
@@ -28217,20 +28255,20 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_section_header_node_type)
{
-#line 145 "inweb/Chapter 5/HTML Formats.w"
+#line 146 "inweb/Chapter 5/HTML Formats.w"
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_472);
+ Swarm__ensure_plugin(hrs->wv, TL_IS_474);
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_473);
- if (Str__len(Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_474)) > 0)
- bct = Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_475);
+ text_stream *bct = Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_475);
+ if (Str__len(Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_476)) > 0)
+ bct = Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_477);
if (hrs->wv->self_contained == FALSE) {
- Colonies__write_breadcrumb(OUT, bct, TL_IS_476);
+ Colonies__write_breadcrumb(OUT, bct, TL_IS_478);
if (hrs->wv->weave_web->md->chaptered) {
TEMPORARY_TEXT(chapter_link)
WRITE_TO(chapter_link, "index.html#%s%S",
@@ -28253,7 +28291,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_section_footer_node_type)
{
-#line 176 "inweb/Chapter 5/HTML Formats.w"
+#line 177 "inweb/Chapter 5/HTML Formats.w"
weave_section_footer_node *C =
RETRIEVE_POINTER_weave_section_footer_node(N->content);
int count = 0;
@@ -28276,7 +28314,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
HTML_OPEN_WITH("ul", "class=\"progressbar\"");
{
-#line 259 "inweb/Chapter 5/HTML Formats.w"
+#line 260 "inweb/Chapter 5/HTML Formats.w"
if (prev_S) HTML_OPEN_WITH("li", "class=\"progressprev\"")
else HTML_OPEN_WITH("li", "class=\"progressprevoff\"");
TEMPORARY_TEXT(TEMP)
@@ -28288,12 +28326,12 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
HTML_CLOSE("li");
}
-#line 196 "inweb/Chapter 5/HTML Formats.w"
+#line 197 "inweb/Chapter 5/HTML Formats.w"
;
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_477)) {
+ if (Str__ne(Ch->md->ch_range, TL_IS_479)) {
if (Ch == C->sect->owning_chapter) {
HTML_OPEN_WITH("li", "class=\"progresscurrentchapter\"");
} else {
@@ -28324,7 +28362,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_478), TL_IS_479))
+ TL_IS_480), TL_IS_481))
Str__delete_first_character(label);
if (S == C->sect) {
HTML_OPEN_WITH("li", "class=\"progresscurrent\"");
@@ -28347,7 +28385,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
{
-#line 270 "inweb/Chapter 5/HTML Formats.w"
+#line 271 "inweb/Chapter 5/HTML Formats.w"
if (next_S) HTML_OPEN_WITH("li", "class=\"progressnext\"")
else HTML_OPEN_WITH("li", "class=\"progressnextoff\"");
TEMPORARY_TEXT(TEMP)
@@ -28359,7 +28397,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
HTML_CLOSE("li");
}
-#line 252 "inweb/Chapter 5/HTML Formats.w"
+#line 253 "inweb/Chapter 5/HTML Formats.w"
;
HTML_CLOSE("ul");
HTML_CLOSE("div");
@@ -28371,7 +28409,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_section_purpose_node_type)
{
-#line 285 "inweb/Chapter 5/HTML Formats.w"
+#line 286 "inweb/Chapter 5/HTML Formats.w"
weave_section_purpose_node *C =
RETRIEVE_POINTER_weave_section_purpose_node(N->content);
HTML_OPEN_WITH("p", "class=\"purpose\"");
@@ -28383,7 +28421,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_subheading_node_type)
{
-#line 292 "inweb/Chapter 5/HTML Formats.w"
+#line 293 "inweb/Chapter 5/HTML Formats.w"
weave_subheading_node *C = RETRIEVE_POINTER_weave_subheading_node(N->content);
HTML_OPEN("h3");
HTMLFormat__escape_text(OUT, C->text);
@@ -28394,7 +28432,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_bar_node_type)
{
-#line 298 "inweb/Chapter 5/HTML Formats.w"
+#line 299 "inweb/Chapter 5/HTML Formats.w"
HTML__hr(OUT, NULL);
}
@@ -28402,7 +28440,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_paragraph_heading_node_type)
{
-#line 301 "inweb/Chapter 5/HTML Formats.w"
+#line 302 "inweb/Chapter 5/HTML Formats.w"
weave_paragraph_heading_node *C =
RETRIEVE_POINTER_weave_paragraph_heading_node(N->content);
paragraph *P = C->para;
@@ -28411,7 +28449,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
paragraph *first_in_para = P;
{
-#line 438 "inweb/Chapter 5/HTML Formats.w"
+#line 460 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -28420,7 +28458,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 307 "inweb/Chapter 5/HTML Formats.w"
+#line 308 "inweb/Chapter 5/HTML Formats.w"
;
}
@@ -28429,16 +28467,16 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_endnote_node_type)
{
-#line 311 "inweb/Chapter 5/HTML Formats.w"
+#line 312 "inweb/Chapter 5/HTML Formats.w"
HTML_OPEN("li");
{
-#line 888 "inweb/Chapter 5/HTML Formats.w"
+#line 910 "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 312 "inweb/Chapter 5/HTML Formats.w"
+#line 313 "inweb/Chapter 5/HTML Formats.w"
;
HTML_CLOSE("li");
return FALSE;
@@ -28448,10 +28486,10 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
else if (N->type == weave_figure_node_type)
{
-#line 317 "inweb/Chapter 5/HTML Formats.w"
+#line 318 "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_480),
+ Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_482),
C->figname);
filename *RF = Filenames__from_text(C->figname);
HTML_OPEN_WITH("p", "class=\"center-p\"");
@@ -28464,12 +28502,38 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
#line 108 "inweb/Chapter 5/HTML Formats.w"
+ else if (N->type == weave_extract_node_type)
+{
+#line 331 "inweb/Chapter 5/HTML Formats.w"
+ weave_extract_node *C = RETRIEVE_POINTER_weave_extract_node(N->content);
+ filename *F = Filenames__in(
+ Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_483),
+ C->extract);
+ HTML_OPEN_WITH("div", "class=\"inweb-extract\"");
+ FILE *B = BinaryFiles__try_to_open_for_reading(F);
+ if (B == NULL) {
+ Main__error_in_web(TL_IS_484,
+ hrs->wv->current_weave_line);
+ } else {
+ while (TRUE) {
+ int c = getc(B);
+ if (c == EOF) break;
+ PUT((wchar_t) c);
+ }
+ BinaryFiles__close(B);
+ }
+ HTML_CLOSE("div");
+ WRITE("\n");
+
+}
+#line 109 "inweb/Chapter 5/HTML Formats.w"
+
else if (N->type == weave_audio_node_type)
{
-#line 330 "inweb/Chapter 5/HTML Formats.w"
+#line 352 "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_481),
+ Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_485),
C->audio_name);
Assets__include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL,
hrs->wv->pattern, hrs->wv->weave_to);
@@ -28482,14 +28546,14 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
WRITE("\n");
}
-#line 109 "inweb/Chapter 5/HTML Formats.w"
+#line 110 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_video_node_type)
{
-#line 345 "inweb/Chapter 5/HTML Formats.w"
+#line 367 "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_482),
+ Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_486),
C->video_name);
Assets__include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL,
hrs->wv->pattern, hrs->wv->weave_to);
@@ -28509,20 +28573,20 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
WRITE("\n");
}
-#line 110 "inweb/Chapter 5/HTML Formats.w"
+#line 111 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_download_node_type)
{
-#line 367 "inweb/Chapter 5/HTML Formats.w"
+#line 389 "inweb/Chapter 5/HTML Formats.w"
weave_download_node *C = RETRIEVE_POINTER_weave_download_node(N->content);
- pathname *P = Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_483);
+ pathname *P = Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_487);
filename *F = Filenames__in(P, C->download_name);
- filename *TF = Patterns__find_file_in_subdirectory(hrs->wv->pattern, TL_IS_484,
- TL_IS_485);
+ filename *TF = Patterns__find_file_in_subdirectory(hrs->wv->pattern, TL_IS_488,
+ TL_IS_489);
if (TF == NULL) {
- Main__error_in_web(TL_IS_486, hrs->wv->current_weave_line);
+ Main__error_in_web(TL_IS_490, hrs->wv->current_weave_line);
} else {
- Swarm__ensure_plugin(hrs->wv, TL_IS_487);
+ Swarm__ensure_plugin(hrs->wv, TL_IS_491);
pathname *TOP =
Assets__include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL,
hrs->wv->pattern, hrs->wv->weave_to);
@@ -28534,30 +28598,30 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
int N = Filenames__size(F);
if (N > 0)
{
-#line 401 "inweb/Chapter 5/HTML Formats.w"
+#line 423 "inweb/Chapter 5/HTML Formats.w"
WRITE_TO(size, " (");
if (Str__len(C->filetype) > 0) WRITE_TO(size, "%S, ", C->filetype);
int x = 0, y = 0;
- text_stream *unit = TL_IS_492; x = N; y = 0;
- if (N > 1) { unit = TL_IS_493; }
- if (N >= 1024) { unit = TL_IS_494; x = 10*N/1024; y = x%10; x = x/10; }
- if (N >= 1024*1024) { unit = TL_IS_495; x = 10*N/1024/1024; y = x%10; x = x/10; }
- if (N >= 1024*1024*1024) { unit = TL_IS_496; x = 10*N/1024/1024/1024; y = x%10; x = x/10; }
+ text_stream *unit = TL_IS_496; x = N; y = 0;
+ if (N > 1) { unit = TL_IS_497; }
+ if (N >= 1024) { unit = TL_IS_498; x = 10*N/1024; y = x%10; x = x/10; }
+ if (N >= 1024*1024) { unit = TL_IS_499; x = 10*N/1024/1024; y = x%10; x = x/10; }
+ if (N >= 1024*1024*1024) { unit = TL_IS_500; x = 10*N/1024/1024/1024; y = x%10; x = x/10; }
WRITE_TO(size, "%d", x);
if (y > 0) WRITE_TO(size, ".%d", y);
WRITE_TO(size, "%S", unit);
WRITE_TO(size, ")");
}
-#line 385 "inweb/Chapter 5/HTML Formats.w"
+#line 407 "inweb/Chapter 5/HTML Formats.w"
- else Main__error_in_web(TL_IS_488,
+ else Main__error_in_web(TL_IS_492,
hrs->wv->current_weave_line);
filename *D = Filenames__from_text(C->download_name);
- Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_489,
+ Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_493,
Filenames__get_leafname(D));
- Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_490, url);
- Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_491, size);
+ Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_494, url);
+ Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_495, size);
Collater__for_web_and_pattern(OUT, hrs->wv->weave_web, hrs->wv->pattern,
TF, hrs->into_file);
WRITE("\n");
@@ -28566,11 +28630,11 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 111 "inweb/Chapter 5/HTML Formats.w"
+#line 112 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_material_node_type)
{
-#line 415 "inweb/Chapter 5/HTML Formats.w"
+#line 437 "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) &&
@@ -28582,13 +28646,13 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
if (C->material_type == COMMENTARY_MATERIAL)
{
-#line 446 "inweb/Chapter 5/HTML Formats.w"
+#line 468 "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 438 "inweb/Chapter 5/HTML Formats.w"
+#line 460 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -28597,7 +28661,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 449 "inweb/Chapter 5/HTML Formats.w"
+#line 471 "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);
@@ -28607,7 +28671,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
if (HTMLFormat__interior_material(M))
{
-#line 471 "inweb/Chapter 5/HTML Formats.w"
+#line 493 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -28624,11 +28688,11 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
continue;
}
-#line 456 "inweb/Chapter 5/HTML Formats.w"
+#line 478 "inweb/Chapter 5/HTML Formats.w"
;
{
-#line 438 "inweb/Chapter 5/HTML Formats.w"
+#line 460 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -28637,7 +28701,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 457 "inweb/Chapter 5/HTML Formats.w"
+#line 479 "inweb/Chapter 5/HTML Formats.w"
;
if (item_depth > 0) {
HTMLFormat__go_to_depth(hrs, item_depth, 0);
@@ -28652,15 +28716,15 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 424 "inweb/Chapter 5/HTML Formats.w"
+#line 446 "inweb/Chapter 5/HTML Formats.w"
else if (C->material_type == CODE_MATERIAL)
{
-#line 487 "inweb/Chapter 5/HTML Formats.w"
+#line 509 "inweb/Chapter 5/HTML Formats.w"
{
-#line 438 "inweb/Chapter 5/HTML Formats.w"
+#line 460 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -28669,7 +28733,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 487 "inweb/Chapter 5/HTML Formats.w"
+#line 509 "inweb/Chapter 5/HTML Formats.w"
;
if (C->styling) {
TEMPORARY_TEXT(csname)
@@ -28686,12 +28750,12 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
DISCARD_TEXT(cl)
{
-#line 888 "inweb/Chapter 5/HTML Formats.w"
+#line 910 "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 501 "inweb/Chapter 5/HTML Formats.w"
+#line 523 "inweb/Chapter 5/HTML Formats.w"
;
HTML_CLOSE("pre"); WRITE("\n");
if (Str__len(C->endnote) > 0) {
@@ -28703,15 +28767,15 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 426 "inweb/Chapter 5/HTML Formats.w"
+#line 448 "inweb/Chapter 5/HTML Formats.w"
else if (C->material_type == FOOTNOTES_MATERIAL)
{
-#line 512 "inweb/Chapter 5/HTML Formats.w"
+#line 534 "inweb/Chapter 5/HTML Formats.w"
{
-#line 438 "inweb/Chapter 5/HTML Formats.w"
+#line 460 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -28720,30 +28784,30 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 512 "inweb/Chapter 5/HTML Formats.w"
+#line 534 "inweb/Chapter 5/HTML Formats.w"
;
HTML_OPEN_WITH("ul", "class=\"footnotetexts\"");
{
-#line 888 "inweb/Chapter 5/HTML Formats.w"
+#line 910 "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 514 "inweb/Chapter 5/HTML Formats.w"
+#line 536 "inweb/Chapter 5/HTML Formats.w"
;
HTML_CLOSE("ul"); WRITE("\n");
}
-#line 428 "inweb/Chapter 5/HTML Formats.w"
+#line 450 "inweb/Chapter 5/HTML Formats.w"
else if (C->material_type == ENDNOTES_MATERIAL)
{
-#line 518 "inweb/Chapter 5/HTML Formats.w"
+#line 540 "inweb/Chapter 5/HTML Formats.w"
{
-#line 438 "inweb/Chapter 5/HTML Formats.w"
+#line 460 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -28752,27 +28816,27 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 518 "inweb/Chapter 5/HTML Formats.w"
+#line 540 "inweb/Chapter 5/HTML Formats.w"
;
HTML_OPEN_WITH("ul", "class=\"endnotetexts\"");
{
-#line 888 "inweb/Chapter 5/HTML Formats.w"
+#line 910 "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 520 "inweb/Chapter 5/HTML Formats.w"
+#line 542 "inweb/Chapter 5/HTML Formats.w"
;
HTML_CLOSE("ul"); WRITE("\n");
}
-#line 430 "inweb/Chapter 5/HTML Formats.w"
+#line 452 "inweb/Chapter 5/HTML Formats.w"
else if (C->material_type == MACRO_MATERIAL)
{
-#line 524 "inweb/Chapter 5/HTML Formats.w"
+#line 546 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -28781,25 +28845,25 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
{
-#line 888 "inweb/Chapter 5/HTML Formats.w"
+#line 910 "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 530 "inweb/Chapter 5/HTML Formats.w"
+#line 552 "inweb/Chapter 5/HTML Formats.w"
;
HTML_CLOSE("p"); WRITE("\n");
}
-#line 432 "inweb/Chapter 5/HTML Formats.w"
+#line 454 "inweb/Chapter 5/HTML Formats.w"
else if (C->material_type == DEFINITION_MATERIAL)
{
-#line 534 "inweb/Chapter 5/HTML Formats.w"
+#line 556 "inweb/Chapter 5/HTML Formats.w"
{
-#line 438 "inweb/Chapter 5/HTML Formats.w"
+#line 460 "inweb/Chapter 5/HTML Formats.w"
if (first_in_para) {
HTML_OPEN_WITH("p", "class=\"commentary firstcommentary\"");
HTMLFormat__paragraph_number(OUT, first_in_para);
@@ -28808,46 +28872,46 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 534 "inweb/Chapter 5/HTML Formats.w"
+#line 556 "inweb/Chapter 5/HTML Formats.w"
;
HTML_OPEN_WITH("pre", "class=\"definitions code-font\"");
{
-#line 888 "inweb/Chapter 5/HTML Formats.w"
+#line 910 "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 536 "inweb/Chapter 5/HTML Formats.w"
+#line 558 "inweb/Chapter 5/HTML Formats.w"
;
HTML_CLOSE("pre"); WRITE("\n");
}
-#line 434 "inweb/Chapter 5/HTML Formats.w"
+#line 456 "inweb/Chapter 5/HTML Formats.w"
;
return FALSE;
}
-#line 112 "inweb/Chapter 5/HTML Formats.w"
+#line 113 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_embed_node_type)
{
-#line 544 "inweb/Chapter 5/HTML Formats.w"
+#line 566 "inweb/Chapter 5/HTML Formats.w"
weave_embed_node *C = RETRIEVE_POINTER_weave_embed_node(N->content);
- text_stream *CH = TL_IS_497;
- text_stream *CW = TL_IS_498;
+ text_stream *CH = TL_IS_501;
+ text_stream *CW = TL_IS_502;
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_499, embed_leaf);
+ filename *F = Patterns__find_file_in_subdirectory(hrs->wv->pattern, TL_IS_503, embed_leaf);
DISCARD_TEXT(embed_leaf)
if (F == NULL) {
- Main__error_in_web(TL_IS_500, hrs->wv->current_weave_line);
+ Main__error_in_web(TL_IS_504, hrs->wv->current_weave_line);
} else {
- Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_501, C->ID);
- Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_502, CW);
- Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_503, CH);
+ Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_505, C->ID);
+ Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_506, CW);
+ Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_507, 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);
@@ -28856,18 +28920,18 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 113 "inweb/Chapter 5/HTML Formats.w"
+#line 114 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_pmac_node_type)
{
-#line 567 "inweb/Chapter 5/HTML Formats.w"
+#line 589 "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_504, url);
+ HTML__begin_link_with_class(OUT, TL_IS_508, url);
DISCARD_TEXT(url)
}
HTML_OPEN_WITH("span", "class=\"%s\"",
@@ -28886,59 +28950,59 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 114 "inweb/Chapter 5/HTML Formats.w"
+#line 115 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_vskip_node_type)
{
-#line 592 "inweb/Chapter 5/HTML Formats.w"
+#line 614 "inweb/Chapter 5/HTML Formats.w"
WRITE("\n");
-}
-#line 115 "inweb/Chapter 5/HTML Formats.w"
-
- else if (N->type == weave_section_node_type)
-{
-#line 595 "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);
-
}
#line 116 "inweb/Chapter 5/HTML Formats.w"
+ else if (N->type == weave_section_node_type)
+{
+#line 617 "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);
+
+}
+#line 117 "inweb/Chapter 5/HTML Formats.w"
+
else if (N->type == weave_code_line_node_type)
{
-#line 599 "inweb/Chapter 5/HTML Formats.w"
+#line 621 "inweb/Chapter 5/HTML Formats.w"
{
-#line 888 "inweb/Chapter 5/HTML Formats.w"
+#line 910 "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 599 "inweb/Chapter 5/HTML Formats.w"
+#line 621 "inweb/Chapter 5/HTML Formats.w"
;
WRITE("\n");
return FALSE;
}
-#line 117 "inweb/Chapter 5/HTML Formats.w"
+#line 118 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_function_usage_node_type)
{
-#line 604 "inweb/Chapter 5/HTML Formats.w"
+#line 626 "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_505, C->url);
+ HTML__begin_link_with_class(OUT, TL_IS_509, C->url);
HTMLFormat__change_colour(OUT, FUNCTION_COLOUR, hrs->colours);
WRITE("%S", C->fn->function_name);
HTMLFormat__change_colour(OUT, -1, hrs->colours);
HTML__end_link(OUT);
}
-#line 118 "inweb/Chapter 5/HTML Formats.w"
+#line 119 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_commentary_node_type)
{
-#line 612 "inweb/Chapter 5/HTML Formats.w"
+#line 634 "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++) {
@@ -28959,23 +29023,23 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
if (C->in_code) HTMLFormat__change_colour(OUT, -1, hrs->colours);
}
-#line 119 "inweb/Chapter 5/HTML Formats.w"
+#line 120 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_carousel_slide_node_type)
{
-#line 632 "inweb/Chapter 5/HTML Formats.w"
+#line 654 "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_506);
+ Swarm__ensure_plugin(hrs->wv, TL_IS_510);
TEMPORARY_TEXT(carousel_id)
TEMPORARY_TEXT(carousel_dots_id)
text_stream *caption_class = NULL;
- text_stream *slide_count_class = TL_IS_507;
+ text_stream *slide_count_class = TL_IS_511;
switch (C->caption_command) {
- case CAROUSEL_CMD: caption_class = TL_IS_508; break;
- case CAROUSEL_ABOVE_CMD: caption_class = TL_IS_509;
- slide_count_class = TL_IS_510; break;
- case CAROUSEL_BELOW_CMD: caption_class = TL_IS_511;
- slide_count_class = TL_IS_512; break;
+ case CAROUSEL_CMD: caption_class = TL_IS_512; break;
+ case CAROUSEL_ABOVE_CMD: caption_class = TL_IS_513;
+ slide_count_class = TL_IS_514; break;
+ case CAROUSEL_BELOW_CMD: caption_class = TL_IS_515;
+ slide_count_class = TL_IS_516; break;
}
WRITE_TO(carousel_id, "carousel-no-%d", hrs->carousel_number);
WRITE_TO(carousel_dots_id, "carousel-dots-no-%d", hrs->carousel_number);
@@ -28997,12 +29061,12 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
if (C->caption_command == CAROUSEL_ABOVE_CMD) {
{
-#line 705 "inweb/Chapter 5/HTML Formats.w"
+#line 727 "inweb/Chapter 5/HTML Formats.w"
if (C->caption_command != CAROUSEL_UNCAPTIONED_CMD)
WRITE("%S
\n", caption_class, C->caption);
}
-#line 663 "inweb/Chapter 5/HTML Formats.w"
+#line 685 "inweb/Chapter 5/HTML Formats.w"
;
WRITE("%d / %d
\n",
slide_count_class, hrs->slide_number, hrs->slide_of);
@@ -29013,22 +29077,22 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
WRITE("");
{
-#line 888 "inweb/Chapter 5/HTML Formats.w"
+#line 910 "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 671 "inweb/Chapter 5/HTML Formats.w"
+#line 693 "inweb/Chapter 5/HTML Formats.w"
;
WRITE("
\n");
if (C->caption_command != CAROUSEL_ABOVE_CMD)
{
-#line 705 "inweb/Chapter 5/HTML Formats.w"
+#line 727 "inweb/Chapter 5/HTML Formats.w"
if (C->caption_command != CAROUSEL_UNCAPTIONED_CMD)
WRITE("%S
\n", caption_class, C->caption);
}
-#line 673 "inweb/Chapter 5/HTML Formats.w"
+#line 695 "inweb/Chapter 5/HTML Formats.w"
;
WRITE("\n");
if (hrs->slide_number == hrs->slide_of) {
@@ -29061,11 +29125,11 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
return FALSE;
}
-#line 120 "inweb/Chapter 5/HTML Formats.w"
+#line 121 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_toc_node_type)
{
-#line 709 "inweb/Chapter 5/HTML Formats.w"
+#line 731 "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");
@@ -29078,11 +29142,11 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
return FALSE;
}
-#line 121 "inweb/Chapter 5/HTML Formats.w"
+#line 122 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_toc_line_node_type)
{
-#line 721 "inweb/Chapter 5/HTML Formats.w"
+#line 743 "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);
@@ -29094,11 +29158,11 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
HTML__end_link(OUT);
}
-#line 122 "inweb/Chapter 5/HTML Formats.w"
+#line 123 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_defn_node_type)
{
-#line 732 "inweb/Chapter 5/HTML Formats.w"
+#line 754 "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);
@@ -29106,11 +29170,11 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
WRITE(" ");
}
-#line 123 "inweb/Chapter 5/HTML Formats.w"
+#line 124 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_source_code_node_type)
{
-#line 739 "inweb/Chapter 5/HTML Formats.w"
+#line 761 "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;
@@ -29130,22 +29194,22 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
if (current_colour >= 0) HTMLFormat__change_colour(OUT, -1, hrs->colours);
}
-#line 124 "inweb/Chapter 5/HTML Formats.w"
+#line 125 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_url_node_type)
{
-#line 758 "inweb/Chapter 5/HTML Formats.w"
+#line 780 "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_513:TL_IS_514, C->url);
+ HTML__begin_link_with_class(OUT, (C->external)?TL_IS_517:TL_IS_518, C->url);
WRITE("%S", C->content);
HTML__end_link(OUT);
}
-#line 125 "inweb/Chapter 5/HTML Formats.w"
+#line 126 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_footnote_cue_node_type)
{
-#line 764 "inweb/Chapter 5/HTML Formats.w"
+#line 786 "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)
@@ -29160,11 +29224,11 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
C->cue_text, C->cue_text, C->cue_text);
}
-#line 126 "inweb/Chapter 5/HTML Formats.w"
+#line 127 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_begin_footnote_text_node_type)
{
-#line 778 "inweb/Chapter 5/HTML Formats.w"
+#line 800 "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;
@@ -29178,12 +29242,12 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
C->cue_text);
{
-#line 888 "inweb/Chapter 5/HTML Formats.w"
+#line 910 "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 811 "inweb/Chapter 5/HTML Formats.w"
;
if (hrs->EPUB_flag)
WRITE(" (return to text)
",
@@ -29194,11 +29258,11 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
return FALSE;
}
-#line 127 "inweb/Chapter 5/HTML Formats.w"
+#line 128 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_display_line_node_type)
{
-#line 799 "inweb/Chapter 5/HTML Formats.w"
+#line 821 "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;
@@ -29208,15 +29272,15 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
OUTDENT; HTML_CLOSE("blockquote"); WRITE("\n");
}
-#line 128 "inweb/Chapter 5/HTML Formats.w"
+#line 129 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_function_defn_node_type)
{
-#line 808 "inweb/Chapter 5/HTML Formats.w"
+#line 830 "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_515);
+ Swarm__ensure_plugin(hrs->wv, TL_IS_519);
HTMLFormat__change_colour(OUT, FUNCTION_COLOUR, hrs->colours);
WRITE("%S", C->fn->function_name);
WRITE("");
@@ -29234,12 +29298,12 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
WRITE(": ");
{
-#line 888 "inweb/Chapter 5/HTML Formats.w"
+#line 910 "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 827 "inweb/Chapter 5/HTML Formats.w"
+#line 849 "inweb/Chapter 5/HTML Formats.w"
;
HTMLFormat__change_colour(OUT, -1, hrs->colours);
WRITE("");
@@ -29252,41 +29316,41 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
return FALSE;
}
-#line 129 "inweb/Chapter 5/HTML Formats.w"
+#line 130 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_item_node_type)
{
-#line 839 "inweb/Chapter 5/HTML Formats.w"
+#line 861 "inweb/Chapter 5/HTML Formats.w"
weave_item_node *C = RETRIEVE_POINTER_weave_item_node(N->content);
- if (Str__eq(C->label, TL_IS_516)) WRITE("● ");
+ if (Str__eq(C->label, TL_IS_520)) WRITE("● ");
else if (Str__len(C->label) > 0) WRITE("(%S) ", C->label);
else WRITE(" ");
}
-#line 130 "inweb/Chapter 5/HTML Formats.w"
+#line 131 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_inline_node_type)
{
-#line 849 "inweb/Chapter 5/HTML Formats.w"
+#line 871 "inweb/Chapter 5/HTML Formats.w"
HTML_OPEN_WITH("span", "class=\"extract\"");
{
-#line 888 "inweb/Chapter 5/HTML Formats.w"
+#line 910 "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 850 "inweb/Chapter 5/HTML Formats.w"
+#line 872 "inweb/Chapter 5/HTML Formats.w"
;
HTML_CLOSE("span");
return FALSE;
}
-#line 131 "inweb/Chapter 5/HTML Formats.w"
+#line 132 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_locale_node_type)
{
-#line 855 "inweb/Chapter 5/HTML Formats.w"
+#line 877 "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);
@@ -29299,11 +29363,11 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
HTML__end_link(OUT);
}
-#line 132 "inweb/Chapter 5/HTML Formats.w"
+#line 133 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_maths_node_type)
{
-#line 867 "inweb/Chapter 5/HTML Formats.w"
+#line 889 "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)) {
@@ -29319,22 +29383,22 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) {
}
}
-#line 133 "inweb/Chapter 5/HTML Formats.w"
+#line 134 "inweb/Chapter 5/HTML Formats.w"
else if (N->type == weave_linebreak_node_type)
{
-#line 882 "inweb/Chapter 5/HTML Formats.w"
+#line 904 "inweb/Chapter 5/HTML Formats.w"
WRITE(" ");
}
-#line 134 "inweb/Chapter 5/HTML Formats.w"
+#line 135 "inweb/Chapter 5/HTML Formats.w"
else internal_error("unable to render unknown node");
return TRUE;
}
-#line 895 "inweb/Chapter 5/HTML Formats.w"
+#line 917 "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;
@@ -29345,7 +29409,7 @@ int HTMLFormat__interior_material(tree_node *N) {
return FALSE;
}
-#line 909 "inweb/Chapter 5/HTML Formats.w"
+#line 931 "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) {
@@ -29363,11 +29427,11 @@ void HTMLFormat__go_to_depth(HTML_render_state *hrs, int from_depth, int to_dept
if (to_depth > 0) HTML_OPEN("li");
}
-#line 927 "inweb/Chapter 5/HTML Formats.w"
+#line 949 "inweb/Chapter 5/HTML Formats.w"
void HTMLFormat__paragraph_number(text_stream *OUT, paragraph *P) {
TEMPORARY_TEXT(TEMP)
Colonies__paragraph_anchor(TEMP, P);
- HTML__anchor_with_class(OUT, TEMP, TL_IS_517);
+ HTML__anchor_with_class(OUT, TEMP, TL_IS_521);
DISCARD_TEXT(TEMP)
if (P->invisible == FALSE) {
HTML_OPEN("b");
@@ -29378,7 +29442,7 @@ void HTMLFormat__paragraph_number(text_stream *OUT, paragraph *P) {
}
}
-#line 942 "inweb/Chapter 5/HTML Formats.w"
+#line 964 "inweb/Chapter 5/HTML Formats.w"
void HTMLFormat__change_colour(text_stream *OUT, int col, colour_scheme *cs) {
if (col == -1) {
HTML_CLOSE("span");
@@ -29402,7 +29466,7 @@ void HTMLFormat__change_colour(text_stream *OUT, int col, colour_scheme *cs) {
}
}
-#line 966 "inweb/Chapter 5/HTML Formats.w"
+#line 988 "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("&");
@@ -29412,12 +29476,12 @@ void HTMLFormat__escape_text(text_stream *OUT, text_stream *id) {
}
}
-#line 978 "inweb/Chapter 5/HTML Formats.w"
+#line 1000 "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_518));
+ WRITE_TO(T, "%S", Bibliographic__get_datum(W->md, TL_IS_522));
W->as_ebook = Epub__new(T, "P");
- filename *CSS = Patterns__find_file_in_subdirectory(pattern, TL_IS_519, TL_IS_520);
+ filename *CSS = Patterns__find_file_in_subdirectory(pattern, TL_IS_523, TL_IS_524);
Epub__use_CSS_throughout(W->as_ebook, CSS);
Epub__attach_metadata(W->as_ebook, L"identifier", T);
DISCARD_TEXT(T)
@@ -29434,7 +29498,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_521, TL_IS_522);
+ weave_format *wf = Formats__create_weave_format(TL_IS_525, TL_IS_526);
METHOD_ADD(wf, RENDER_FOR_MTID, Debugging__render);
}
@@ -29908,7 +29972,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_523);
+ res->PDF_filename = Filenames__set_extension(CF, TL_IS_527);
return res;
}
@@ -30104,7 +30168,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_524))
+ if (Str__eq(macro, TL_IS_528))
{
#line 364 "inweb/Chapter 5/TeX Utilities.w"
if (Str__get_at(text, i) == '\\') {
@@ -30112,8 +30176,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_620)) PUT((wchar_t) 0x2204);
- else if (Str__eq(macro, TL_IS_621)) { PUT((wchar_t) 0x00AC); PUT((wchar_t) 0x2200); }
+ if (Str__eq(macro, TL_IS_624)) PUT((wchar_t) 0x2204);
+ else if (Str__eq(macro, TL_IS_625)) { PUT((wchar_t) 0x00AC); PUT((wchar_t) 0x2200); }
else {
PRINT("Don't know how to apply '\\not' to '\\%S'\n", macro);
}
@@ -30127,99 +30191,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_525)) WRITE("<=");
- else if (Str__eq(macro, TL_IS_526)) WRITE(">=");
- else if (Str__eq(macro, TL_IS_527)) WRITE("~");
- else if (Str__eq(macro, TL_IS_528)) WRITE("");
- else if (Str__eq(macro, TL_IS_529)) WRITE("");
- else if (Str__eq(macro, TL_IS_530)) WRITE("");
- else if (Str__eq(macro, TL_IS_531)) WRITE("=>");
- else if (Str__eq(macro, TL_IS_532)) WRITE("<=>");
- else if (Str__eq(macro, TL_IS_533)) WRITE("-->");
- else if (Str__eq(macro, TL_IS_534)) WRITE("-->");
- else if (Str__eq(macro, TL_IS_535)) WRITE("-->");
- else if (Str__eq(macro, TL_IS_536)) WRITE("<--");
- else if (Str__eq(macro, TL_IS_537)) WRITE("<--");
- else if (Str__eq(macro, TL_IS_538)) WRITE("{");
- else if (Str__eq(macro, TL_IS_539)) WRITE("|");
- else if (Str__eq(macro, TL_IS_540)) WRITE("}");
- else if (Str__eq(macro, TL_IS_541)) WRITE(".");
- else if (Str__eq(macro, TL_IS_542)) WRITE("...");
- else if (Str__eq(macro, TL_IS_543)) WRITE("...");
- else if (Str__eq(macro, TL_IS_544)) WRITE("*");
- else if (Str__eq(macro, TL_IS_545)) WRITE(" ");
- else if (Str__eq(macro, TL_IS_546)) WRITE(" ");
- else if (Str__eq(macro, TL_IS_547)) WRITE("TeX");
- else if (Str__eq(macro, TL_IS_548)) WRITE("!=");
- else if (Str__eq(macro, TL_IS_549)) WRITE("!=");
- else if (Str__eq(macro, TL_IS_550)) WRITE("l");
- else if (Str__eq(macro, TL_IS_551)) WRITE("log");
- else if (Str__eq(macro, TL_IS_552)) WRITE("exp");
- else if (Str__eq(macro, TL_IS_553)) WRITE("sin");
- else if (Str__eq(macro, TL_IS_554)) WRITE("cos");
- else if (Str__eq(macro, TL_IS_555)) WRITE("tan");
- else if (Str__eq(macro, TL_IS_556)) WRITE("T");
- else if (Str__eq(macro, TL_IS_557)) PUT((wchar_t) 0x0391);
- else if (Str__eq(macro, TL_IS_558)) PUT((wchar_t) 0x0392);
- else if (Str__eq(macro, TL_IS_559)) PUT((wchar_t) 0x0393);
- else if (Str__eq(macro, TL_IS_560)) PUT((wchar_t) 0x0394);
- else if (Str__eq(macro, TL_IS_561)) PUT((wchar_t) 0x0395);
- else if (Str__eq(macro, TL_IS_562)) PUT((wchar_t) 0x0396);
- else if (Str__eq(macro, TL_IS_563)) PUT((wchar_t) 0x0397);
- else if (Str__eq(macro, TL_IS_564)) PUT((wchar_t) 0x0398);
- else if (Str__eq(macro, TL_IS_565)) PUT((wchar_t) 0x0399);
- else if (Str__eq(macro, TL_IS_566)) PUT((wchar_t) 0x039A);
- else if (Str__eq(macro, TL_IS_567)) PUT((wchar_t) 0x039B);
- else if (Str__eq(macro, TL_IS_568)) PUT((wchar_t) 0x039C);
- else if (Str__eq(macro, TL_IS_569)) PUT((wchar_t) 0x039D);
- else if (Str__eq(macro, TL_IS_570)) PUT((wchar_t) 0x039E);
- else if (Str__eq(macro, TL_IS_571)) PUT((wchar_t) 0x039F);
- else if (Str__eq(macro, TL_IS_572)) PUT((wchar_t) 0x03A0);
- else if (Str__eq(macro, TL_IS_573)) PUT((wchar_t) 0x03A1);
- else if (Str__eq(macro, TL_IS_574)) PUT((wchar_t) 0x03A2);
- else if (Str__eq(macro, TL_IS_575)) PUT((wchar_t) 0x03A3);
- else if (Str__eq(macro, TL_IS_576)) PUT((wchar_t) 0x03A4);
- else if (Str__eq(macro, TL_IS_577)) PUT((wchar_t) 0x03A5);
- else if (Str__eq(macro, TL_IS_578)) PUT((wchar_t) 0x03A6);
- else if (Str__eq(macro, TL_IS_579)) PUT((wchar_t) 0x03A7);
- else if (Str__eq(macro, TL_IS_580)) PUT((wchar_t) 0x03A8);
- else if (Str__eq(macro, TL_IS_581)) PUT((wchar_t) 0x03A9);
- else if (Str__eq(macro, TL_IS_582)) PUT((wchar_t) 0x03B1);
- else if (Str__eq(macro, TL_IS_583)) PUT((wchar_t) 0x03B2);
- else if (Str__eq(macro, TL_IS_584)) PUT((wchar_t) 0x03B3);
- else if (Str__eq(macro, TL_IS_585)) PUT((wchar_t) 0x03B4);
- else if (Str__eq(macro, TL_IS_586)) PUT((wchar_t) 0x03B5);
- else if (Str__eq(macro, TL_IS_587)) PUT((wchar_t) 0x03B6);
- else if (Str__eq(macro, TL_IS_588)) PUT((wchar_t) 0x03B7);
- else if (Str__eq(macro, TL_IS_589)) PUT((wchar_t) 0x03B8);
- else if (Str__eq(macro, TL_IS_590)) PUT((wchar_t) 0x03B9);
- else if (Str__eq(macro, TL_IS_591)) PUT((wchar_t) 0x03BA);
- else if (Str__eq(macro, TL_IS_592)) PUT((wchar_t) 0x03BB);
- else if (Str__eq(macro, TL_IS_593)) PUT((wchar_t) 0x03BC);
- else if (Str__eq(macro, TL_IS_594)) PUT((wchar_t) 0x03BD);
- else if (Str__eq(macro, TL_IS_595)) PUT((wchar_t) 0x03BE);
- else if (Str__eq(macro, TL_IS_596)) PUT((wchar_t) 0x03BF);
- else if (Str__eq(macro, TL_IS_597)) PUT((wchar_t) 0x03C0);
- else if (Str__eq(macro, TL_IS_598)) PUT((wchar_t) 0x03C1);
- else if (Str__eq(macro, TL_IS_599)) PUT((wchar_t) 0x03C2);
- else if (Str__eq(macro, TL_IS_600)) PUT((wchar_t) 0x03C3);
- else if (Str__eq(macro, TL_IS_601)) PUT((wchar_t) 0x03C4);
- else if (Str__eq(macro, TL_IS_602)) PUT((wchar_t) 0x03C5);
- else if (Str__eq(macro, TL_IS_603)) PUT((wchar_t) 0x03C6);
- else if (Str__eq(macro, TL_IS_604)) PUT((wchar_t) 0x03C7);
- else if (Str__eq(macro, TL_IS_605)) PUT((wchar_t) 0x03C8);
- else if (Str__eq(macro, TL_IS_606)) PUT((wchar_t) 0x03C9);
- else if (Str__eq(macro, TL_IS_607)) PUT((wchar_t) 0x2203);
- else if (Str__eq(macro, TL_IS_608)) PUT((wchar_t) 0x2208);
- else if (Str__eq(macro, TL_IS_609)) PUT((wchar_t) 0x2200);
- else if (Str__eq(macro, TL_IS_610)) PUT((wchar_t) 0x2229);
- else if (Str__eq(macro, TL_IS_611)) PUT((wchar_t) 0x2205);
- else if (Str__eq(macro, TL_IS_612)) PUT((wchar_t) 0x2286);
- else if (Str__eq(macro, TL_IS_613)) PUT((wchar_t) 0x2227);
- else if (Str__eq(macro, TL_IS_614)) PUT((wchar_t) 0x2228);
- else if (Str__eq(macro, TL_IS_615)) PUT((wchar_t) 0x00AC);
- else if (Str__eq(macro, TL_IS_616)) PUT((wchar_t) 0x03A3);
- else if (Str__eq(macro, TL_IS_617)) PUT((wchar_t) 0x03A0);
+ if (Str__eq(macro, TL_IS_529)) WRITE("<=");
+ else if (Str__eq(macro, TL_IS_530)) WRITE(">=");
+ else if (Str__eq(macro, TL_IS_531)) WRITE("~");
+ else if (Str__eq(macro, TL_IS_532)) WRITE("");
+ else if (Str__eq(macro, TL_IS_533)) WRITE("");
+ else if (Str__eq(macro, TL_IS_534)) WRITE("");
+ else if (Str__eq(macro, TL_IS_535)) WRITE("=>");
+ else if (Str__eq(macro, TL_IS_536)) WRITE("<=>");
+ else if (Str__eq(macro, TL_IS_537)) WRITE("-->");
+ else if (Str__eq(macro, TL_IS_538)) WRITE("-->");
+ else if (Str__eq(macro, TL_IS_539)) WRITE("-->");
+ else if (Str__eq(macro, TL_IS_540)) WRITE("<--");
+ else if (Str__eq(macro, TL_IS_541)) WRITE("<--");
+ else if (Str__eq(macro, TL_IS_542)) WRITE("{");
+ else if (Str__eq(macro, TL_IS_543)) WRITE("|");
+ else if (Str__eq(macro, TL_IS_544)) WRITE("}");
+ else if (Str__eq(macro, TL_IS_545)) WRITE(".");
+ else if (Str__eq(macro, TL_IS_546)) WRITE("...");
+ else if (Str__eq(macro, TL_IS_547)) WRITE("...");
+ else if (Str__eq(macro, TL_IS_548)) WRITE("*");
+ else if (Str__eq(macro, TL_IS_549)) WRITE(" ");
+ else if (Str__eq(macro, TL_IS_550)) WRITE(" ");
+ else if (Str__eq(macro, TL_IS_551)) WRITE("TeX");
+ else if (Str__eq(macro, TL_IS_552)) WRITE("!=");
+ else if (Str__eq(macro, TL_IS_553)) WRITE("!=");
+ else if (Str__eq(macro, TL_IS_554)) WRITE("l");
+ else if (Str__eq(macro, TL_IS_555)) WRITE("log");
+ else if (Str__eq(macro, TL_IS_556)) WRITE("exp");
+ else if (Str__eq(macro, TL_IS_557)) WRITE("sin");
+ else if (Str__eq(macro, TL_IS_558)) WRITE("cos");
+ else if (Str__eq(macro, TL_IS_559)) WRITE("tan");
+ else if (Str__eq(macro, TL_IS_560)) WRITE("T");
+ else if (Str__eq(macro, TL_IS_561)) PUT((wchar_t) 0x0391);
+ else if (Str__eq(macro, TL_IS_562)) PUT((wchar_t) 0x0392);
+ else if (Str__eq(macro, TL_IS_563)) PUT((wchar_t) 0x0393);
+ else if (Str__eq(macro, TL_IS_564)) PUT((wchar_t) 0x0394);
+ else if (Str__eq(macro, TL_IS_565)) PUT((wchar_t) 0x0395);
+ else if (Str__eq(macro, TL_IS_566)) PUT((wchar_t) 0x0396);
+ else if (Str__eq(macro, TL_IS_567)) PUT((wchar_t) 0x0397);
+ else if (Str__eq(macro, TL_IS_568)) PUT((wchar_t) 0x0398);
+ else if (Str__eq(macro, TL_IS_569)) PUT((wchar_t) 0x0399);
+ else if (Str__eq(macro, TL_IS_570)) PUT((wchar_t) 0x039A);
+ else if (Str__eq(macro, TL_IS_571)) PUT((wchar_t) 0x039B);
+ else if (Str__eq(macro, TL_IS_572)) PUT((wchar_t) 0x039C);
+ else if (Str__eq(macro, TL_IS_573)) PUT((wchar_t) 0x039D);
+ else if (Str__eq(macro, TL_IS_574)) PUT((wchar_t) 0x039E);
+ else if (Str__eq(macro, TL_IS_575)) PUT((wchar_t) 0x039F);
+ else if (Str__eq(macro, TL_IS_576)) PUT((wchar_t) 0x03A0);
+ else if (Str__eq(macro, TL_IS_577)) PUT((wchar_t) 0x03A1);
+ else if (Str__eq(macro, TL_IS_578)) PUT((wchar_t) 0x03A2);
+ else if (Str__eq(macro, TL_IS_579)) PUT((wchar_t) 0x03A3);
+ else if (Str__eq(macro, TL_IS_580)) PUT((wchar_t) 0x03A4);
+ else if (Str__eq(macro, TL_IS_581)) PUT((wchar_t) 0x03A5);
+ else if (Str__eq(macro, TL_IS_582)) PUT((wchar_t) 0x03A6);
+ else if (Str__eq(macro, TL_IS_583)) PUT((wchar_t) 0x03A7);
+ else if (Str__eq(macro, TL_IS_584)) PUT((wchar_t) 0x03A8);
+ else if (Str__eq(macro, TL_IS_585)) PUT((wchar_t) 0x03A9);
+ else if (Str__eq(macro, TL_IS_586)) PUT((wchar_t) 0x03B1);
+ else if (Str__eq(macro, TL_IS_587)) PUT((wchar_t) 0x03B2);
+ else if (Str__eq(macro, TL_IS_588)) PUT((wchar_t) 0x03B3);
+ else if (Str__eq(macro, TL_IS_589)) PUT((wchar_t) 0x03B4);
+ else if (Str__eq(macro, TL_IS_590)) PUT((wchar_t) 0x03B5);
+ else if (Str__eq(macro, TL_IS_591)) PUT((wchar_t) 0x03B6);
+ else if (Str__eq(macro, TL_IS_592)) PUT((wchar_t) 0x03B7);
+ else if (Str__eq(macro, TL_IS_593)) PUT((wchar_t) 0x03B8);
+ else if (Str__eq(macro, TL_IS_594)) PUT((wchar_t) 0x03B9);
+ else if (Str__eq(macro, TL_IS_595)) PUT((wchar_t) 0x03BA);
+ else if (Str__eq(macro, TL_IS_596)) PUT((wchar_t) 0x03BB);
+ else if (Str__eq(macro, TL_IS_597)) PUT((wchar_t) 0x03BC);
+ else if (Str__eq(macro, TL_IS_598)) PUT((wchar_t) 0x03BD);
+ else if (Str__eq(macro, TL_IS_599)) PUT((wchar_t) 0x03BE);
+ else if (Str__eq(macro, TL_IS_600)) PUT((wchar_t) 0x03BF);
+ else if (Str__eq(macro, TL_IS_601)) PUT((wchar_t) 0x03C0);
+ else if (Str__eq(macro, TL_IS_602)) PUT((wchar_t) 0x03C1);
+ else if (Str__eq(macro, TL_IS_603)) PUT((wchar_t) 0x03C2);
+ else if (Str__eq(macro, TL_IS_604)) PUT((wchar_t) 0x03C3);
+ else if (Str__eq(macro, TL_IS_605)) PUT((wchar_t) 0x03C4);
+ else if (Str__eq(macro, TL_IS_606)) PUT((wchar_t) 0x03C5);
+ else if (Str__eq(macro, TL_IS_607)) PUT((wchar_t) 0x03C6);
+ else if (Str__eq(macro, TL_IS_608)) PUT((wchar_t) 0x03C7);
+ else if (Str__eq(macro, TL_IS_609)) PUT((wchar_t) 0x03C8);
+ else if (Str__eq(macro, TL_IS_610)) PUT((wchar_t) 0x03C9);
+ else if (Str__eq(macro, TL_IS_611)) PUT((wchar_t) 0x2203);
+ else if (Str__eq(macro, TL_IS_612)) PUT((wchar_t) 0x2208);
+ else if (Str__eq(macro, TL_IS_613)) PUT((wchar_t) 0x2200);
+ else if (Str__eq(macro, TL_IS_614)) PUT((wchar_t) 0x2229);
+ else if (Str__eq(macro, TL_IS_615)) PUT((wchar_t) 0x2205);
+ else if (Str__eq(macro, TL_IS_616)) PUT((wchar_t) 0x2286);
+ else if (Str__eq(macro, TL_IS_617)) PUT((wchar_t) 0x2227);
+ else if (Str__eq(macro, TL_IS_618)) PUT((wchar_t) 0x2228);
+ else if (Str__eq(macro, TL_IS_619)) PUT((wchar_t) 0x00AC);
+ else if (Str__eq(macro, TL_IS_620)) PUT((wchar_t) 0x03A3);
+ else if (Str__eq(macro, TL_IS_621)) PUT((wchar_t) 0x03A0);
else {
if (Str__len(macro) > 0) {
int suspect = TRUE;
@@ -30229,8 +30293,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_618)) suspect = FALSE;
- if (Str__eq(macro, TL_IS_619)) suspect = FALSE;
+ if (Str__eq(macro, TL_IS_622)) suspect = FALSE;
+ if (Str__eq(macro, TL_IS_623)) suspect = FALSE;
if (suspect)
PRINT("[Passing through unknown TeX macro \\%S:\n %S\n", macro, text);
}
@@ -30387,7 +30451,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_622, FALSE, mr.exp[1], FALSE, NULL, tfp, MS, marker, TL_IS_623);
+ Makefiles__repeat(OUT, TL_IS_626, FALSE, mr.exp[1], FALSE, NULL, tfp, MS, marker, TL_IS_627);
WRITE("%S\n", mr.exp[2]);
MS->last_line_was_blank = FALSE;
Regexp__dispose_of(&mr);
@@ -30409,7 +30473,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_622, FALSE, mr.exp[1], FALSE, NULL, tfp, MS, marker, TL_IS_623);
+ Makefiles__repeat(OUT, TL_IS_626, FALSE, mr.exp[1], FALSE, NULL, tfp, MS, marker, TL_IS_627);
WRITE("%S\n", mr.exp[2]);
MS->last_line_was_blank = FALSE;
Regexp__dispose_of(&mr);
@@ -30431,7 +30495,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_622, FALSE, mr.exp[1], FALSE, NULL, tfp, MS, marker, TL_IS_623);
+ Makefiles__repeat(OUT, TL_IS_626, FALSE, mr.exp[1], FALSE, NULL, tfp, MS, marker, TL_IS_627);
WRITE("%S\n", mr.exp[2]);
MS->last_line_was_blank = FALSE;
Regexp__dispose_of(&mr);
@@ -30449,7 +30513,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_625);
+ pathname *path_to_intest = Pathnames__down(Pathnames__up(path_to_inweb), TL_IS_629);
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));
@@ -30466,7 +30530,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_624);
+ filename *prototype = Filenames__in(path_to_inweb, TL_IS_628);
MS->allow_commands = FALSE;
TextFiles__read(prototype, FALSE, "can't open make settings file",
TRUE, Makefiles__scan_makefile_line, NULL, MS);
@@ -30753,7 +30817,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_626)) || (Str__eq(tag, M->module_tag)))) {
+ ((Str__eq(tag, TL_IS_630)) || (Str__eq(tag, M->module_tag)))) {
if ((prefix) && ((c++ > 0) || (every_time))) WRITE("%S", prefix);
if (matter) {
TEMPORARY_TEXT(line)
@@ -30807,7 +30871,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_627);
+ Filenames__in(path_to_inweb_materials, TL_IS_631);
TextFiles__read(prototype, FALSE, "can't open make settings file",
TRUE, Git__copy_gitignore_line, NULL, MS);
Regexp__dispose_of(&mr);
@@ -30842,7 +30906,7 @@ void Ctags__write(web *W, filename *F) {
P = Filenames__up(F);
} else {
P = W->md->path_to_web;
- F = Filenames__in(P, TL_IS_628);
+ F = Filenames__in(P, TL_IS_632);
}
text_stream *OUT = &ctags_file;
if (STREAM_OPEN_TO_FILE(OUT, F, UTF8_ENC) == FALSE)
@@ -30854,7 +30918,7 @@ void Ctags__write(web *W, filename *F) {
WRITE("!_TAG_FILE_SORTED\t0\t/0=unsorted, 1=sorted, 2=foldcase/\n");
WRITE("!_TAG_PROGRAM_AUTHOR\tGraham Nelson\t/graham.nelson@mod-langs.ox.ac.uk/\n");
WRITE("!_TAG_PROGRAM_NAME\tinweb\t//\n");
- WRITE("!_TAG_PROGRAM_VERSION\t7-alpha.1+1A80\t/built 11 March 2022/\n");
+ WRITE("!_TAG_PROGRAM_VERSION\t7-alpha.1+1A81\t/built 23 March 2022/\n");
}
#line 47 "inweb/Chapter 6/Ctags Support.w"
@@ -30948,11 +31012,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_629, NULL, NULL);
+ macro *V = Readme__new_macro(TL_IS_633, NULL, NULL);
ADD_TO_LINKED_LIST(V, macro, ws.known_macros);
- macro *P = Readme__new_macro(TL_IS_630, NULL, NULL);
+ macro *P = Readme__new_macro(TL_IS_634, NULL, NULL);
ADD_TO_LINKED_LIST(P, macro, ws.known_macros);
- macro *A = Readme__new_macro(TL_IS_631, NULL, NULL);
+ macro *A = Readme__new_macro(TL_IS_635, NULL, NULL);
ADD_TO_LINKED_LIST(A, macro, ws.known_macros);
ws.stack_frame = NULL;
text_stream file_to;
@@ -30988,7 +31052,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_632, tfp);
+ Readme__expand_material(ws, OUT, TL_IS_636, tfp);
}
Regexp__dispose_of(&mr);
}
@@ -31119,7 +31183,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_633))
+ if (Str__eq(M->name, TL_IS_637))
{
#line 215 "inweb/Chapter 6/Readme Writeme.w"
if (ws->stack_frame->no_pars != 1)
@@ -31127,14 +31191,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_636);
+ Readme__write_var(OUT, program, TL_IS_640);
DISCARD_TEXT(program)
}
}
#line 205 "inweb/Chapter 6/Readme Writeme.w"
- else if (Str__eq(M->name, TL_IS_634))
+ else if (Str__eq(M->name, TL_IS_638))
{
#line 225 "inweb/Chapter 6/Readme Writeme.w"
if (ws->stack_frame->no_pars != 1)
@@ -31142,14 +31206,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_637);
+ Readme__write_var(OUT, program, TL_IS_641);
DISCARD_TEXT(program)
}
}
#line 206 "inweb/Chapter 6/Readme Writeme.w"
- else if (Str__eq(M->name, TL_IS_635))
+ else if (Str__eq(M->name, TL_IS_639))
{
#line 235 "inweb/Chapter 6/Readme Writeme.w"
if (ws->stack_frame->no_pars != 2)
@@ -31178,8 +31242,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_638)) WRITE("%S", A->date);
- else if (Str__eq(datum, TL_IS_639)) WRITE("%S", A->version);
+ else if (Str__eq(datum, TL_IS_642)) WRITE("%S", A->date);
+ else if (Str__eq(datum, TL_IS_643)) WRITE("%S", A->version);
}
#line 273 "inweb/Chapter 6/Readme Writeme.w"
@@ -31210,7 +31274,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_640), TL_IS_641);
+ Pathnames__down(Pathnames__from_text(program), TL_IS_644), TL_IS_645);
if (TextFiles__exists(I6_vn))
{
#line 310 "inweb/Chapter 6/Readme Writeme.w"
@@ -31220,7 +31284,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_642);
+ filename *template_vn = Filenames__in(Pathnames__from_text(program), TL_IS_646);
if (TextFiles__exists(template_vn))
{
#line 314 "inweb/Chapter 6/Readme Writeme.w"
@@ -31230,7 +31294,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_643);
+ filename *rmt_vn = Filenames__in(Pathnames__from_text(program), TL_IS_647);
if (TextFiles__exists(rmt_vn))
{
#line 318 "inweb/Chapter 6/Readme Writeme.w"
@@ -31240,7 +31304,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_644);
+ rmt_vn = Filenames__in(Pathnames__from_text(program), TL_IS_648);
if (TextFiles__exists(rmt_vn))
{
#line 318 "inweb/Chapter 6/Readme Writeme.w"
@@ -31315,7 +31379,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_645;
+ C->home = TL_IS_649;
C->assets_path = NULL;
C->patterns_path = NULL;
colony_reader_state crs;
@@ -31339,8 +31403,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_646)) CM->web_rather_than_module = TRUE;
- else if (Str__eq(mr.exp[0], TL_IS_647)) CM->web_rather_than_module = FALSE;
+ if (Str__eq(mr.exp[0], TL_IS_650)) CM->web_rather_than_module = TRUE;
+ else if (Str__eq(mr.exp[0], TL_IS_651)) 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);
@@ -31348,7 +31412,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_648, 6)) {
+ if (Str__suffix_eq(CM->path, TL_IS_652, 6)) {
filename *F = Filenames__from_text(CM->path);
Filenames__write_unextended_leafname(CM->home_leaf, F);
WRITE_TO(CM->home_leaf, ".html");
@@ -31488,7 +31552,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_649, 6))
+ if (Str__suffix_eq(CM->path, TL_IS_653, 6))
F = Filenames__from_text(CM->path);
else
P = Pathnames__from_text(CM->path);
@@ -31515,7 +31579,7 @@ text_stream *Colonies__home(void) {
colony *C;
LOOP_OVER(C, colony)
return C->home;
- return TL_IS_650;
+ return TL_IS_654;
}
pathname *Colonies__assets_path(void) {
@@ -31706,7 +31770,7 @@ int Colonies__resolve_reference_in_weave_inner(text_stream *url, text_stream *ti
return FALSE;
}
if (N > 1) {
- Main__error_in_web(TL_IS_651, L);
+ Main__error_in_web(TL_IS_655, L);
WebModules__named_reference(&found_M, &found_Sm, &bare_module_name,
title, search_M, text, TRUE, FALSE);
return FALSE;
@@ -31788,7 +31852,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_652)) {
+ if (Str__ne(to_M->module_name, TL_IS_656)) {
colony_member *to_C = Colonies__find(to_M->module_name);
if (to_C) {
pathname *from_path = Filenames__up(from);
@@ -31989,485 +32053,489 @@ void register_tangled_text_literals(void) {
TL_IS_169 = Str__literal(L"(early code)");
TL_IS_170 = Str__literal(L"Extracts");
TL_IS_171 = Str__literal(L"Figures");
- TL_IS_172 = Str__literal(L"Audio");
- TL_IS_173 = Str__literal(L"Video");
- TL_IS_174 = Str__literal(L"Download");
+ TL_IS_172 = Str__literal(L"HTML");
+ TL_IS_173 = Str__literal(L"Audio");
+ TL_IS_174 = Str__literal(L"Video");
TL_IS_175 = Str__literal(L"Download");
- TL_IS_176 = Str__literal(L"Carousels");
+ TL_IS_176 = Str__literal(L"Download");
TL_IS_177 = Str__literal(L"Carousels");
TL_IS_178 = Str__literal(L"Carousels");
TL_IS_179 = Str__literal(L"Carousels");
TL_IS_180 = Str__literal(L"Carousels");
- TL_IS_181 = Str__literal(L"Videos");
- TL_IS_182 = Str__literal(L"unknown bracketed annotation");
- TL_IS_183 = Str__literal(L"unknown material after '='");
- TL_IS_184 = Str__literal(L"undisplayed");
- TL_IS_185 = Str__literal(L"hyperlinked");
- TL_IS_186 = Str__literal(L"only 'undisplayed' and/or 'hyperlinked' can precede 'text' here");
- TL_IS_187 = Str__literal(L"=");
- TL_IS_188 = Str__literal(L"don't understand @command");
- TL_IS_189 = Str__literal(L"Purpose used after bar");
- TL_IS_190 = Str__literal(L"Interface used after bar");
- TL_IS_191 = Str__literal(L"Definitions used after bar");
- TL_IS_192 = Str__literal(L"second bar in the same section");
- TL_IS_193 = Str__literal(L"enumeration constants can't supply a value");
- TL_IS_194 = Str__literal(L"Paragraph Numbers Visibility");
- TL_IS_195 = Str__literal(L"Off");
- TL_IS_196 = Str__literal(L"P");
- TL_IS_197 = Str__literal(L"S");
- TL_IS_198 = Str__literal(L"Footnote Begins Notation");
- TL_IS_199 = Str__literal(L"Footnote Ends Notation");
- TL_IS_200 = Str__literal(L"Off");
- TL_IS_201 = Str__literal(L"ifdef-");
- TL_IS_202 = Str__literal(L"ifndef-");
- TL_IS_203 = Str__literal(L".");
- TL_IS_204 = Str__literal(L"This paragraph is used only if ");
- TL_IS_205 = Str__literal(L" and if ");
- TL_IS_206 = Str__literal(L" and ");
- TL_IS_207 = Str__literal(L" is");
- TL_IS_208 = Str__literal(L" are");
- TL_IS_209 = Str__literal(L" defined");
- TL_IS_210 = Str__literal(L" undefined");
- TL_IS_211 = Str__literal(L"enumeration constants must belong to a _FAMILY");
- TL_IS_212 = Str__literal(L"this enumeration _FAMILY is unknown");
- TL_IS_213 = Str__literal(L"this enumeration _FAMILY already exists");
- TL_IS_214 = Str__literal(L"unrecognised interface line");
- TL_IS_215 = Str__literal(L"makescript.txt");
+ TL_IS_181 = Str__literal(L"Carousels");
+ TL_IS_182 = Str__literal(L"Videos");
+ TL_IS_183 = Str__literal(L"unknown bracketed annotation");
+ TL_IS_184 = Str__literal(L"unknown material after '='");
+ TL_IS_185 = Str__literal(L"undisplayed");
+ TL_IS_186 = Str__literal(L"hyperlinked");
+ TL_IS_187 = Str__literal(L"only 'undisplayed' and/or 'hyperlinked' can precede 'text' here");
+ TL_IS_188 = Str__literal(L"=");
+ TL_IS_189 = Str__literal(L"don't understand @command");
+ TL_IS_190 = Str__literal(L"Purpose used after bar");
+ TL_IS_191 = Str__literal(L"Interface used after bar");
+ TL_IS_192 = Str__literal(L"Definitions used after bar");
+ TL_IS_193 = Str__literal(L"second bar in the same section");
+ TL_IS_194 = Str__literal(L"enumeration constants can't supply a value");
+ TL_IS_195 = Str__literal(L"Paragraph Numbers Visibility");
+ TL_IS_196 = Str__literal(L"Off");
+ 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_217 = Str__literal(L"gitignorescript.txt");
+ TL_IS_217 = Str__literal(L"makescript.txt");
TL_IS_218 = Str__literal(L"gitignorescript.txt");
- TL_IS_219 = Str__literal(L"");
- TL_IS_220 = Str__literal(L"Chapters");
- TL_IS_221 = Str__literal(L"Modules");
- TL_IS_222 = Str__literal(L"Module Page");
- TL_IS_223 = Str__literal(L"Module Purpose");
- TL_IS_224 = Str__literal(L"Purpose");
- TL_IS_225 = Str__literal(L"Chapter Purpose");
- TL_IS_226 = Str__literal(L"Section Purpose");
- TL_IS_227 = Str__literal(L"Purpose");
- TL_IS_228 = Str__literal(L"index.html");
- TL_IS_229 = Str__literal(L"inweb");
+ 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_231 = Str__literal(L"inweb");
- TL_IS_232 = Str__literal(L"End of weave");
- TL_IS_233 = Str__literal(L"Definitions");
- TL_IS_234 = Str__literal(L"bad start to paragraph");
- TL_IS_235 = Str__literal(L"");
+ 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_237 = Str__literal(L"footnote never cued");
- TL_IS_238 = Str__literal(L"Preform");
+ TL_IS_237 = Str__literal(L"");
+ TL_IS_238 = Str__literal(L"footnote never cued");
TL_IS_239 = Str__literal(L"Preform");
- TL_IS_240 = Str__literal(L"define");
- TL_IS_241 = Str__literal(L"default");
- TL_IS_242 = Str__literal(L"enum");
- TL_IS_243 = Str__literal(L"Preform");
- TL_IS_244 = Str__literal(L"This is ");
- TL_IS_245 = Str__literal(L"words: About Preform");
- TL_IS_246 = Str__literal(L"Preform grammar");
+ TL_IS_240 = Str__literal(L"Preform");
+ TL_IS_241 = Str__literal(L"define");
+ TL_IS_242 = Str__literal(L"default");
+ TL_IS_243 = Str__literal(L"enum");
+ TL_IS_244 = Str__literal(L"Preform");
+ TL_IS_245 = Str__literal(L"This is ");
+ TL_IS_246 = Str__literal(L"words: About Preform");
TL_IS_247 = Str__literal(L"Preform grammar");
- TL_IS_248 = Str__literal(L", not regular C code.");
- TL_IS_249 = Str__literal(L"This code is ");
- TL_IS_250 = Str__literal(L"never used");
- TL_IS_251 = Str__literal(L", ");
- TL_IS_252 = Str__literal(L" and ");
- TL_IS_253 = Str__literal(L"used in ");
- TL_IS_254 = Str__literal(L" (twice)");
- TL_IS_255 = Str__literal(L" (three times)");
- TL_IS_256 = Str__literal(L" (four times)");
- TL_IS_257 = Str__literal(L" (five times)");
- TL_IS_258 = Str__literal(L".");
- TL_IS_259 = Str__literal(L"The structure ");
- TL_IS_260 = Str__literal(L" is private to this section");
- TL_IS_261 = Str__literal(L" is accessed in ");
- TL_IS_262 = Str__literal(L", ");
- TL_IS_263 = Str__literal(L" and here");
- TL_IS_264 = Str__literal(L".");
- TL_IS_265 = Str__literal(L"The function ");
- TL_IS_266 = Str__literal(L" appears nowhere else");
- TL_IS_267 = Str__literal(L"none");
- TL_IS_268 = Str__literal(L")");
- TL_IS_269 = Str__literal(L".");
- TL_IS_270 = Str__literal(L" is used in ");
- TL_IS_271 = Str__literal(L"), ");
- TL_IS_272 = Str__literal(L", ");
- TL_IS_273 = Str__literal(L" (");
- TL_IS_274 = Str__literal(L" - ");
- TL_IS_275 = Str__literal(L", ");
- TL_IS_276 = Str__literal(L"Code In Code Comments Notation");
- TL_IS_277 = Str__literal(L"Code In Commentary Notation");
- TL_IS_278 = Str__literal(L"Off");
- TL_IS_279 = Str__literal(L"TeX Mathematics Displayed Notation");
- TL_IS_280 = Str__literal(L"Off");
- TL_IS_281 = Str__literal(L"TeX Mathematics Notation");
- TL_IS_282 = Str__literal(L"Off");
- TL_IS_283 = Str__literal(L"Cross-References Notation");
- TL_IS_284 = Str__literal(L"Off");
- TL_IS_285 = Str__literal(L"http://");
- TL_IS_286 = Str__literal(L"https://");
- TL_IS_287 = Str__literal(L"this is a cue for a missing note");
- TL_IS_288 = Str__literal(L"Cross-References Notation");
- TL_IS_289 = Str__literal(L"Off");
- TL_IS_290 = Str__literal(L"http://");
- TL_IS_291 = Str__literal(L"https://");
- TL_IS_292 = Str__literal(L"misplaced definition");
- TL_IS_293 = Str__literal(L"unknown macro");
- TL_IS_294 = Str__literal(L"Dialects");
- TL_IS_295 = Str__literal(L"C");
- TL_IS_296 = Str__literal(L"Languages");
- TL_IS_297 = Str__literal(L"InC");
- TL_IS_298 = Str__literal(L"Name");
- TL_IS_299 = Str__literal(L"Details");
- TL_IS_300 = Str__literal(L"Extension");
- TL_IS_301 = Str__literal(L"Line Comment");
- TL_IS_302 = Str__literal(L"Whole Line Comment");
- TL_IS_303 = Str__literal(L"Multiline Comment Open");
- TL_IS_304 = Str__literal(L"Multiline Comment Close");
- TL_IS_305 = Str__literal(L"String Literal");
- TL_IS_306 = Str__literal(L"String Literal Escape");
- TL_IS_307 = Str__literal(L"Character Literal");
- TL_IS_308 = Str__literal(L"Character Literal Escape");
- TL_IS_309 = Str__literal(L"Binary Literal Prefix");
- TL_IS_310 = Str__literal(L"Octal Literal Prefix");
- TL_IS_311 = Str__literal(L"Hexadecimal Literal Prefix");
- TL_IS_312 = Str__literal(L"Negative Literal Prefix");
- TL_IS_313 = Str__literal(L"Shebang");
- TL_IS_314 = Str__literal(L"Line Marker");
- TL_IS_315 = Str__literal(L"Before Named Paragraph Expansion");
- TL_IS_316 = Str__literal(L"After Named Paragraph Expansion");
- TL_IS_317 = Str__literal(L"Start Definition");
- TL_IS_318 = Str__literal(L"Prolong Definition");
- TL_IS_319 = Str__literal(L"End Definition");
- TL_IS_320 = Str__literal(L"Start Ifdef");
- TL_IS_321 = Str__literal(L"Start Ifndef");
- TL_IS_322 = Str__literal(L"End Ifdef");
- TL_IS_323 = Str__literal(L"End Ifndef");
- TL_IS_324 = Str__literal(L"C-Like");
- TL_IS_325 = Str__literal(L"Suppress Disclaimer");
- TL_IS_326 = Str__literal(L"Supports Namespaces");
- TL_IS_327 = Str__literal(L"Function Declaration Notation");
- TL_IS_328 = Str__literal(L"Type Declaration Notation");
- TL_IS_329 = Str__literal(L"}");
- TL_IS_330 = Str__literal(L"unquoted");
- TL_IS_331 = Str__literal(L"{");
- TL_IS_332 = Str__literal(L"debug");
- TL_IS_333 = Str__literal(L"!string");
- TL_IS_334 = Str__literal(L"!function");
- TL_IS_335 = Str__literal(L"!definition");
- TL_IS_336 = Str__literal(L"!reserved");
- TL_IS_337 = Str__literal(L"!element");
- TL_IS_338 = Str__literal(L"!identifier");
- TL_IS_339 = Str__literal(L"!character");
- TL_IS_340 = Str__literal(L"!constant");
- TL_IS_341 = Str__literal(L"!plain");
- TL_IS_342 = Str__literal(L"!extract");
- TL_IS_343 = Str__literal(L"!comment");
- TL_IS_344 = Str__literal(L"true");
- TL_IS_345 = Str__literal(L"false");
- TL_IS_346 = Str__literal(L"both");
- TL_IS_347 = Str__literal(L"brackets");
- TL_IS_348 = Str__literal(L"characters");
- TL_IS_349 = Str__literal(L"coloured");
- TL_IS_350 = Str__literal(L"colouring");
- TL_IS_351 = Str__literal(L"debug");
- TL_IS_352 = Str__literal(L"false");
- TL_IS_353 = Str__literal(L"in");
- TL_IS_354 = Str__literal(L"instances");
- TL_IS_355 = Str__literal(L"keyword");
- TL_IS_356 = Str__literal(L"matches");
- TL_IS_357 = Str__literal(L"matching");
- TL_IS_358 = Str__literal(L"not");
- TL_IS_359 = Str__literal(L"of");
- TL_IS_360 = Str__literal(L"on");
- TL_IS_361 = Str__literal(L"optionally");
- TL_IS_362 = Str__literal(L"prefix");
- TL_IS_363 = Str__literal(L"runs");
- TL_IS_364 = Str__literal(L"spaced");
- TL_IS_365 = Str__literal(L"suffix");
- TL_IS_366 = Str__literal(L"true");
- TL_IS_367 = Str__literal(L"unquoted");
- TL_IS_368 = Str__literal(L"Structures");
- TL_IS_369 = Str__literal(L"Main::");
- TL_IS_370 = Str__literal(L"Tangled output generated by inweb: do not edit");
- TL_IS_371 = Str__literal(L"this programming language does not support @d");
- TL_IS_372 = Str__literal(L"this programming language does not support multiline @d");
- TL_IS_373 = Str__literal(L"Preform");
+ TL_IS_248 = Str__literal(L"Preform grammar");
+ TL_IS_249 = Str__literal(L", not regular C code.");
+ TL_IS_250 = Str__literal(L"This code is ");
+ TL_IS_251 = Str__literal(L"never used");
+ TL_IS_252 = Str__literal(L", ");
+ TL_IS_253 = Str__literal(L" and ");
+ TL_IS_254 = Str__literal(L"used in ");
+ TL_IS_255 = Str__literal(L" (twice)");
+ TL_IS_256 = Str__literal(L" (three times)");
+ TL_IS_257 = Str__literal(L" (four times)");
+ TL_IS_258 = Str__literal(L" (five times)");
+ TL_IS_259 = Str__literal(L".");
+ TL_IS_260 = Str__literal(L"The structure ");
+ TL_IS_261 = Str__literal(L" is private to this section");
+ TL_IS_262 = Str__literal(L" is accessed in ");
+ TL_IS_263 = Str__literal(L", ");
+ TL_IS_264 = Str__literal(L" and here");
+ TL_IS_265 = Str__literal(L".");
+ TL_IS_266 = Str__literal(L"The function ");
+ TL_IS_267 = Str__literal(L" appears nowhere else");
+ TL_IS_268 = Str__literal(L"none");
+ TL_IS_269 = Str__literal(L")");
+ TL_IS_270 = Str__literal(L".");
+ TL_IS_271 = Str__literal(L" is used in ");
+ TL_IS_272 = Str__literal(L"), ");
+ TL_IS_273 = Str__literal(L", ");
+ TL_IS_274 = Str__literal(L" (");
+ TL_IS_275 = Str__literal(L" - ");
+ TL_IS_276 = Str__literal(L", ");
+ TL_IS_277 = Str__literal(L"Code In Code Comments Notation");
+ TL_IS_278 = Str__literal(L"Code In Commentary Notation");
+ TL_IS_279 = Str__literal(L"Off");
+ TL_IS_280 = Str__literal(L"TeX Mathematics Displayed Notation");
+ TL_IS_281 = Str__literal(L"Off");
+ TL_IS_282 = Str__literal(L"TeX Mathematics Notation");
+ TL_IS_283 = Str__literal(L"Off");
+ TL_IS_284 = Str__literal(L"Cross-References Notation");
+ TL_IS_285 = Str__literal(L"Off");
+ TL_IS_286 = Str__literal(L"http://");
+ TL_IS_287 = Str__literal(L"https://");
+ TL_IS_288 = Str__literal(L"this is a cue for a missing note");
+ TL_IS_289 = Str__literal(L"Cross-References Notation");
+ TL_IS_290 = Str__literal(L"Off");
+ TL_IS_291 = Str__literal(L"http://");
+ TL_IS_292 = Str__literal(L"https://");
+ TL_IS_293 = Str__literal(L"misplaced definition");
+ TL_IS_294 = Str__literal(L"unknown macro");
+ TL_IS_295 = Str__literal(L"Dialects");
+ TL_IS_296 = Str__literal(L"C");
+ TL_IS_297 = Str__literal(L"Languages");
+ TL_IS_298 = Str__literal(L"InC");
+ TL_IS_299 = Str__literal(L"Name");
+ TL_IS_300 = Str__literal(L"Details");
+ TL_IS_301 = Str__literal(L"Extension");
+ TL_IS_302 = Str__literal(L"Line Comment");
+ TL_IS_303 = Str__literal(L"Whole Line Comment");
+ TL_IS_304 = Str__literal(L"Multiline Comment Open");
+ TL_IS_305 = Str__literal(L"Multiline Comment Close");
+ TL_IS_306 = Str__literal(L"String Literal");
+ TL_IS_307 = Str__literal(L"String Literal Escape");
+ TL_IS_308 = Str__literal(L"Character Literal");
+ TL_IS_309 = Str__literal(L"Character Literal Escape");
+ TL_IS_310 = Str__literal(L"Binary Literal Prefix");
+ TL_IS_311 = Str__literal(L"Octal Literal Prefix");
+ TL_IS_312 = Str__literal(L"Hexadecimal Literal Prefix");
+ TL_IS_313 = Str__literal(L"Negative Literal Prefix");
+ TL_IS_314 = Str__literal(L"Shebang");
+ TL_IS_315 = Str__literal(L"Line Marker");
+ TL_IS_316 = Str__literal(L"Before Named Paragraph Expansion");
+ TL_IS_317 = Str__literal(L"After Named Paragraph Expansion");
+ TL_IS_318 = Str__literal(L"Start Definition");
+ TL_IS_319 = Str__literal(L"Prolong Definition");
+ TL_IS_320 = Str__literal(L"End Definition");
+ TL_IS_321 = Str__literal(L"Start Ifdef");
+ TL_IS_322 = Str__literal(L"Start Ifndef");
+ TL_IS_323 = Str__literal(L"End Ifdef");
+ TL_IS_324 = Str__literal(L"End Ifndef");
+ TL_IS_325 = Str__literal(L"C-Like");
+ TL_IS_326 = Str__literal(L"Suppress Disclaimer");
+ TL_IS_327 = Str__literal(L"Supports Namespaces");
+ TL_IS_328 = Str__literal(L"Function Declaration Notation");
+ TL_IS_329 = Str__literal(L"Type Declaration Notation");
+ TL_IS_330 = Str__literal(L"}");
+ TL_IS_331 = Str__literal(L"unquoted");
+ TL_IS_332 = Str__literal(L"{");
+ TL_IS_333 = Str__literal(L"debug");
+ TL_IS_334 = Str__literal(L"!string");
+ TL_IS_335 = Str__literal(L"!function");
+ TL_IS_336 = Str__literal(L"!definition");
+ TL_IS_337 = Str__literal(L"!reserved");
+ TL_IS_338 = Str__literal(L"!element");
+ TL_IS_339 = Str__literal(L"!identifier");
+ TL_IS_340 = Str__literal(L"!character");
+ TL_IS_341 = Str__literal(L"!constant");
+ TL_IS_342 = Str__literal(L"!plain");
+ TL_IS_343 = Str__literal(L"!extract");
+ TL_IS_344 = Str__literal(L"!comment");
+ TL_IS_345 = Str__literal(L"true");
+ TL_IS_346 = Str__literal(L"false");
+ TL_IS_347 = Str__literal(L"both");
+ TL_IS_348 = Str__literal(L"brackets");
+ TL_IS_349 = Str__literal(L"characters");
+ TL_IS_350 = Str__literal(L"coloured");
+ TL_IS_351 = Str__literal(L"colouring");
+ TL_IS_352 = Str__literal(L"debug");
+ TL_IS_353 = Str__literal(L"false");
+ TL_IS_354 = Str__literal(L"in");
+ TL_IS_355 = Str__literal(L"instances");
+ TL_IS_356 = Str__literal(L"keyword");
+ TL_IS_357 = Str__literal(L"matches");
+ TL_IS_358 = Str__literal(L"matching");
+ TL_IS_359 = Str__literal(L"not");
+ TL_IS_360 = Str__literal(L"of");
+ TL_IS_361 = Str__literal(L"on");
+ TL_IS_362 = Str__literal(L"optionally");
+ TL_IS_363 = Str__literal(L"prefix");
+ TL_IS_364 = Str__literal(L"runs");
+ TL_IS_365 = Str__literal(L"spaced");
+ TL_IS_366 = Str__literal(L"suffix");
+ TL_IS_367 = Str__literal(L"true");
+ TL_IS_368 = Str__literal(L"unquoted");
+ TL_IS_369 = Str__literal(L"Structures");
+ TL_IS_370 = Str__literal(L"Main::");
+ TL_IS_371 = Str__literal(L"Tangled output generated by inweb: do not edit");
+ TL_IS_372 = Str__literal(L"this programming language does not support @d");
+ TL_IS_373 = Str__literal(L"this programming language does not support multiline @d");
TL_IS_374 = Str__literal(L"Preform");
- TL_IS_375 = Str__literal(L"Namespaces");
- TL_IS_376 = Str__literal(L"Being internally called, this function mustn't belong to a :: namespace");
- TL_IS_377 = Str__literal(L"Being externally called, this function must belong to a :: namespace");
- TL_IS_378 = Str__literal(L"Structures");
- TL_IS_379 = Str__literal(L"program ended with conditional compilation open");
- TL_IS_380 = Str__literal(L"conditional compilation too deeply nested");
- TL_IS_381 = Str__literal(L"found #endif without #ifdef or #ifndef");
- TL_IS_382 = Str__literal(L"Preform");
- TL_IS_383 = Str__literal(L"'WR[...]' notation unavailable");
- TL_IS_384 = Str__literal(L"malformed '{ , }' formula");
- TL_IS_385 = Str__literal(L"fail");
- TL_IS_386 = Str__literal(L"fail production");
- TL_IS_387 = Str__literal(L"fail nonterminal");
- TL_IS_388 = Str__literal(L"advance ");
- TL_IS_389 = Str__literal(L"pass ");
- TL_IS_390 = Str__literal(L"lookahead");
- TL_IS_391 = Str__literal(L"-");
+ TL_IS_375 = Str__literal(L"Preform");
+ TL_IS_376 = Str__literal(L"Namespaces");
+ TL_IS_377 = Str__literal(L"Being internally called, this function mustn't belong to a :: namespace");
+ TL_IS_378 = Str__literal(L"Being externally called, this function must belong to a :: namespace");
+ TL_IS_379 = Str__literal(L"Structures");
+ TL_IS_380 = Str__literal(L"program ended with conditional compilation open");
+ TL_IS_381 = Str__literal(L"conditional compilation too deeply nested");
+ TL_IS_382 = Str__literal(L"found #endif without #ifdef or #ifndef");
+ TL_IS_383 = Str__literal(L"Preform");
+ TL_IS_384 = Str__literal(L"'WR[...]' notation unavailable");
+ TL_IS_385 = Str__literal(L"malformed '{ , }' formula");
+ TL_IS_386 = Str__literal(L"fail");
+ TL_IS_387 = Str__literal(L"fail production");
+ TL_IS_388 = Str__literal(L"fail nonterminal");
+ TL_IS_389 = Str__literal(L"advance ");
+ TL_IS_390 = Str__literal(L"pass ");
+ TL_IS_391 = Str__literal(L"lookahead");
TL_IS_392 = Str__literal(L"-");
- TL_IS_393 = Str__literal(L"most_recent_result");
- TL_IS_394 = Str__literal(L"most_recent_result_p");
- TL_IS_395 = Str__literal(L"Syntax.preform");
- TL_IS_396 = Str__literal(L"Preform Language");
+ TL_IS_393 = Str__literal(L"-");
+ TL_IS_394 = Str__literal(L"most_recent_result");
+ TL_IS_395 = Str__literal(L"most_recent_result_p");
+ TL_IS_396 = Str__literal(L"Syntax.preform");
TL_IS_397 = Str__literal(L"Preform Language");
- TL_IS_398 = Str__literal(L"weave tree");
- TL_IS_399 = Str__literal(L"document");
- TL_IS_400 = Str__literal(L"head");
- TL_IS_401 = Str__literal(L"body");
- TL_IS_402 = Str__literal(L"tail");
- TL_IS_403 = Str__literal(L"chapter footer");
- TL_IS_404 = Str__literal(L"chapter header");
- TL_IS_405 = Str__literal(L"section footer");
- TL_IS_406 = Str__literal(L"section header");
- TL_IS_407 = Str__literal(L"section purpose");
- TL_IS_408 = Str__literal(L"subheading");
- TL_IS_409 = Str__literal(L"bar");
- TL_IS_410 = Str__literal(L"pagebreak");
- TL_IS_411 = Str__literal(L"linebreak");
- TL_IS_412 = Str__literal(L"paragraph");
- TL_IS_413 = Str__literal(L"endnote");
- TL_IS_414 = Str__literal(L"figure");
- TL_IS_415 = Str__literal(L"audio");
- TL_IS_416 = Str__literal(L"video");
- TL_IS_417 = Str__literal(L"download");
- TL_IS_418 = Str__literal(L"material");
- TL_IS_419 = Str__literal(L"embed");
- TL_IS_420 = Str__literal(L"pmac");
- TL_IS_421 = Str__literal(L"vskip");
- TL_IS_422 = Str__literal(L"chapter");
- TL_IS_423 = Str__literal(L"section");
- TL_IS_424 = Str__literal(L"code line");
- TL_IS_425 = Str__literal(L"function usage");
- TL_IS_426 = Str__literal(L"commentary");
- TL_IS_427 = Str__literal(L"carousel slide");
- TL_IS_428 = Str__literal(L"toc");
- TL_IS_429 = Str__literal(L"toc line");
- TL_IS_430 = Str__literal(L"chapter_title_page");
- TL_IS_431 = Str__literal(L"defn");
- TL_IS_432 = Str__literal(L"source_code");
- TL_IS_433 = Str__literal(L"url");
- TL_IS_434 = Str__literal(L"footnote_cue");
- TL_IS_435 = Str__literal(L"footnote");
- TL_IS_436 = Str__literal(L"display line");
- TL_IS_437 = Str__literal(L"function defn");
- TL_IS_438 = Str__literal(L"item");
- TL_IS_439 = Str__literal(L"grammar index");
- TL_IS_440 = Str__literal(L"inline");
- TL_IS_441 = Str__literal(L"locale");
- TL_IS_442 = Str__literal(L"mathematics");
- TL_IS_443 = Str__literal(L"verbatim");
- TL_IS_444 = Str__literal(L"Weave Content");
- TL_IS_445 = Str__literal(L"plain");
- TL_IS_446 = Str__literal(L".txt");
- TL_IS_447 = Str__literal(L"TeX");
- TL_IS_448 = Str__literal(L".tex");
- TL_IS_449 = Str__literal(L"S");
- TL_IS_450 = Str__literal(L"");
- TL_IS_451 = Str__literal(L"Figures");
- TL_IS_452 = Str__literal(L"weavesection");
- TL_IS_453 = Str__literal(L"weavesections");
- TL_IS_454 = Str__literal(L"weavesectionss");
- TL_IS_455 = Str__literal(L"weavesectionsss");
- TL_IS_456 = Str__literal(L"tweavesection");
- TL_IS_457 = Str__literal(L"tweavesections");
- TL_IS_458 = Str__literal(L"tweavesectionss");
- TL_IS_459 = Str__literal(L"tweavesectionsss");
- TL_IS_460 = Str__literal(L"nsweavesection");
- TL_IS_461 = Str__literal(L"nsweavesections");
- TL_IS_462 = Str__literal(L"HTML");
- TL_IS_463 = Str__literal(L".html");
- TL_IS_464 = Str__literal(L"ePub");
+ TL_IS_398 = Str__literal(L"Preform Language");
+ TL_IS_399 = Str__literal(L"weave tree");
+ TL_IS_400 = Str__literal(L"document");
+ TL_IS_401 = Str__literal(L"head");
+ TL_IS_402 = Str__literal(L"body");
+ TL_IS_403 = Str__literal(L"tail");
+ TL_IS_404 = Str__literal(L"chapter footer");
+ TL_IS_405 = Str__literal(L"chapter header");
+ TL_IS_406 = Str__literal(L"section footer");
+ TL_IS_407 = Str__literal(L"section header");
+ TL_IS_408 = Str__literal(L"section purpose");
+ TL_IS_409 = Str__literal(L"subheading");
+ TL_IS_410 = Str__literal(L"bar");
+ TL_IS_411 = Str__literal(L"pagebreak");
+ TL_IS_412 = Str__literal(L"linebreak");
+ TL_IS_413 = Str__literal(L"paragraph");
+ TL_IS_414 = Str__literal(L"endnote");
+ TL_IS_415 = Str__literal(L"figure");
+ TL_IS_416 = Str__literal(L"extract");
+ TL_IS_417 = Str__literal(L"audio");
+ TL_IS_418 = Str__literal(L"video");
+ TL_IS_419 = Str__literal(L"download");
+ TL_IS_420 = Str__literal(L"material");
+ TL_IS_421 = Str__literal(L"embed");
+ TL_IS_422 = Str__literal(L"pmac");
+ TL_IS_423 = Str__literal(L"vskip");
+ TL_IS_424 = Str__literal(L"chapter");
+ TL_IS_425 = Str__literal(L"section");
+ TL_IS_426 = Str__literal(L"code line");
+ TL_IS_427 = Str__literal(L"function usage");
+ TL_IS_428 = Str__literal(L"commentary");
+ TL_IS_429 = Str__literal(L"carousel slide");
+ TL_IS_430 = Str__literal(L"toc");
+ TL_IS_431 = Str__literal(L"toc line");
+ TL_IS_432 = Str__literal(L"chapter_title_page");
+ TL_IS_433 = Str__literal(L"defn");
+ TL_IS_434 = Str__literal(L"source_code");
+ TL_IS_435 = Str__literal(L"url");
+ TL_IS_436 = Str__literal(L"footnote_cue");
+ TL_IS_437 = Str__literal(L"footnote");
+ TL_IS_438 = Str__literal(L"display line");
+ TL_IS_439 = Str__literal(L"function defn");
+ TL_IS_440 = Str__literal(L"item");
+ TL_IS_441 = Str__literal(L"grammar index");
+ TL_IS_442 = Str__literal(L"inline");
+ TL_IS_443 = Str__literal(L"locale");
+ TL_IS_444 = Str__literal(L"mathematics");
+ TL_IS_445 = Str__literal(L"verbatim");
+ TL_IS_446 = Str__literal(L"Weave Content");
+ TL_IS_447 = Str__literal(L"plain");
+ TL_IS_448 = Str__literal(L".txt");
+ TL_IS_449 = Str__literal(L"TeX");
+ TL_IS_450 = Str__literal(L".tex");
+ TL_IS_451 = Str__literal(L"S");
+ TL_IS_452 = Str__literal(L"");
+ TL_IS_453 = Str__literal(L"Figures");
+ TL_IS_454 = Str__literal(L"weavesection");
+ TL_IS_455 = Str__literal(L"weavesections");
+ TL_IS_456 = Str__literal(L"weavesectionss");
+ TL_IS_457 = Str__literal(L"weavesectionsss");
+ TL_IS_458 = Str__literal(L"tweavesection");
+ TL_IS_459 = Str__literal(L"tweavesections");
+ TL_IS_460 = Str__literal(L"tweavesectionss");
+ TL_IS_461 = Str__literal(L"tweavesectionsss");
+ TL_IS_462 = Str__literal(L"nsweavesection");
+ TL_IS_463 = Str__literal(L"nsweavesections");
+ TL_IS_464 = Str__literal(L"HTML");
TL_IS_465 = Str__literal(L".html");
- TL_IS_466 = Str__literal(L"");
- TL_IS_467 = Str__literal(L"private copy");
- TL_IS_468 = Str__literal(L"Base");
- TL_IS_469 = Str__literal(L"Colours");
- TL_IS_470 = Str__literal(L"");
- TL_IS_471 = Str__literal(L"");
- TL_IS_472 = Str__literal(L"Breadcrumbs");
- TL_IS_473 = Str__literal(L"Title");
- TL_IS_474 = Str__literal(L"Short Title");
- TL_IS_475 = Str__literal(L"Short Title");
- TL_IS_476 = Str__literal(L"index.html");
- TL_IS_477 = Str__literal(L"S");
- TL_IS_478 = Str__literal(L"Sequential Section Ranges");
- TL_IS_479 = Str__literal(L"On");
- TL_IS_480 = Str__literal(L"Figures");
- TL_IS_481 = Str__literal(L"Audio");
- TL_IS_482 = Str__literal(L"Video");
- TL_IS_483 = Str__literal(L"Downloads");
- TL_IS_484 = Str__literal(L"Embedding");
- TL_IS_485 = Str__literal(L"Download.html");
- TL_IS_486 = Str__literal(L"Downloads are not supported");
+ TL_IS_466 = Str__literal(L"ePub");
+ TL_IS_467 = Str__literal(L".html");
+ TL_IS_468 = Str__literal(L"");
+ TL_IS_469 = Str__literal(L"private copy");
+ TL_IS_470 = Str__literal(L"Base");
+ TL_IS_471 = Str__literal(L"Colours");
+ TL_IS_472 = Str__literal(L"");
+ TL_IS_473 = Str__literal(L"");
+ TL_IS_474 = Str__literal(L"Breadcrumbs");
+ TL_IS_475 = Str__literal(L"Title");
+ TL_IS_476 = Str__literal(L"Short Title");
+ TL_IS_477 = Str__literal(L"Short Title");
+ TL_IS_478 = Str__literal(L"index.html");
+ TL_IS_479 = Str__literal(L"S");
+ TL_IS_480 = Str__literal(L"Sequential Section Ranges");
+ TL_IS_481 = Str__literal(L"On");
+ TL_IS_482 = Str__literal(L"Figures");
+ TL_IS_483 = Str__literal(L"HTML");
+ TL_IS_484 = Str__literal(L"Unable to find this HTML extract");
+ TL_IS_485 = Str__literal(L"Audio");
+ TL_IS_486 = Str__literal(L"Video");
TL_IS_487 = Str__literal(L"Downloads");
- TL_IS_488 = Str__literal(L"Download file missing or empty");
- TL_IS_489 = Str__literal(L"File Name");
- TL_IS_490 = Str__literal(L"File URL");
- TL_IS_491 = Str__literal(L"File Details");
- TL_IS_492 = Str__literal(L" byte");
- TL_IS_493 = Str__literal(L" bytes");
- TL_IS_494 = Str__literal(L"kB");
- TL_IS_495 = Str__literal(L"MB");
- TL_IS_496 = Str__literal(L"GB");
- TL_IS_497 = Str__literal(L"405");
- TL_IS_498 = Str__literal(L"720");
- TL_IS_499 = Str__literal(L"Embedding");
- TL_IS_500 = Str__literal(L"This is not a supported service");
- TL_IS_501 = Str__literal(L"Content ID");
- TL_IS_502 = Str__literal(L"Content Width");
- TL_IS_503 = Str__literal(L"Content Height");
- TL_IS_504 = Str__literal(L"named-paragraph-link");
- TL_IS_505 = Str__literal(L"function-link");
- TL_IS_506 = Str__literal(L"Carousel");
- TL_IS_507 = Str__literal(L"carousel-number");
- TL_IS_508 = Str__literal(L"carousel-caption");
- TL_IS_509 = Str__literal(L"carousel-caption-above");
- TL_IS_510 = Str__literal(L"carousel-number-above");
- TL_IS_511 = Str__literal(L"carousel-caption-below");
- TL_IS_512 = Str__literal(L"carousel-number-below");
- TL_IS_513 = Str__literal(L"external");
- TL_IS_514 = Str__literal(L"internal");
- TL_IS_515 = Str__literal(L"Popups");
- TL_IS_516 = Str__literal(L"*");
- TL_IS_517 = Str__literal(L"paragraph-anchor");
- TL_IS_518 = Str__literal(L"Title");
- TL_IS_519 = Str__literal(L"Base");
- TL_IS_520 = Str__literal(L"Base.css");
- TL_IS_521 = Str__literal(L"TestingInweb");
- TL_IS_522 = Str__literal(L".txt");
- TL_IS_523 = Str__literal(L".pdf");
- TL_IS_524 = Str__literal(L"not");
- TL_IS_525 = Str__literal(L"leq");
- TL_IS_526 = Str__literal(L"geq");
- TL_IS_527 = Str__literal(L"sim");
- TL_IS_528 = Str__literal(L"hbox");
- TL_IS_529 = Str__literal(L"left");
- TL_IS_530 = Str__literal(L"right");
- TL_IS_531 = Str__literal(L"Rightarrow");
- TL_IS_532 = Str__literal(L"Leftrightarrow");
- TL_IS_533 = Str__literal(L"to");
- TL_IS_534 = Str__literal(L"rightarrow");
- TL_IS_535 = Str__literal(L"longrightarrow");
- TL_IS_536 = Str__literal(L"leftarrow");
- TL_IS_537 = Str__literal(L"longleftarrow");
- TL_IS_538 = Str__literal(L"lbrace");
- TL_IS_539 = Str__literal(L"mid");
- TL_IS_540 = Str__literal(L"rbrace");
- TL_IS_541 = Str__literal(L"cdot");
- TL_IS_542 = Str__literal(L"cdots");
- TL_IS_543 = Str__literal(L"dots");
- TL_IS_544 = Str__literal(L"times");
- TL_IS_545 = Str__literal(L"quad");
- TL_IS_546 = Str__literal(L"qquad");
- TL_IS_547 = Str__literal(L"TeX");
- TL_IS_548 = Str__literal(L"neq");
- TL_IS_549 = Str__literal(L"noteq");
- TL_IS_550 = Str__literal(L"ell");
- TL_IS_551 = Str__literal(L"log");
- TL_IS_552 = Str__literal(L"exp");
- TL_IS_553 = Str__literal(L"sin");
- TL_IS_554 = Str__literal(L"cos");
- TL_IS_555 = Str__literal(L"tan");
- TL_IS_556 = Str__literal(L"top");
- TL_IS_557 = Str__literal(L"Alpha");
- TL_IS_558 = Str__literal(L"Beta");
- TL_IS_559 = Str__literal(L"Gamma");
- TL_IS_560 = Str__literal(L"Delta");
- TL_IS_561 = Str__literal(L"Epsilon");
- TL_IS_562 = Str__literal(L"Zeta");
- TL_IS_563 = Str__literal(L"Eta");
- TL_IS_564 = Str__literal(L"Theta");
- TL_IS_565 = Str__literal(L"Iota");
- TL_IS_566 = Str__literal(L"Kappa");
- TL_IS_567 = Str__literal(L"Lambda");
- TL_IS_568 = Str__literal(L"Mu");
- TL_IS_569 = Str__literal(L"Nu");
- TL_IS_570 = Str__literal(L"Xi");
- TL_IS_571 = Str__literal(L"Omicron");
- TL_IS_572 = Str__literal(L"Pi");
- TL_IS_573 = Str__literal(L"Rho");
- TL_IS_574 = Str__literal(L"Varsigma");
- TL_IS_575 = Str__literal(L"Sigma");
- TL_IS_576 = Str__literal(L"Tau");
- TL_IS_577 = Str__literal(L"Upsilon");
- TL_IS_578 = Str__literal(L"Phi");
- TL_IS_579 = Str__literal(L"Chi");
- TL_IS_580 = Str__literal(L"Psi");
- TL_IS_581 = Str__literal(L"Omega");
- TL_IS_582 = Str__literal(L"alpha");
- TL_IS_583 = Str__literal(L"beta");
- TL_IS_584 = Str__literal(L"gamma");
- TL_IS_585 = Str__literal(L"delta");
- TL_IS_586 = Str__literal(L"epsilon");
- TL_IS_587 = Str__literal(L"zeta");
- TL_IS_588 = Str__literal(L"eta");
- TL_IS_589 = Str__literal(L"theta");
- TL_IS_590 = Str__literal(L"iota");
- TL_IS_591 = Str__literal(L"kappa");
- TL_IS_592 = Str__literal(L"lambda");
- TL_IS_593 = Str__literal(L"mu");
- TL_IS_594 = Str__literal(L"nu");
- TL_IS_595 = Str__literal(L"xi");
- TL_IS_596 = Str__literal(L"omicron");
- TL_IS_597 = Str__literal(L"pi");
- TL_IS_598 = Str__literal(L"rho");
- TL_IS_599 = Str__literal(L"varsigma");
- TL_IS_600 = Str__literal(L"sigma");
- TL_IS_601 = Str__literal(L"tau");
- TL_IS_602 = Str__literal(L"upsilon");
- TL_IS_603 = Str__literal(L"phi");
- TL_IS_604 = Str__literal(L"chi");
- TL_IS_605 = Str__literal(L"psi");
- TL_IS_606 = Str__literal(L"omega");
- TL_IS_607 = Str__literal(L"exists");
- TL_IS_608 = Str__literal(L"in");
- TL_IS_609 = Str__literal(L"forall");
- TL_IS_610 = Str__literal(L"cap");
- TL_IS_611 = Str__literal(L"emptyset");
- TL_IS_612 = Str__literal(L"subseteq");
- TL_IS_613 = Str__literal(L"land");
- TL_IS_614 = Str__literal(L"lor");
- TL_IS_615 = Str__literal(L"lnot");
- TL_IS_616 = Str__literal(L"sum");
- TL_IS_617 = Str__literal(L"prod");
- TL_IS_618 = Str__literal(L"n");
- TL_IS_619 = Str__literal(L"t");
- TL_IS_620 = Str__literal(L"exists");
- TL_IS_621 = Str__literal(L"forall");
- TL_IS_622 = Str__literal(L" ");
- TL_IS_623 = Str__literal(L"all");
- TL_IS_624 = Str__literal(L"platform-settings.mk");
- TL_IS_625 = Str__literal(L"intest");
- TL_IS_626 = Str__literal(L"all");
- TL_IS_627 = Str__literal(L"gitignorescript.txt");
- TL_IS_628 = Str__literal(L"tags");
- TL_IS_629 = Str__literal(L"version");
- TL_IS_630 = Str__literal(L"purpose");
- TL_IS_631 = Str__literal(L"var");
- TL_IS_632 = Str__literal(L"\n");
+ TL_IS_488 = Str__literal(L"Embedding");
+ TL_IS_489 = Str__literal(L"Download.html");
+ TL_IS_490 = Str__literal(L"Downloads are not supported");
+ TL_IS_491 = Str__literal(L"Downloads");
+ TL_IS_492 = Str__literal(L"Download file missing or empty");
+ TL_IS_493 = Str__literal(L"File Name");
+ TL_IS_494 = Str__literal(L"File URL");
+ TL_IS_495 = Str__literal(L"File Details");
+ TL_IS_496 = Str__literal(L" byte");
+ TL_IS_497 = Str__literal(L" bytes");
+ TL_IS_498 = Str__literal(L"kB");
+ TL_IS_499 = Str__literal(L"MB");
+ TL_IS_500 = Str__literal(L"GB");
+ TL_IS_501 = Str__literal(L"405");
+ TL_IS_502 = Str__literal(L"720");
+ TL_IS_503 = Str__literal(L"Embedding");
+ TL_IS_504 = Str__literal(L"This is not a supported service");
+ TL_IS_505 = Str__literal(L"Content ID");
+ TL_IS_506 = Str__literal(L"Content Width");
+ TL_IS_507 = Str__literal(L"Content Height");
+ TL_IS_508 = Str__literal(L"named-paragraph-link");
+ TL_IS_509 = Str__literal(L"function-link");
+ TL_IS_510 = Str__literal(L"Carousel");
+ TL_IS_511 = Str__literal(L"carousel-number");
+ TL_IS_512 = Str__literal(L"carousel-caption");
+ TL_IS_513 = Str__literal(L"carousel-caption-above");
+ TL_IS_514 = Str__literal(L"carousel-number-above");
+ TL_IS_515 = Str__literal(L"carousel-caption-below");
+ TL_IS_516 = Str__literal(L"carousel-number-below");
+ TL_IS_517 = Str__literal(L"external");
+ TL_IS_518 = Str__literal(L"internal");
+ TL_IS_519 = Str__literal(L"Popups");
+ TL_IS_520 = Str__literal(L"*");
+ TL_IS_521 = Str__literal(L"paragraph-anchor");
+ TL_IS_522 = Str__literal(L"Title");
+ TL_IS_523 = Str__literal(L"Base");
+ TL_IS_524 = Str__literal(L"Base.css");
+ TL_IS_525 = Str__literal(L"TestingInweb");
+ TL_IS_526 = Str__literal(L".txt");
+ TL_IS_527 = Str__literal(L".pdf");
+ TL_IS_528 = Str__literal(L"not");
+ TL_IS_529 = Str__literal(L"leq");
+ TL_IS_530 = Str__literal(L"geq");
+ TL_IS_531 = Str__literal(L"sim");
+ TL_IS_532 = Str__literal(L"hbox");
+ TL_IS_533 = Str__literal(L"left");
+ TL_IS_534 = Str__literal(L"right");
+ TL_IS_535 = Str__literal(L"Rightarrow");
+ TL_IS_536 = Str__literal(L"Leftrightarrow");
+ TL_IS_537 = Str__literal(L"to");
+ TL_IS_538 = Str__literal(L"rightarrow");
+ TL_IS_539 = Str__literal(L"longrightarrow");
+ TL_IS_540 = Str__literal(L"leftarrow");
+ TL_IS_541 = Str__literal(L"longleftarrow");
+ TL_IS_542 = Str__literal(L"lbrace");
+ TL_IS_543 = Str__literal(L"mid");
+ TL_IS_544 = Str__literal(L"rbrace");
+ TL_IS_545 = Str__literal(L"cdot");
+ TL_IS_546 = Str__literal(L"cdots");
+ TL_IS_547 = Str__literal(L"dots");
+ TL_IS_548 = Str__literal(L"times");
+ TL_IS_549 = Str__literal(L"quad");
+ TL_IS_550 = Str__literal(L"qquad");
+ TL_IS_551 = Str__literal(L"TeX");
+ TL_IS_552 = Str__literal(L"neq");
+ TL_IS_553 = Str__literal(L"noteq");
+ TL_IS_554 = Str__literal(L"ell");
+ TL_IS_555 = Str__literal(L"log");
+ TL_IS_556 = Str__literal(L"exp");
+ TL_IS_557 = Str__literal(L"sin");
+ TL_IS_558 = Str__literal(L"cos");
+ TL_IS_559 = Str__literal(L"tan");
+ TL_IS_560 = Str__literal(L"top");
+ TL_IS_561 = Str__literal(L"Alpha");
+ TL_IS_562 = Str__literal(L"Beta");
+ TL_IS_563 = Str__literal(L"Gamma");
+ TL_IS_564 = Str__literal(L"Delta");
+ TL_IS_565 = Str__literal(L"Epsilon");
+ TL_IS_566 = Str__literal(L"Zeta");
+ TL_IS_567 = Str__literal(L"Eta");
+ TL_IS_568 = Str__literal(L"Theta");
+ TL_IS_569 = Str__literal(L"Iota");
+ TL_IS_570 = Str__literal(L"Kappa");
+ TL_IS_571 = Str__literal(L"Lambda");
+ TL_IS_572 = Str__literal(L"Mu");
+ TL_IS_573 = Str__literal(L"Nu");
+ TL_IS_574 = Str__literal(L"Xi");
+ TL_IS_575 = Str__literal(L"Omicron");
+ TL_IS_576 = Str__literal(L"Pi");
+ TL_IS_577 = Str__literal(L"Rho");
+ TL_IS_578 = Str__literal(L"Varsigma");
+ TL_IS_579 = Str__literal(L"Sigma");
+ TL_IS_580 = Str__literal(L"Tau");
+ TL_IS_581 = Str__literal(L"Upsilon");
+ TL_IS_582 = Str__literal(L"Phi");
+ TL_IS_583 = Str__literal(L"Chi");
+ TL_IS_584 = Str__literal(L"Psi");
+ TL_IS_585 = Str__literal(L"Omega");
+ TL_IS_586 = Str__literal(L"alpha");
+ TL_IS_587 = Str__literal(L"beta");
+ TL_IS_588 = Str__literal(L"gamma");
+ TL_IS_589 = Str__literal(L"delta");
+ TL_IS_590 = Str__literal(L"epsilon");
+ TL_IS_591 = Str__literal(L"zeta");
+ TL_IS_592 = Str__literal(L"eta");
+ TL_IS_593 = Str__literal(L"theta");
+ TL_IS_594 = Str__literal(L"iota");
+ TL_IS_595 = Str__literal(L"kappa");
+ TL_IS_596 = Str__literal(L"lambda");
+ TL_IS_597 = Str__literal(L"mu");
+ TL_IS_598 = Str__literal(L"nu");
+ TL_IS_599 = Str__literal(L"xi");
+ TL_IS_600 = Str__literal(L"omicron");
+ TL_IS_601 = Str__literal(L"pi");
+ TL_IS_602 = Str__literal(L"rho");
+ TL_IS_603 = Str__literal(L"varsigma");
+ TL_IS_604 = Str__literal(L"sigma");
+ TL_IS_605 = Str__literal(L"tau");
+ TL_IS_606 = Str__literal(L"upsilon");
+ TL_IS_607 = Str__literal(L"phi");
+ TL_IS_608 = Str__literal(L"chi");
+ TL_IS_609 = Str__literal(L"psi");
+ TL_IS_610 = Str__literal(L"omega");
+ TL_IS_611 = Str__literal(L"exists");
+ TL_IS_612 = Str__literal(L"in");
+ TL_IS_613 = Str__literal(L"forall");
+ TL_IS_614 = Str__literal(L"cap");
+ TL_IS_615 = Str__literal(L"emptyset");
+ TL_IS_616 = Str__literal(L"subseteq");
+ TL_IS_617 = Str__literal(L"land");
+ TL_IS_618 = Str__literal(L"lor");
+ TL_IS_619 = Str__literal(L"lnot");
+ TL_IS_620 = Str__literal(L"sum");
+ TL_IS_621 = Str__literal(L"prod");
+ TL_IS_622 = Str__literal(L"n");
+ TL_IS_623 = Str__literal(L"t");
+ TL_IS_624 = Str__literal(L"exists");
+ TL_IS_625 = Str__literal(L"forall");
+ TL_IS_626 = Str__literal(L" ");
+ TL_IS_627 = Str__literal(L"all");
+ TL_IS_628 = Str__literal(L"platform-settings.mk");
+ TL_IS_629 = Str__literal(L"intest");
+ TL_IS_630 = Str__literal(L"all");
+ TL_IS_631 = Str__literal(L"gitignorescript.txt");
+ TL_IS_632 = Str__literal(L"tags");
TL_IS_633 = Str__literal(L"version");
TL_IS_634 = Str__literal(L"purpose");
TL_IS_635 = Str__literal(L"var");
- TL_IS_636 = Str__literal(L"Version Number");
- TL_IS_637 = Str__literal(L"Purpose");
- TL_IS_638 = Str__literal(L"Build Date");
- TL_IS_639 = Str__literal(L"Version Number");
- TL_IS_640 = Str__literal(L"inform6");
- TL_IS_641 = Str__literal(L"header.h");
- TL_IS_642 = Str__literal(L"(manifest).txt");
- TL_IS_643 = Str__literal(L"README.txt");
- TL_IS_644 = Str__literal(L"README.md");
- TL_IS_645 = Str__literal(L"docs");
- TL_IS_646 = Str__literal(L"web");
- TL_IS_647 = Str__literal(L"module");
- TL_IS_648 = Str__literal(L".inweb");
- TL_IS_649 = Str__literal(L".inweb");
- TL_IS_650 = Str__literal(L"docs");
- TL_IS_651 = Str__literal(L"Multiple cross-references might be meant here");
- TL_IS_652 = Str__literal(L"(main)");
+ TL_IS_636 = Str__literal(L"\n");
+ TL_IS_637 = Str__literal(L"version");
+ TL_IS_638 = Str__literal(L"purpose");
+ TL_IS_639 = Str__literal(L"var");
+ TL_IS_640 = Str__literal(L"Version Number");
+ TL_IS_641 = Str__literal(L"Purpose");
+ TL_IS_642 = Str__literal(L"Build Date");
+ TL_IS_643 = Str__literal(L"Version Number");
+ TL_IS_644 = Str__literal(L"inform6");
+ TL_IS_645 = Str__literal(L"header.h");
+ TL_IS_646 = Str__literal(L"(manifest).txt");
+ TL_IS_647 = Str__literal(L"README.txt");
+ TL_IS_648 = Str__literal(L"README.md");
+ TL_IS_649 = Str__literal(L"docs");
+ TL_IS_650 = Str__literal(L"web");
+ TL_IS_651 = Str__literal(L"module");
+ TL_IS_652 = Str__literal(L".inweb");
+ TL_IS_653 = Str__literal(L".inweb");
+ TL_IS_654 = Str__literal(L"docs");
+ TL_IS_655 = Str__literal(L"Multiple cross-references might be meant here");
+ TL_IS_656 = Str__literal(L"(main)");
}
diff --git a/build.txt b/build.txt
index 8e567d4..9e0e7e3 100644
--- a/build.txt
+++ b/build.txt
@@ -1,3 +1,3 @@
Prerelease: alpha.1
-Build Date: 23 March 2022
-Build Number: 1A81
+Build Date: 4 April 2022
+Build Number: 1A83
diff --git a/docs/docs-assets/Navigation.css b/docs/docs-assets/Navigation.css
index ad0a5f2..31a7677 100644
--- a/docs/docs-assets/Navigation.css
+++ b/docs/docs-assets/Navigation.css
@@ -1,5 +1,4 @@
nav[role="navigation"] {
- width: 180px;
position: fixed;
overflow: scroll;
left: 0;
diff --git a/docs/foundation-module/2-mmr.html b/docs/foundation-module/2-mmr.html
index 0a85d46..ddcf6b7 100644
--- a/docs/foundation-module/2-mmr.html
+++ b/docs/foundation-module/2-mmr.html
@@ -188,16 +188,12 @@ the debugging log.
allocated by each individual call.
-
-define MAX_BLOCKS_ALLOWED 15000
-define MEMORY_GRANULARITY 100 *1024*8
+define MEMORY_GRANULARITY 100 *1024*8
int no_blocks_allocated = 0 ;
@@ -255,15 +251,10 @@ pointer types as far as the C compiler is concerned.
- int i ;
- if ( no_blocks_allocated ++ >= MAX_BLOCKS_ALLOWED )
- Errors::fatal (
- "the memory manager has halted inweb, which seems to be generating "
- "endless structures. Presumably it is trapped in a loop" );
Memory::check_memory_integrity ();
cp = ( unsigned char *) ( Memory::paranoid_calloc ( MEMORY_GRANULARITY , 1 ));
if ( cp == NULL ) Errors::fatal ( "Run out of memory: malloc failed" );
- for ( i =0; i < MEMORY_GRANULARITY ; i ++) cp [ i ] = 0 ;
+ for ( int i =0; i < MEMORY_GRANULARITY ; i ++) cp [ i ] = 0 ;
This code is used in §11 .
-pathname * Assets::include_asset ( OUTPUT_STREAM , asset_rule * R , web * W , filename * F ,
+pathname * Assets::include_asset ( OUTPUT_STREAM , asset_rule * R , web * W , filename * F ,
text_stream * trans , weave_pattern * pattern , filename * from ) {
if ( R == NULL ) R = Assets::applicable_rule ( pattern , F );
TEMPORARY_TEXT ( url )
diff --git a/docs/inweb/1-bsc.html b/docs/inweb/1-bsc.html
index efce88f..2ed884c 100644
--- a/docs/inweb/1-bsc.html
+++ b/docs/inweb/1-bsc.html
@@ -107,6 +107,7 @@ see A Brief Guide t
enum weave_endnote_node_CLASS
enum weave_material_node_CLASS
enum weave_figure_node_CLASS
+enum weave_extract_node_CLASS
enum weave_audio_node_CLASS
enum weave_download_node_CLASS
enum weave_video_node_CLASS
@@ -196,6 +197,7 @@ see A Brief Guide t
DECLARE_CLASS ( weave_endnote_node )
DECLARE_CLASS ( weave_material_node )
DECLARE_CLASS ( weave_figure_node )
+DECLARE_CLASS ( weave_extract_node )
DECLARE_CLASS ( weave_audio_node )
DECLARE_CLASS ( weave_video_node )
DECLARE_CLASS ( weave_download_node )
diff --git a/docs/inweb/1-pc.html b/docs/inweb/1-pc.html
index a8b4c05..b8e7950 100644
--- a/docs/inweb/1-pc.html
+++ b/docs/inweb/1-pc.html
@@ -385,7 +385,7 @@ source:
-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 4f134eb..954f512 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 7f376aa..40a8fbb 100644
--- a/docs/inweb/1-ts.html
+++ b/docs/inweb/1-ts.html
@@ -260,7 +260,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 ))
@@ -269,7 +269,7 @@ and details of any cover-sheet to use.
ADD_TO_LINKED_LIST ( wp , weave_plugin , wv -> plugins );
}
-colour_scheme * Swarm::ensure_colour_scheme ( weave_order * wv , text_stream * name ,
+colour_scheme * Swarm::ensure_colour_scheme ( weave_order * wv , text_stream * name ,
text_stream * pre ) {
colour_scheme * existing ;
LOOP_OVER_LINKED_LIST ( existing , colour_scheme , wv -> colour_schemes )
diff --git a/docs/inweb/2-lc.html b/docs/inweb/2-lc.html
index f4a4b01..c34bf4c 100644
--- a/docs/inweb/2-lc.html
+++ b/docs/inweb/2-lc.html
@@ -219,6 +219,7 @@ some of these fell into disuse in version 2 syntax.
enum CAROUSEL_END_CMD
enum EMBED_CMD
enum TAG_CMD
+enum HTML_CMD
diff --git a/docs/inweb/2-tp.html b/docs/inweb/2-tp.html
index ad2c205..10e524c 100644
--- a/docs/inweb/2-tp.html
+++ b/docs/inweb/2-tp.html
@@ -515,6 +515,14 @@ 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 "%(html (%c+)%)" ))) {
+ Tags::add_by_name ( L -> owning_paragraph , I "HTML" );
+ L -> command_code = HTML_CMD ;
+ L -> category = COMMAND_LCAT ;
+ 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 "%(audio (%c+)%)" ))) {
Tags::add_by_name ( L -> owning_paragraph , I "Audio" );
L -> command_code = AUDIO_CMD ;
@@ -1188,7 +1196,7 @@ This is the syntax used.
define POINTS_PER_CM 72
-text_stream * Parser::dimensions ( text_stream * item , int * w , int * h , source_line * L ) {
+text_stream * Parser::dimensions ( text_stream * item , int * w , int * h , source_line * L ) {
int sv = L -> owning_section -> md -> using_syntax ;
* w = -1; * h = -1;
text_stream * use = item ;
diff --git a/docs/inweb/3-tc.html b/docs/inweb/3-tc.html
index 51bee8c..9b4075d 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 );
}
diff --git a/docs/inweb/3-tw.html b/docs/inweb/3-tw.html
index 9587e16..13b4cf1 100644
--- a/docs/inweb/3-tw.html
+++ b/docs/inweb/3-tw.html
@@ -382,15 +382,16 @@ at us; but we don't weave them into the output, that's for sure.
if ( L -> command_code == GRAMMAR_INDEX_CMD )
Trees::make_child ( WeaveTree::grammar_index ( tree ), state -> ap );
if ( L -> command_code == FIGURE_CMD ) Weave a figure 2.7.2.4.1 ;
- if ( L -> command_code == AUDIO_CMD ) Weave an audio clip 2.7.2.4.2 ;
- if ( L -> command_code == VIDEO_CMD ) Weave a video clip 2.7.2.4.3 ;
- if ( L -> command_code == DOWNLOAD_CMD ) Weave a download 2.7.2.4.4 ;
- if ( L -> command_code == EMBED_CMD ) Weave an embed 2.7.2.4.5 ;
- if ( L -> command_code == CAROUSEL_CMD ) Weave a carousel 2.7.2.4.6 ;
- if ( L -> command_code == CAROUSEL_ABOVE_CMD ) Weave a carousel 2.7.2.4.6 ;
- if ( L -> command_code == CAROUSEL_BELOW_CMD ) Weave a carousel 2.7.2.4.6 ;
- if ( L -> command_code == CAROUSEL_UNCAPTIONED_CMD ) Weave a carousel 2.7.2.4.6 ;
- if ( L -> command_code == CAROUSEL_END_CMD ) Weave a carousel end 2.7.2.4.7 ;
+ if ( L -> command_code == HTML_CMD ) Weave a raw HTML extract 2.7.2.4.2 ;
+ if ( L -> command_code == AUDIO_CMD ) Weave an audio clip 2.7.2.4.3 ;
+ if ( L -> command_code == VIDEO_CMD ) Weave a video clip 2.7.2.4.4 ;
+ if ( L -> command_code == DOWNLOAD_CMD ) Weave a download 2.7.2.4.5 ;
+ if ( L -> command_code == EMBED_CMD ) Weave an embed 2.7.2.4.6 ;
+ if ( L -> command_code == CAROUSEL_CMD ) Weave a carousel 2.7.2.4.7 ;
+ if ( L -> command_code == CAROUSEL_ABOVE_CMD ) Weave a carousel 2.7.2.4.7 ;
+ if ( L -> command_code == CAROUSEL_BELOW_CMD ) Weave a carousel 2.7.2.4.7 ;
+ if ( L -> command_code == CAROUSEL_UNCAPTIONED_CMD ) Weave a carousel 2.7.2.4.7 ;
+ if ( L -> command_code == CAROUSEL_END_CMD ) Weave a carousel end 2.7.2.4.8 ;
continue ;
}
@@ -405,7 +406,15 @@ at us; but we don't weave them into the output, that's for sure.
Trees::make_child ( WeaveTree::figure ( tree , figname , w , h ), state -> ap );
This code is used in §2.7.2.4 .
-
+
+
+ Trees::make_child ( WeaveTree::raw_extract ( tree , L -> text_operand ),
+ state -> ap );
+
+This code is used in §2.7.2.4 .
+
@@ -414,7 +423,7 @@ at us; but we don't weave them into the output, that's for sure.
Trees::make_child ( WeaveTree::audio ( tree , figname , w ), state -> ap );
This code is used in §2.7.2.4 .
-
@@ -423,7 +432,7 @@ 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 );
This code is used in §2.7.2.4 .
-
@@ -431,7 +440,7 @@ at us; but we don't weave them into the output, that's for sure.
state -> ap );
This code is used in §2.7.2.4 .
-
@@ -440,7 +449,7 @@ at us; but we don't weave them into the output, that's for sure.
Trees::make_child ( WeaveTree::embed ( tree , L -> text_operand , ID , w , h ), state -> ap );
This code is used in §2.7.2.4 .
-
@@ -450,7 +459,7 @@ at us; but we don't weave them into the output, that's for sure.
state -> carousel_node = C ;
This code is used in §2.7.2.4 (four times).
-
diff --git a/docs/inweb/4-taf.html b/docs/inweb/4-taf.html
index 39f673c..5e27a25 100644
--- a/docs/inweb/4-taf.html
+++ b/docs/inweb/4-taf.html
@@ -279,7 +279,7 @@ function's definition appears".
-int Functions::used_elsewhere ( language_function * fn ) {
+int Functions::used_elsewhere ( language_function * fn ) {
paragraph * P = fn -> function_header_at -> owning_paragraph ;
hash_table_entry * hte =
Analyser::find_hash_entry_for_section ( fn -> function_header_at -> owning_section ,
diff --git a/docs/inweb/5-hf.html b/docs/inweb/5-hf.html
index 15fe092..35eb18f 100644
--- a/docs/inweb/5-hf.html
+++ b/docs/inweb/5-hf.html
@@ -145,7 +145,7 @@ ePub respectively:
-int HTMLFormat::render_visit ( tree_node * N , void * state , int L ) {
+int HTMLFormat::render_visit ( tree_node * N , void * state , int L ) {
HTML_render_state * hrs = ( HTML_render_state *) state ;
text_stream * OUT = hrs -> OUT ;
if (( N -> type == weave_document_node_type ) ||
@@ -155,11 +155,11 @@ ePub respectively:
( N -> type == weave_pagebreak_node_type ) ||
( N -> type == weave_chapter_node_type ) ||
( N -> type == weave_chapter_title_page_node_type ) ||
- ( N -> type == weave_grammar_index_node_type )) Render nothing 5.38
+ ( N -> type == weave_grammar_index_node_type )) Render nothing 5.39
else if ( N -> type == weave_head_node_type ) Render head 5.1
else if ( N -> type == weave_tail_node_type ) Render tail 5.4
- else if ( N -> type == weave_verbatim_node_type ) Render verbatim 5.33
+ else if ( N -> type == weave_verbatim_node_type ) Render verbatim 5.34
else if ( N -> type == weave_section_header_node_type ) Render header 5.2
else if ( N -> type == weave_section_footer_node_type ) Render footer 5.3
else if ( N -> type == weave_section_purpose_node_type ) Render purpose 5.5
@@ -168,32 +168,33 @@ ePub respectively:
else if ( N -> type == weave_paragraph_heading_node_type ) Render paragraph heading 5.8
else if ( N -> type == weave_endnote_node_type ) Render endnote 5.9
else if ( N -> type == weave_figure_node_type ) Render figure 5.10
- else if ( N -> type == weave_audio_node_type ) Render audio clip 5.11
- else if ( N -> type == weave_video_node_type ) Render video clip 5.12
- else if ( N -> type == weave_download_node_type ) Render download 5.13
- else if ( N -> type == weave_material_node_type ) Render material 5.14
- else if ( N -> type == weave_embed_node_type ) Render embed 5.15
- else if ( N -> type == weave_pmac_node_type ) Render pmac 5.16
- else if ( N -> type == weave_vskip_node_type ) Render vskip 5.17
- else if ( N -> type == weave_section_node_type ) Render section 5.18
- else if ( N -> type == weave_code_line_node_type ) Render code line 5.19
- else if ( N -> type == weave_function_usage_node_type ) Render function usage 5.20
- else if ( N -> type == weave_commentary_node_type ) Render commentary 5.21
- else if ( N -> type == weave_carousel_slide_node_type ) Render carousel slide 5.22
- else if ( N -> type == weave_toc_node_type ) Render toc 5.23
- else if ( N -> type == weave_toc_line_node_type ) Render toc line 5.24
- else if ( N -> type == weave_defn_node_type ) Render defn 5.25
- else if ( N -> type == weave_source_code_node_type ) Render source code 5.26
- else if ( N -> type == weave_url_node_type ) Render URL 5.27
- else if ( N -> type == weave_footnote_cue_node_type ) Render footnote cue 5.28
- else if ( N -> type == weave_begin_footnote_text_node_type ) Render footnote 5.29
- else if ( N -> type == weave_display_line_node_type ) Render display line 5.30
- else if ( N -> type == weave_function_defn_node_type ) Render function defn 5.31
- else if ( N -> type == weave_item_node_type ) Render item 5.32
- else if ( N -> type == weave_inline_node_type ) Render inline 5.34
- else if ( N -> type == weave_locale_node_type ) Render locale 5.35
- else if ( N -> type == weave_maths_node_type ) Render maths 5.36
- else if ( N -> type == weave_linebreak_node_type ) Render linebreak 5.37
+ else if ( N -> type == weave_extract_node_type ) Render extract 5.11
+ else if ( N -> type == weave_audio_node_type ) Render audio clip 5.12
+ else if ( N -> type == weave_video_node_type ) Render video clip 5.13
+ else if ( N -> type == weave_download_node_type ) Render download 5.14
+ else if ( N -> type == weave_material_node_type ) Render material 5.15
+ else if ( N -> type == weave_embed_node_type ) Render embed 5.16
+ else if ( N -> type == weave_pmac_node_type ) Render pmac 5.17
+ else if ( N -> type == weave_vskip_node_type ) Render vskip 5.18
+ else if ( N -> type == weave_section_node_type ) Render section 5.19
+ else if ( N -> type == weave_code_line_node_type ) Render code line 5.20
+ else if ( N -> type == weave_function_usage_node_type ) Render function usage 5.21
+ else if ( N -> type == weave_commentary_node_type ) Render commentary 5.22
+ else if ( N -> type == weave_carousel_slide_node_type ) Render carousel slide 5.23
+ else if ( N -> type == weave_toc_node_type ) Render toc 5.24
+ else if ( N -> type == weave_toc_line_node_type ) Render toc line 5.25
+ else if ( N -> type == weave_defn_node_type ) Render defn 5.26
+ else if ( N -> type == weave_source_code_node_type ) Render source code 5.27
+ else if ( N -> type == weave_url_node_type ) Render URL 5.28
+ else if ( N -> type == weave_footnote_cue_node_type ) Render footnote cue 5.29
+ else if ( N -> type == weave_begin_footnote_text_node_type ) Render footnote 5.30
+ else if ( N -> type == weave_display_line_node_type ) Render display line 5.31
+ else if ( N -> type == weave_function_defn_node_type ) Render function defn 5.32
+ else if ( N -> type == weave_item_node_type ) Render item 5.33
+ else if ( N -> type == weave_inline_node_type ) Render inline 5.35
+ else if ( N -> type == weave_locale_node_type ) Render locale 5.36
+ else if ( N -> type == weave_maths_node_type ) Render maths 5.37
+ else if ( N -> type == weave_linebreak_node_type ) Render linebreak 5.38
else internal_error ( "unable to render unknown node" );
return TRUE ;
@@ -436,7 +437,32 @@ ePub respectively:
WRITE ( "\n" );
-
+
+
+ weave_extract_node * C = RETRIEVE_POINTER_weave_extract_node ( N -> content );
+ filename * F = Filenames::in (
+ Pathnames::down ( hrs -> wv -> weave_web -> md -> path_to_web , I "HTML" ),
+ C -> extract );
+ HTML_OPEN_WITH ( "div" , "class=\"inweb-extract\"" );
+ FILE * B = BinaryFiles::try_to_open_for_reading ( F );
+ if ( B == NULL ) {
+ Main::error_in_web ( I "Unable to find this HTML extract" ,
+ hrs -> wv -> current_weave_line );
+ } else {
+ while ( TRUE ) {
+ int c = getc ( B );
+ if ( c == EOF ) break ;
+ PUT (( wchar_t ) c );
+ }
+ BinaryFiles::close ( B );
+ }
+ HTML_CLOSE ( "div" );
+ WRITE ( "\n" );
+
+
+
@@ -455,7 +481,7 @@ ePub respectively:
WRITE ( "\n" );
-
@@ -481,7 +507,7 @@ ePub respectively:
WRITE ( "\n" );
-
@@ -503,7 +529,7 @@ ePub respectively:
Pathnames::relative_URL ( url , Filenames::up ( hrs -> wv -> weave_to ), TOP );
WRITE_TO ( url , "%S" , Filenames::get_leafname ( F ));
int N = Filenames::size ( F );
- if ( N > 0 ) Describe the file size 5.13.1
+ if ( N > 0 ) Describe the file size 5.14.1
else Main::error_in_web ( I "Download file missing or empty" ,
hrs -> wv -> current_weave_line );
filename * D = Filenames::from_text ( C -> download_name );
@@ -519,7 +545,7 @@ ePub respectively:
}
-
@@ -536,8 +562,8 @@ ePub respectively:
WRITE_TO ( size , "%S" , unit );
WRITE_TO ( size , ")" );
-This code is used in §5.13 .
-This code is used in §5.14 .
+
@@ -550,17 +576,17 @@ ePub respectively:
first_in_para = PC -> para ;
}
if ( C -> material_type == COMMENTARY_MATERIAL )
- Deal with a commentary material node 5.14.1
+ Deal with a commentary material node 5.15.1
else if ( C -> material_type == CODE_MATERIAL )
- Deal with a code material node 5.14.2
+ Deal with a code material node 5.15.2
else if ( C -> material_type == FOOTNOTES_MATERIAL )
- Deal with a footnotes material node 5.14.3
+ Deal with a footnotes material node 5.15.3
else if ( C -> material_type == ENDNOTES_MATERIAL )
- Deal with a endnotes material node 5.14.4
+ Deal with a endnotes material node 5.15.4
else if ( C -> material_type == MACRO_MATERIAL )
- Deal with a macro material node 5.14.5
+ Deal with a macro material node 5.15.5
else if ( C -> material_type == DEFINITION_MATERIAL )
- Deal with a definition material node 5.14.6 ;
+ Deal with a definition material node 5.15.6 ;
return FALSE ;
@@ -575,8 +601,8 @@ ePub respectively:
first_in_para = NULL ;
}
- This code is used in §5.8 , §5.14.1 (twice), §5.14.2 , §5.14.3 , §5.14.4 , §5.14.6 .
-This code is used in §5.8 , §5.15.1 (twice), §5.15.2 , §5.15.3 , §5.15.4 , §5.15.6 .
+
@@ -590,7 +616,7 @@ ePub respectively:
Trees::traverse_from ( M , & HTMLFormat::render_visit , ( void *) hrs , L +1);
continue ;
}
- if ( HTMLFormat::interior_material ( M )) Render a run of interior matter 5.14.1.1 ;
+ if ( HTMLFormat::interior_material ( M )) Render a run of interior matter 5.15.1.1 ;
If no para number yet, render a p just to hold this 5.8.1 ;
if ( item_depth > 0 ) {
HTMLFormat::go_to_depth ( hrs , item_depth , 0 );
@@ -604,8 +630,8 @@ ePub respectively:
item_depth = 0 ;
}
-This code is used in §5.14 .
-This code is used in §5.15 .
+
@@ -624,8 +650,8 @@ ePub respectively:
if ( item_depth == 0 ) { HTML_CLOSE ( "p" ); WRITE ( "\n" ); }
continue ;
-This code is used in §5.14.1 .
-This code is used in §5.15.1 .
+
@@ -653,8 +679,8 @@ ePub respectively:
HTML_CLOSE ( "ul" ); WRITE ( "\n" );
}
-This code is used in §5.14 .
-This code is used in §5.15 .
+
@@ -663,8 +689,8 @@ ePub respectively:
Recurse the renderer through children nodes 5.9.1 ;
HTML_CLOSE ( "ul" ); WRITE ( "\n" );
-This code is used in §5.14 .
-This code is used in §5.15 .
+
@@ -673,8 +699,8 @@ ePub respectively:
Recurse the renderer through children nodes 5.9.1 ;
HTML_CLOSE ( "ul" ); WRITE ( "\n" );
-This code is used in §5.14 .
-This code is used in §5.15 .
+
@@ -687,8 +713,8 @@ ePub respectively:
Recurse the renderer through children nodes 5.9.1 ;
HTML_CLOSE ( "p" ); WRITE ( "\n" );
-This code is used in §5.14 .
-This code is used in §5.15 .
+
@@ -697,13 +723,13 @@ ePub respectively:
Recurse the renderer through children nodes 5.9.1 ;
HTML_CLOSE ( "pre" ); WRITE ( "\n" );
-This code is used in §5.14 .
-This code is used in §5.15 .
+
-
@@ -730,7 +756,7 @@ that service uses to identify the video/audio in question.
}
-
@@ -759,14 +785,14 @@ that service uses to identify the video/audio in question.
}
-
WRITE ( "\n" );
-
@@ -774,7 +800,7 @@ that service uses to identify the video/audio in question.
LOG ( "It was %d\n" , C -> allocation_id );
-
@@ -783,7 +809,7 @@ that service uses to identify the video/audio in question.
return FALSE ;
-
@@ -795,7 +821,7 @@ that service uses to identify the video/audio in question.
HTML::end_link ( OUT );
-
@@ -819,7 +845,7 @@ that service uses to identify the video/audio in question.
if ( C -> in_code ) HTMLFormat::change_colour ( OUT , -1, hrs -> colours );
-
@@ -854,7 +880,7 @@ that service uses to identify the video/audio in question.
else WRITE ( " style=\"display: none;\"" );
WRITE ( ">\n" );
if ( C -> caption_command == CAROUSEL_ABOVE_CMD ) {
- Place caption here 5.22.1 ;
+ Place caption here 5.23.1 ;
WRITE ( "<div class=\"%S\">%d / %d</div>\n" ,
slide_count_class , hrs -> slide_number , hrs -> slide_of );
} else {
@@ -864,7 +890,7 @@ that service uses to identify the video/audio in question.
WRITE ( "<div class=\"carousel-content\">" );
Recurse the renderer through children nodes 5.9.1 ;
WRITE ( "</div>\n" );
- if ( C -> caption_command != CAROUSEL_ABOVE_CMD ) Place caption here 5.22.1 ;
+ if ( C -> caption_command != CAROUSEL_ABOVE_CMD ) Place caption here 5.23.1 ;
WRITE ( "</div>\n" );
if ( hrs -> slide_number == hrs -> slide_of ) {
WRITE ( "<a class=\"carousel-prev-button\" " );
@@ -896,15 +922,15 @@ that service uses to identify the video/audio in question.
return FALSE ;
-
if ( C -> caption_command != CAROUSEL_UNCAPTIONED_CMD )
WRITE ( "<div class=\"%S\">%S</div>\n" , caption_class , C -> caption );
-This code is used in §5.22 (twice).
-This code is used in §5.23 (twice).
+
@@ -920,7 +946,7 @@ that service uses to identify the video/audio in question.
return FALSE ;
-
@@ -935,7 +961,7 @@ that service uses to identify the video/audio in question.
HTML::end_link ( OUT );
-
@@ -946,7 +972,7 @@ that service uses to identify the video/audio in question.
WRITE ( " " );
-
@@ -969,7 +995,7 @@ that service uses to identify the video/audio in question.
if ( current_colour >= 0 ) HTMLFormat::change_colour ( OUT , -1, hrs -> colours );
-
@@ -979,7 +1005,7 @@ that service uses to identify the video/audio in question.
HTML::end_link ( OUT );
-
@@ -997,7 +1023,7 @@ that service uses to identify the video/audio in question.
C -> cue_text , C -> cue_text , C -> cue_text );
-
@@ -1022,7 +1048,7 @@ that service uses to identify the video/audio in question.
return FALSE ;
-
@@ -1035,7 +1061,7 @@ that service uses to identify the video/audio in question.
OUTDENT ; HTML_CLOSE ( "blockquote" ); WRITE ( "\n" );
-
@@ -1070,7 +1096,7 @@ that service uses to identify the video/audio in question.
return FALSE ;
-
@@ -1080,7 +1106,7 @@ that service uses to identify the video/audio in question.
else WRITE ( " " );
-
@@ -1088,7 +1114,7 @@ that service uses to identify the video/audio in question.
WRITE ( "%S" , C -> content );
-
@@ -1098,7 +1124,7 @@ that service uses to identify the video/audio in question.
return FALSE ;
-
@@ -1114,7 +1140,7 @@ that service uses to identify the video/audio in question.
HTML::end_link ( OUT );
-
@@ -1133,14 +1159,14 @@ that service uses to identify the video/audio in question.
}
-
WRITE ( "<br/>" );
-
@@ -1154,13 +1180,13 @@ that service uses to identify the video/audio in question.
for ( tree_node * M = N -> child ; M ; M = M -> next )
Trees::traverse_from ( M , & HTMLFormat::render_visit , ( void *) hrs , L +1);
-This code is used in §5.9 , §5.14.2 , §5.14.3 , §5.14.4 , §5.14.5 , §5.14.6 , §5.19 , §5.22 , §5.29 , §5.31 , §5.34 .
+This code is used in §5.9 , §5.15.2 , §5.15.3 , §5.15.4 , §5.15.5 , §5.15.6 , §5.20 , §5.23 , §5.30 , §5.32 , §5.35 .
-int HTMLFormat::interior_material ( tree_node * N ) {
+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 ;
if ( N -> type == weave_inline_node_type ) return TRUE ;
@@ -1175,7 +1201,7 @@ which is itself inside a list entry"; and so on.
-void HTMLFormat::go_to_depth ( HTML_render_state * hrs , int from_depth , int to_depth ) {
+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 ) {
HTML_CLOSE ( "li" );
@@ -1195,7 +1221,7 @@ which is itself inside a list entry"; and so on.
-void HTMLFormat::paragraph_number ( text_stream * OUT , paragraph * P ) {
+void HTMLFormat::paragraph_number ( text_stream * OUT , paragraph * P ) {
TEMPORARY_TEXT ( TEMP )
Colonies::paragraph_anchor ( TEMP , P );
HTML::anchor_with_class ( OUT , TEMP , I "paragraph-anchor" );
@@ -1212,7 +1238,7 @@ which is itself inside a list entry"; and so on.
-void HTMLFormat::change_colour ( text_stream * OUT , int col , colour_scheme * cs ) {
+void HTMLFormat::change_colour ( text_stream * OUT , int col , colour_scheme * cs ) {
if ( col == -1) {
HTML_CLOSE ( "span" );
} else {
@@ -1238,7 +1264,7 @@ which is itself inside a list entry"; and so on.
-void HTMLFormat::escape_text ( text_stream * OUT , text_stream * id ) {
+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 ( "&" );
else if ( Str::get_at ( id , i ) == '<' ) WRITE ( "<" );
diff --git a/docs/inweb/5-tu.html b/docs/inweb/5-tu.html
index 01f44eb..bf569c3 100644
--- a/docs/inweb/5-tu.html
+++ b/docs/inweb/5-tu.html
@@ -182,7 +182,7 @@ To do this, the weaver calls the following.
-void TeXUtilities::remove_math_mode ( OUTPUT_STREAM , text_stream * text ) {
+void TeXUtilities::remove_math_mode ( OUTPUT_STREAM , text_stream * text ) {
TEMPORARY_TEXT ( math_matter )
TeXUtilities::remove_math_mode_range ( math_matter , text , 0 , Str::len ( text )-1);
WRITE ( "%S" , math_matter );
diff --git a/docs/inweb/5-wt.html b/docs/inweb/5-wt.html
index 1c4ecf7..0e8897c 100644
--- a/docs/inweb/5-wt.html
+++ b/docs/inweb/5-wt.html
@@ -131,6 +131,11 @@ function togglePopup(material_id) {
CLASS_DEFINITION
} weave_figure_node ;
+typedef struct weave_extract_node {
+ struct text_stream * extract ;
+ CLASS_DEFINITION
+} weave_extract_node ;
+
typedef struct weave_audio_node {
struct text_stream * audio_name ;
int w ;
@@ -294,7 +299,7 @@ function togglePopup(material_id) {
CLASS_DEFINITION
} weave_verbatim_node ;
- The structure weave_document_node is accessed in 3/tc, 3/twot, 5/fm, 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_head_node is accessed in 5/tf, 5/hf, 5/df and here. The structure weave_body_node is private to this section. The structure weave_tail_node is accessed in 5/tf, 5/hf, 5/df and here. The structure weave_chapter_header_node is accessed in 5/ptf, 5/tf, 5/df and here. The structure weave_chapter_footer_node is accessed in 5/ptf, 5/tf, 5/df and here. The structure weave_section_header_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_section_footer_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_section_purpose_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_subheading_node is accessed in 1/pc, 2/lc, 2/tp, 2/pn, 3/ta, 3/tw, 3/tt, 4/as, 4/cl, 4/is, 5/ptf, 5/tf, 5/hf, 5/df, 6/cs and here. The structure weave_bar_node is private to this section. The structure weave_pagebreak_node is private to this section. The structure weave_linebreak_node is private to this section. The structure weave_paragraph_heading_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_endnote_node is private to this section. The structure weave_figure_node is accessed in 1/fm, 1/pp, 1/wp, 8/ws, 4/cl, 5/tf, 5/hf, 5/df, 6/rw and here. The structure weave_audio_node is accessed in 8/ws, 5/tf, 5/hf, 5/df and here. The structure weave_video_node is accessed in 1/fm, 1/pp, 1/wp, 8/ws, 4/cl, 5/tf, 5/hf, 5/df, 6/rw and here. The structure weave_download_node is accessed in 5/hf, 5/df and here. The structure weave_material_node is accessed in 5/tf, 5/hf, 5/df and here. The structure weave_embed_node is accessed in 1/fm, 1/pp, 1/wp, 8/ws, 4/cl, 5/ptf, 5/tf, 5/hf, 5/df, 6/rw and here. The structure weave_pmac_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_vskip_node is accessed in 5/tf, 5/df and here. The structure weave_chapter_node is accessed in 5/ptf, 5/tf, 5/df and here. The structure weave_section_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_code_line_node is private to this section. The structure weave_function_usage_node is accessed in 1/wp, 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_commentary_node is accessed in 1/pc, 2/lc, 2/tp, 2/pn, 3/ta, 3/tw, 3/tt, 4/as, 4/cl, 4/is, 5/ptf, 5/tf, 5/hf, 5/df, 6/cs and here. The structure weave_carousel_slide_node is accessed in 2/tgs, 5/hf, 5/df and here. The structure weave_toc_node is accessed in 5/tf, 5/df and here. The structure weave_toc_line_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_chapter_title_page_node is private to this section. The structure weave_defn_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_inline_node is private to this section. The structure weave_locale_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_source_code_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_url_node is accessed in 2/trs, 3/twot, 5/fm, 5/ptf, 5/tf, 5/hf, 5/df, 6/rw and here. The structure weave_footnote_cue_node is accessed in 2/tp, 3/tw, 3/twot, 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_begin_footnote_text_node is accessed in 2/tp, 3/tw, 3/twot, 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_display_line_node is accessed in 1/pc, 2/lc, 2/tp, 2/pn, 3/ta, 3/tw, 3/tt, 4/as, 4/cl, 4/is, 5/ptf, 5/tf, 5/hf, 5/df, 6/cs and here. The structure weave_function_defn_node is accessed in 1/wp, 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_item_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_grammar_index_node is private to this section. The structure weave_maths_node is accessed in 2/trs, 3/twot, 5/fm, 5/ptf, 5/tf, 5/hf, 5/df, 6/rw and here. The structure weave_verbatim_node is accessed in 2/trs, 3/twot, 5/fm, 5/ptf, 5/tf, 5/hf, 5/df, 6/rw and here.
+The structure weave_document_node is accessed in 3/tc, 3/twot, 5/fm, 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_head_node is accessed in 5/tf, 5/hf, 5/df and here. The structure weave_body_node is private to this section. The structure weave_tail_node is accessed in 5/tf, 5/hf, 5/df and here. The structure weave_chapter_header_node is accessed in 5/ptf, 5/tf, 5/df and here. The structure weave_chapter_footer_node is accessed in 5/ptf, 5/tf, 5/df and here. The structure weave_section_header_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_section_footer_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_section_purpose_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_subheading_node is accessed in 1/pc, 2/lc, 2/tp, 2/pn, 3/ta, 3/tw, 3/tt, 4/as, 4/cl, 4/is, 5/ptf, 5/tf, 5/hf, 5/df, 6/cs and here. The structure weave_bar_node is private to this section. The structure weave_pagebreak_node is private to this section. The structure weave_linebreak_node is private to this section. The structure weave_paragraph_heading_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_endnote_node is private to this section. The structure weave_figure_node is accessed in 1/fm, 1/pp, 1/wp, 8/ws, 4/cl, 5/tf, 5/hf, 5/df, 6/rw and here. The structure weave_extract_node is accessed in 5/hf and here. The structure weave_audio_node is accessed in 8/ws, 5/tf, 5/hf, 5/df and here. The structure weave_video_node is accessed in 1/fm, 1/pp, 1/wp, 8/ws, 4/cl, 5/tf, 5/hf, 5/df, 6/rw and here. The structure weave_download_node is accessed in 5/hf, 5/df and here. The structure weave_material_node is accessed in 5/tf, 5/hf, 5/df and here. The structure weave_embed_node is accessed in 1/fm, 1/pp, 1/wp, 8/ws, 4/cl, 5/ptf, 5/tf, 5/hf, 5/df, 6/rw and here. The structure weave_pmac_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_vskip_node is accessed in 5/tf, 5/df and here. The structure weave_chapter_node is accessed in 5/ptf, 5/tf, 5/df and here. The structure weave_section_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_code_line_node is private to this section. The structure weave_function_usage_node is accessed in 1/wp, 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_commentary_node is accessed in 1/pc, 2/lc, 2/tp, 2/pn, 3/ta, 3/tw, 3/tt, 4/as, 4/cl, 4/is, 5/ptf, 5/tf, 5/hf, 5/df, 6/cs and here. The structure weave_carousel_slide_node is accessed in 2/tgs, 5/hf, 5/df and here. The structure weave_toc_node is accessed in 5/tf, 5/df and here. The structure weave_toc_line_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_chapter_title_page_node is private to this section. The structure weave_defn_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_inline_node is private to this section. The structure weave_locale_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_source_code_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_url_node is accessed in 2/trs, 3/twot, 5/fm, 5/ptf, 5/tf, 5/hf, 5/df, 6/rw and here. The structure weave_footnote_cue_node is accessed in 2/tp, 3/tw, 3/twot, 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_begin_footnote_text_node is accessed in 2/tp, 3/tw, 3/twot, 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_display_line_node is accessed in 1/pc, 2/lc, 2/tp, 2/pn, 3/ta, 3/tw, 3/tt, 4/as, 4/cl, 4/is, 5/ptf, 5/tf, 5/hf, 5/df, 6/cs and here. The structure weave_function_defn_node is accessed in 1/wp, 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_item_node is accessed in 5/ptf, 5/tf, 5/hf, 5/df and here. The structure weave_grammar_index_node is private to this section. The structure weave_maths_node is accessed in 2/trs, 3/twot, 5/fm, 5/ptf, 5/tf, 5/hf, 5/df, 6/rw and here. The structure weave_verbatim_node is accessed in 2/trs, 3/twot, 5/fm, 5/ptf, 5/tf, 5/hf, 5/df, 6/rw and here.
@@ -316,6 +321,7 @@ function togglePopup(material_id) {
tree_node_type * weave_paragraph_heading_node_type = NULL ;
tree_node_type * weave_endnote_node_type = NULL ;
tree_node_type * weave_figure_node_type = NULL ;
+tree_node_type * weave_extract_node_type = NULL ;
tree_node_type * weave_audio_node_type = NULL ;
tree_node_type * weave_video_node_type = NULL ;
tree_node_type * weave_download_node_type = NULL ;
@@ -381,6 +387,8 @@ function togglePopup(material_id) {
Trees::new_node_type ( I "endnote" , weave_endnote_node_CLASS , NULL );
weave_figure_node_type =
Trees::new_node_type ( I "figure" , weave_figure_node_CLASS , NULL );
+ weave_extract_node_type =
+ Trees::new_node_type ( I "extract" , weave_extract_node_CLASS , NULL );
weave_audio_node_type =
Trees::new_node_type ( I "audio" , weave_audio_node_CLASS , NULL );
weave_video_node_type =
@@ -570,7 +578,15 @@ function togglePopup(material_id) {
STORE_POINTER_weave_figure_node ( C ));
}
-tree_node * WeaveTree::audio ( heterogeneous_tree * tree ,
+tree_node * WeaveTree::raw_extract ( heterogeneous_tree * tree ,
+ text_stream * extract ) {
+ weave_extract_node * C = CREATE ( weave_extract_node );
+ C -> extract = Str::duplicate ( extract );
+ return Trees::new_node ( tree , weave_extract_node_type ,
+ STORE_POINTER_weave_extract_node ( C ));
+}
+
+tree_node * WeaveTree::audio ( heterogeneous_tree * tree ,
text_stream * audio_name , int w ) {
weave_audio_node * C = CREATE ( weave_audio_node );
C -> audio_name = Str::duplicate ( audio_name );
@@ -579,7 +595,7 @@ function togglePopup(material_id) {
STORE_POINTER_weave_audio_node ( C ));
}
-tree_node * WeaveTree::video ( heterogeneous_tree * tree ,
+tree_node * WeaveTree::video ( heterogeneous_tree * tree ,
text_stream * video_name , int w , int h ) {
weave_video_node * C = CREATE ( weave_video_node );
C -> video_name = Str::duplicate ( video_name );
@@ -588,7 +604,7 @@ function togglePopup(material_id) {
STORE_POINTER_weave_video_node ( C ));
}
-tree_node * WeaveTree::download ( heterogeneous_tree * tree ,
+tree_node * WeaveTree::download ( heterogeneous_tree * tree ,
text_stream * download_name , text_stream * filetype ) {
weave_download_node * C = CREATE ( weave_download_node );
C -> download_name = Str::duplicate ( download_name );
@@ -597,7 +613,7 @@ function togglePopup(material_id) {
STORE_POINTER_weave_download_node ( C ));
}
-tree_node * WeaveTree::material ( heterogeneous_tree * tree , int material_type , int plainly ,
+tree_node * WeaveTree::material ( heterogeneous_tree * tree , int material_type , int plainly ,
programming_language * styling , text_stream * endnote ) {
weave_material_node * C = CREATE ( weave_material_node );
C -> material_type = material_type ;
@@ -607,7 +623,7 @@ function togglePopup(material_id) {
return Trees::new_node ( tree , weave_material_node_type , STORE_POINTER_weave_material_node ( C ));
}
-tree_node * WeaveTree::embed ( heterogeneous_tree * tree ,
+tree_node * WeaveTree::embed ( heterogeneous_tree * tree ,
text_stream * service , text_stream * ID , int w , int h ) {
weave_embed_node * C = CREATE ( weave_embed_node );
C -> service = Str::duplicate ( service );
@@ -623,7 +639,7 @@ thing is to render some sort of equals sign after it, if so.
-tree_node * WeaveTree::pmac ( heterogeneous_tree * tree , para_macro * pmac , int defn ) {
+tree_node * WeaveTree::pmac ( heterogeneous_tree * tree , para_macro * pmac , int defn ) {
weave_pmac_node * C = CREATE ( weave_pmac_node );
C -> pmac = pmac ;
C -> defn = defn ;
@@ -636,24 +652,24 @@ information.
-tree_node * WeaveTree::vskip ( heterogeneous_tree * tree , int in_comment ) {
+tree_node * WeaveTree::vskip ( heterogeneous_tree * tree , int in_comment ) {
weave_vskip_node * C = CREATE ( weave_vskip_node );
C -> in_comment = in_comment ;
return Trees::new_node ( tree , weave_vskip_node_type , STORE_POINTER_weave_vskip_node ( C ));
}
-tree_node * WeaveTree::section ( heterogeneous_tree * tree , section * sect ) {
+tree_node * WeaveTree::section ( heterogeneous_tree * tree , section * sect ) {
weave_section_node * C = CREATE ( weave_section_node );
C -> sect = sect ;
return Trees::new_node ( tree , weave_section_node_type , STORE_POINTER_weave_section_node ( C ));
}
-tree_node * WeaveTree::code_line ( heterogeneous_tree * tree ) {
+tree_node * WeaveTree::code_line ( heterogeneous_tree * tree ) {
weave_code_line_node * C = CREATE ( weave_code_line_node );
return Trees::new_node ( tree , weave_code_line_node_type , STORE_POINTER_weave_code_line_node ( C ));
}
-tree_node * WeaveTree::function_usage ( heterogeneous_tree * tree ,
+tree_node * WeaveTree::function_usage ( heterogeneous_tree * tree ,
text_stream * url , language_function * fn ) {
weave_function_usage_node * C = CREATE ( weave_function_usage_node );
C -> url = Str::duplicate ( url );
@@ -661,27 +677,27 @@ information.
return Trees::new_node ( tree , weave_function_usage_node_type , STORE_POINTER_weave_function_usage_node ( C ));
}
-tree_node * WeaveTree::commentary ( heterogeneous_tree * tree , text_stream * text , int in_code ) {
+tree_node * WeaveTree::commentary ( heterogeneous_tree * tree , text_stream * text , int in_code ) {
weave_commentary_node * C = CREATE ( weave_commentary_node );
C -> text = Str::duplicate ( text );
C -> in_code = in_code ;
return Trees::new_node ( tree , weave_commentary_node_type , STORE_POINTER_weave_commentary_node ( C ));
}
-tree_node * WeaveTree::carousel_slide ( heterogeneous_tree * tree , text_stream * caption , int c ) {
+tree_node * WeaveTree::carousel_slide ( heterogeneous_tree * tree , text_stream * caption , int c ) {
weave_carousel_slide_node * C = CREATE ( weave_carousel_slide_node );
C -> caption = Str::duplicate ( caption );
C -> caption_command = c ;
return Trees::new_node ( tree , weave_carousel_slide_node_type , STORE_POINTER_weave_carousel_slide_node ( C ));
}
-tree_node * WeaveTree::table_of_contents ( heterogeneous_tree * tree , text_stream * text1 ) {
+tree_node * WeaveTree::table_of_contents ( heterogeneous_tree * tree , text_stream * text1 ) {
weave_toc_node * C = CREATE ( weave_toc_node );
C -> text1 = Str::duplicate ( text1 );
return Trees::new_node ( tree , weave_toc_node_type , STORE_POINTER_weave_toc_node ( C ));
}
-tree_node * WeaveTree::contents_line ( heterogeneous_tree * tree ,
+tree_node * WeaveTree::contents_line ( heterogeneous_tree * tree ,
text_stream * text1 , text_stream * text2 , paragraph * P ) {
weave_toc_line_node * C = CREATE ( weave_toc_line_node );
C -> text1 = Str::duplicate ( text1 );
@@ -695,7 +711,7 @@ information.
return Trees::new_node ( tree , weave_chapter_title_page_node_type , STORE_POINTER_weave_chapter_title_page_node ( C ));
}
-tree_node * WeaveTree::weave_defn_node ( heterogeneous_tree * tree , text_stream * keyword ) {
+tree_node * WeaveTree::weave_defn_node ( heterogeneous_tree * tree , text_stream * keyword ) {
weave_defn_node * C = CREATE ( weave_defn_node );
C -> keyword = Str::duplicate ( keyword );
return Trees::new_node ( tree , weave_defn_node_type , STORE_POINTER_weave_defn_node ( C ));
@@ -714,7 +730,7 @@ spaces sufficient to reach the next tab-stop position, calculated as:
define SPACES_PER_TAB_IN_WOVEN_CODE 4
-tree_node * WeaveTree::source_code ( heterogeneous_tree * tree ,
+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" );
@@ -746,7 +762,7 @@ spaces sufficient to reach the next tab-stop position, calculated as:
return Trees::new_node ( tree , weave_source_code_node_type , STORE_POINTER_weave_source_code_node ( C ));
}
-tree_node * WeaveTree::url ( heterogeneous_tree * tree , text_stream * url ,
+tree_node * WeaveTree::url ( heterogeneous_tree * tree , text_stream * url ,
text_stream * content , int external ) {
weave_url_node * C = CREATE ( weave_url_node );
C -> url = Str::duplicate ( url );
@@ -755,13 +771,13 @@ spaces sufficient to reach the next tab-stop position, calculated as:
return Trees::new_node ( tree , weave_url_node_type , STORE_POINTER_weave_url_node ( C ));
}
-tree_node * WeaveTree::footnote_cue ( heterogeneous_tree * tree , text_stream * cue ) {
+tree_node * WeaveTree::footnote_cue ( heterogeneous_tree * tree , text_stream * cue ) {
weave_footnote_cue_node * C = CREATE ( weave_footnote_cue_node );
C -> cue_text = Str::duplicate ( cue );
return Trees::new_node ( tree , weave_footnote_cue_node_type , STORE_POINTER_weave_footnote_cue_node ( C ));
}
-tree_node * WeaveTree::footnote ( heterogeneous_tree * tree , text_stream * cue ) {
+tree_node * WeaveTree::footnote ( heterogeneous_tree * tree , text_stream * cue ) {
weave_begin_footnote_text_node * C = CREATE ( weave_begin_footnote_text_node );
C -> cue_text = Str::duplicate ( cue );
return Trees::new_node ( tree , weave_begin_footnote_text_node_type , STORE_POINTER_weave_begin_footnote_text_node ( C ));
@@ -772,7 +788,7 @@ definition has just occurred.
-tree_node * WeaveTree::function_defn ( heterogeneous_tree * tree , language_function * fn ) {
+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 ));
@@ -783,7 +799,7 @@ a convenience for Inform 7 code commentary.
-tree_node * WeaveTree::display_line ( heterogeneous_tree * tree , text_stream * text ) {
+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 ));
@@ -804,31 +820,31 @@ indentation but not weave any bracketed marker.
(b) This was produced by equal to 1, equal to .
-tree_node * WeaveTree::weave_item_node ( heterogeneous_tree * tree , int depth , text_stream * label ) {
+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 ;
C -> label = Str::duplicate ( label );
return Trees::new_node ( tree , weave_item_node_type , STORE_POINTER_weave_item_node ( C ));
}
-tree_node * WeaveTree::grammar_index ( heterogeneous_tree * tree ) {
+tree_node * WeaveTree::grammar_index ( heterogeneous_tree * tree ) {
weave_grammar_index_node * C = CREATE ( weave_grammar_index_node );
return Trees::new_node ( tree , weave_grammar_index_node_type , STORE_POINTER_weave_grammar_index_node ( C ));
}
-tree_node * WeaveTree::inline ( heterogeneous_tree * tree ) {
+tree_node * WeaveTree::inline ( heterogeneous_tree * tree ) {
weave_inline_node * C = CREATE ( weave_inline_node );
return Trees::new_node ( tree , weave_inline_node_type , STORE_POINTER_weave_inline_node ( C ));
}
-tree_node * WeaveTree::locale ( heterogeneous_tree * tree , paragraph * par1 , paragraph * par2 ) {
+tree_node * WeaveTree::locale ( heterogeneous_tree * tree , paragraph * par1 , paragraph * par2 ) {
weave_locale_node * C = CREATE ( weave_locale_node );
C -> par1 = par1 ;
C -> par2 = par2 ;
return Trees::new_node ( tree , weave_locale_node_type , STORE_POINTER_weave_locale_node ( C ));
}
-tree_node * WeaveTree::mathematics ( heterogeneous_tree * tree , text_stream * content , int displayed ) {
+tree_node * WeaveTree::mathematics ( heterogeneous_tree * tree , text_stream * content , int displayed ) {
weave_maths_node * C = CREATE ( weave_maths_node );
C -> content = Str::duplicate ( content );
C -> displayed = displayed ;
@@ -842,7 +858,7 @@ indentation but not weave any bracketed marker.
OUTDENT ;
}
-void WeaveTree::prune ( heterogeneous_tree * T ) {
+void WeaveTree::prune ( heterogeneous_tree * T ) {
Trees::prune_tree ( T , & WeaveTree::prune_visit , NULL );
}
diff --git a/docs/inweb/6-cln.html b/docs/inweb/6-cln.html
index 441262c..64d2a37 100644
--- a/docs/inweb/6-cln.html
+++ b/docs/inweb/6-cln.html
@@ -664,7 +664,7 @@ the main one.
else PUT(Str::get(pos));
}
-The function Colonies::reference_URL is used in The Collater (§5.1.11.6.1 , §5.1.11.12 , §5.1.11.15 ). The function Colonies::section_URL is used in §10.6.1 , §10.6.2 , The Collater (§5.1.11.8.1 ), HTML Formats (§5.3 , §5.3.1 , §5.3.2 ). The function Colonies::paragraph_URL is used in §10.4 , §10.5 , The Weaver of Text (§4.3 ), HTML Formats (§5.16 , §5.24 , §5.35 ). The function Colonies::paragraph_anchor is used in HTML Formats (§8 ).
+The function Colonies::reference_URL is used in The Collater (§5.1.11.6.1 , §5.1.11.12 , §5.1.11.15 ). The function Colonies::section_URL is used in §10.6.1 , §10.6.2 , The Collater (§5.1.11.8.1 ), HTML Formats (§5.3 , §5.3.1 , §5.3.2 ). The function Colonies::paragraph_URL is used in §10.4 , §10.5 , The Weaver of Text (§4.3 ), HTML Formats (§5.17 , §5.25 , §5.36 ). The function Colonies::paragraph_anchor is used in HTML Formats (§8 ).
diff --git a/docs/inweb/M-htwaw.html b/docs/inweb/M-htwaw.html
index 353507b..f61f3d6 100644
--- a/docs/inweb/M-htwaw.html
+++ b/docs/inweb/M-htwaw.html
@@ -65,7 +65,7 @@ MathJax = {
How to mark up code for literate programming.
-
+
-
+
+
+ = (html fireworks.html)
+
+
+
+
@@ -1004,7 +1014,7 @@ changed. The defaults are:
treat it as any other text would be treated.
-
@@ -1013,7 +1023,7 @@ University Press, 1999).
↩
-
diff --git a/foundation-module/Chapter 2/Memory.w b/foundation-module/Chapter 2/Memory.w
index 8a99568..e13082e 100755
--- a/foundation-module/Chapter 2/Memory.w
+++ b/foundation-module/Chapter 2/Memory.w
@@ -117,14 +117,10 @@ the debugging log.
@ At present |MEMORY_GRANULARITY| is 800K. This is the quantity of memory
allocated by each individual |malloc| call.
-After |MAX_BLOCKS_ALLOWED| blocks, we throw in the towel: we must have
-fallen into an endless loop which creates endless new objects somewhere.
-(If this ever happens, it would be a bug: the point of this mechanism is to
-be able to recover. Without this safety measure, OS X in particular would
-grind slowly to a halt, never refusing a |malloc|, until the user was
-unable to get the GUI responsive enough to kill the process.)
+As of the early 2020s, typical Inform projects need around 500 blocks to be
+allocated, for around 400 MB of memory in all; the largest known take us into
+the low 10000s of blocks, for more like 8 to 10 GB. But the latter are very rare.
-@d MAX_BLOCKS_ALLOWED 15000
@d MEMORY_GRANULARITY 100*1024*8 /* which must be divisible by 1024 */
=
@@ -174,15 +170,10 @@ void Memory::allocate_another_block(void) {
pointer types as far as the C compiler is concerned.
@ =
- int i;
- if (no_blocks_allocated++ >= MAX_BLOCKS_ALLOWED)
- Errors::fatal(
- "the memory manager has halted inweb, which seems to be generating "
- "endless structures. Presumably it is trapped in a loop");
Memory::check_memory_integrity();
cp = (unsigned char *) (Memory::paranoid_calloc(MEMORY_GRANULARITY, 1));
if (cp == NULL) Errors::fatal("Run out of memory: malloc failed");
- for (i=0; i