diff --git a/Chapter 6/Git Support.w b/Chapter 6/Git Support.w index 76f7de1..d83a1fb 100644 --- a/Chapter 6/Git Support.w +++ b/Chapter 6/Git Support.w @@ -12,7 +12,7 @@ void Git::write_gitignore(web *W, filename *prototype, filename *F) { WRITE_TO(header, "# This gitignore was automatically written by inweb -gitignore\n"); WRITE_TO(header, "# and is not intended for human editing\n\n"); WRITE_TO(STDOUT, "(Read script from %f)\n", prototype); - Preprocessor::preprocess(prototype, F, header, L, NULL_GENERAL_POINTER, '#'); + Preprocessor::preprocess(prototype, F, header, L, NULL_GENERAL_POINTER, '#', ISO_ENC); } @ Our one non-standard macro simply includes a file of standing material which diff --git a/Chapter 6/Makefiles.w b/Chapter 6/Makefiles.w index 4016b3f..b8b5734 100644 --- a/Chapter 6/Makefiles.w +++ b/Chapter 6/Makefiles.w @@ -41,7 +41,7 @@ void Makefiles::write(web *W, filename *prototype, filename *F, module_search *I WRITE_TO(STDOUT, "(Read script from %f)\n", prototype); Preprocessor::preprocess(prototype, F, header, L, - STORE_POINTER_makefile_specifics(specifics), '#'); + STORE_POINTER_makefile_specifics(specifics), '#', ISO_ENC); } @ We will allow a makescript to declare "components" (webs, really), so we need diff --git a/Chapter 6/Readme Writeme.w b/Chapter 6/Readme Writeme.w index bfc8423..8dad30e 100644 --- a/Chapter 6/Readme Writeme.w +++ b/Chapter 6/Readme Writeme.w @@ -14,7 +14,7 @@ void Readme::write(filename *prototype, filename *F) { Readme::bibliographic_expander, NULL); Preprocessor::do_not_suppress_whitespace(mm); WRITE_TO(STDOUT, "(Read script from %f)\n", prototype); - Preprocessor::preprocess(prototype, F, NULL, L, NULL_GENERAL_POINTER, '/'); + Preprocessor::preprocess(prototype, F, NULL, L, NULL_GENERAL_POINTER, '/', ISO_ENC); } @ And this is the one domain-specific macro: diff --git a/Manual/Webs, Tangling and Weaving.w b/Manual/Webs, Tangling and Weaving.w index 1d784b3..9171f20 100644 --- a/Manual/Webs, Tangling and Weaving.w +++ b/Manual/Webs, Tangling and Weaving.w @@ -501,6 +501,11 @@ elaborate makefiles for multi-web projects. (*) Material in balanced braces |{ ... }| is expanded into something more interesting. +(*) Literal braces can be written with a backslash, |\{| and |\}|, which +expand just into |{| and |}|. Literal backslashes are written |\\|, which +"expands" to |\|. A backslash is not allowed to precede any other character, +so something like |\fish| produces an error message. + @ Makescripts support variables, whose names have to be in capital letters, perhaps with underscores and digits added. For example: = (text) diff --git a/README.md b/README.md index 5951ebf..5d9e1ef 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Inweb 7.1.0 -v7.1.0-beta+1B11 'Escape to Danger' (16 June 2022) +v7.1.0-beta+1B12 'Escape to Danger' (25 July 2022) ## About Inweb diff --git a/Tangled/inweb.c b/Tangled/inweb.c index d9420f1..7447f65 100644 --- a/Tangled/inweb.c +++ b/Tangled/inweb.c @@ -731,6 +731,9 @@ struct Win32_Mutex { INIT_ONCE init; CRITICAL_SECTION crit; }; for (string_position P = Str__start(ST); P.index < Str__len(P.S); P.index++) #define LOOP_BACKWARDS_THROUGH_TEXT(P, ST)\ for (string_position P = Str__back(Str__end(ST)); P.index >= 0; P.index--) +#define PROTECTED_OPEN_BRACE_PPCHAR 0x25A0 +#define PROTECTED_CLOSE_BRACE_PPCHAR 0x25A1 +#define PROTECTED_BLANK_PPCHAR 0x25A2 #define MAX_PREPROCESSOR_LOOP_DEPTH 8 #define MAX_PP_MACRO_PARAMETERS 8 #define MAX_PP_MACRO_LINES 128 @@ -1325,14 +1328,14 @@ typedef struct text_file_position { int skip_terminator; int actively_scanning; /* whether we are still interested in the rest of the file */ } text_file_position; -#line 59 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 71 "inweb/foundation-module/Chapter 4/Preprocessor.w" typedef struct preprocessor_loop { struct text_stream *loop_var_name; struct linked_list *iterations; /* of |text_stream| */ int repeat_is_block; struct text_stream *repeat_saved_dest; } preprocessor_loop; -#line 44 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 56 "inweb/foundation-module/Chapter 4/Preprocessor.w" typedef struct preprocessor_state { struct text_stream *dest; struct preprocessor_macro *defining; /* a "define" body being scanned */ @@ -1347,19 +1350,19 @@ typedef struct preprocessor_state { struct general_pointer specifics; wchar_t comment_character; } preprocessor_state; -#line 433 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 470 "inweb/foundation-module/Chapter 4/Preprocessor.w" typedef struct preprocessor_variable { struct text_stream *name; struct text_stream *value; CLASS_DEFINITION } preprocessor_variable; -#line 453 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 490 "inweb/foundation-module/Chapter 4/Preprocessor.w" typedef struct preprocessor_variable_set { struct linked_list *variables; /* of |preprocessor_variable| */ struct preprocessor_variable_set *outer; CLASS_DEFINITION } preprocessor_variable_set; -#line 526 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 563 "inweb/foundation-module/Chapter 4/Preprocessor.w" typedef struct preprocessor_macro { /* syntax */ struct text_stream *identifier; @@ -1383,7 +1386,7 @@ typedef struct preprocessor_macro { CLASS_DEFINITION } preprocessor_macro; -#line 550 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 587 "inweb/foundation-module/Chapter 4/Preprocessor.w" typedef struct preprocessor_macro_parameter { struct text_stream *name; struct text_stream *definition_token; @@ -1439,19 +1442,19 @@ typedef struct JSON_value { struct text_stream *if_error; CLASS_DEFINITION } JSON_value; -#line 591 "inweb/foundation-module/Chapter 4/JSON.w" +#line 594 "inweb/foundation-module/Chapter 4/JSON.w" typedef struct JSON_requirement { struct linked_list *alternatives; /* of |JSON_single_requirement| */ CLASS_DEFINITION } JSON_requirement; -#line 615 "inweb/foundation-module/Chapter 4/JSON.w" +#line 618 "inweb/foundation-module/Chapter 4/JSON.w" typedef struct JSON_single_requirement { struct JSON_requirement *this_requirement; struct JSON_value *this_value; struct JSON_type *this_type; CLASS_DEFINITION } JSON_single_requirement; -#line 653 "inweb/foundation-module/Chapter 4/JSON.w" +#line 656 "inweb/foundation-module/Chapter 4/JSON.w" typedef struct JSON_type { int JSON_type; @@ -1464,13 +1467,13 @@ typedef struct JSON_type { struct text_stream *if_error; CLASS_DEFINITION } JSON_type; -#line 666 "inweb/foundation-module/Chapter 4/JSON.w" +#line 669 "inweb/foundation-module/Chapter 4/JSON.w" typedef struct JSON_pair_requirement { struct JSON_requirement *req; int optional; CLASS_DEFINITION } JSON_pair_requirement; -#line 1332 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1339 "inweb/foundation-module/Chapter 4/JSON.w" typedef struct JSON_rrf_state { struct text_stream *name; struct text_stream *defn; @@ -1493,7 +1496,7 @@ typedef struct HTML_tag { int from_line; CLASS_DEFINITION } HTML_tag; -#line 723 "inweb/foundation-module/Chapter 5/HTML.w" +#line 699 "inweb/foundation-module/Chapter 5/HTML.w" typedef struct colour_translation { wchar_t *chip_name; wchar_t *html_colour; @@ -3289,24 +3292,26 @@ int Characters__islower(wchar_t c) ; #line 26 "inweb/foundation-module/Chapter 4/Characters.w" int Characters__isalnum(wchar_t c) ; #line 29 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__iscntrl(wchar_t c) ; +#line 33 "inweb/foundation-module/Chapter 4/Characters.w" int Characters__vowel(wchar_t c) ; -#line 37 "inweb/foundation-module/Chapter 4/Characters.w" -int Characters__is_space_or_tab(int c) ; #line 41 "inweb/foundation-module/Chapter 4/Characters.w" +int Characters__is_space_or_tab(int c) ; +#line 45 "inweb/foundation-module/Chapter 4/Characters.w" int Characters__is_whitespace(int c) ; -#line 51 "inweb/foundation-module/Chapter 4/Characters.w" +#line 55 "inweb/foundation-module/Chapter 4/Characters.w" int Characters__is_babel_whitespace(int c) ; -#line 62 "inweb/foundation-module/Chapter 4/Characters.w" +#line 66 "inweb/foundation-module/Chapter 4/Characters.w" int Characters__combine_accent(int accent, int letter) ; -#line 116 "inweb/foundation-module/Chapter 4/Characters.w" +#line 120 "inweb/foundation-module/Chapter 4/Characters.w" int Characters__make_filename_safe(int charcode) ; -#line 122 "inweb/foundation-module/Chapter 4/Characters.w" +#line 126 "inweb/foundation-module/Chapter 4/Characters.w" wchar_t Characters__make_wchar_t_filename_safe(wchar_t charcode) ; -#line 131 "inweb/foundation-module/Chapter 4/Characters.w" +#line 135 "inweb/foundation-module/Chapter 4/Characters.w" int Characters__remove_accent(int charcode) ; -#line 158 "inweb/foundation-module/Chapter 4/Characters.w" +#line 162 "inweb/foundation-module/Chapter 4/Characters.w" wchar_t Characters__remove_wchar_t_accent(wchar_t charcode) ; -#line 165 "inweb/foundation-module/Chapter 4/Characters.w" +#line 169 "inweb/foundation-module/Chapter 4/Characters.w" int Characters__isalphabetic(int letter) ; #line 25 "inweb/foundation-module/Chapter 4/C Strings.w" int CStrings__strlen_unbounded(const char *p) ; @@ -3492,49 +3497,49 @@ void TextFiles__lose_interest(text_file_position *tfp) ; unicode_file_buffer TextFiles__create_ufb(void) ; #line 239 "inweb/foundation-module/Chapter 4/Text Files.w" int TextFiles__utf8_fgetc(FILE *from, const char **or_from, int escape_oddities, unicode_file_buffer *ufb) ; -#line 23 "inweb/foundation-module/Chapter 4/Preprocessor.w" -void Preprocessor__preprocess(filename *prototype, filename *F, text_stream *header, linked_list *special_macros, general_pointer specifics, wchar_t comment_char) ; -#line 83 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 28 "inweb/foundation-module/Chapter 4/Preprocessor.w" +void Preprocessor__preprocess(filename *prototype, filename *F, text_stream *header, linked_list *special_macros, general_pointer specifics, wchar_t comment_char, int encoding) ; +#line 95 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__set_loop_var_name(preprocessor_loop *loop, text_stream *name) ; -#line 86 "inweb/foundation-module/Chapter 4/Preprocessor.w" -void Preprocessor__add_loop_iteration(preprocessor_loop *loop, text_stream *value) ; #line 98 "inweb/foundation-module/Chapter 4/Preprocessor.w" +void Preprocessor__add_loop_iteration(preprocessor_loop *loop, text_stream *value) ; +#line 110 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__scan_line(text_stream *line, text_file_position *tfp, void *X) ; -#line 180 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 217 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__expand(text_stream *text, text_file_position *tfp, preprocessor_state *PPS) ; -#line 419 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 456 "inweb/foundation-module/Chapter 4/Preprocessor.w" int Preprocessor__acceptable_variable_name(text_stream *name) ; -#line 439 "inweb/foundation-module/Chapter 4/Preprocessor.w" -text_stream * Preprocessor__read_variable(preprocessor_variable *var) ; -#line 443 "inweb/foundation-module/Chapter 4/Preprocessor.w" -void Preprocessor__write_variable(preprocessor_variable *var, text_stream *val) ; -#line 459 "inweb/foundation-module/Chapter 4/Preprocessor.w" -preprocessor_variable_set * Preprocessor__new_variable_set(preprocessor_variable_set *outer) ; -#line 466 "inweb/foundation-module/Chapter 4/Preprocessor.w" -preprocessor_variable * Preprocessor__find_variable_in_one(text_stream *name, preprocessor_variable_set *set) ; #line 476 "inweb/foundation-module/Chapter 4/Preprocessor.w" +text_stream * Preprocessor__read_variable(preprocessor_variable *var) ; +#line 480 "inweb/foundation-module/Chapter 4/Preprocessor.w" +void Preprocessor__write_variable(preprocessor_variable *var, text_stream *val) ; +#line 496 "inweb/foundation-module/Chapter 4/Preprocessor.w" +preprocessor_variable_set * Preprocessor__new_variable_set(preprocessor_variable_set *outer) ; +#line 503 "inweb/foundation-module/Chapter 4/Preprocessor.w" +preprocessor_variable * Preprocessor__find_variable_in_one(text_stream *name, preprocessor_variable_set *set) ; +#line 513 "inweb/foundation-module/Chapter 4/Preprocessor.w" preprocessor_variable * Preprocessor__find_variable(text_stream *name, preprocessor_variable_set *set) ; -#line 490 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 527 "inweb/foundation-module/Chapter 4/Preprocessor.w" preprocessor_variable * Preprocessor__ensure_variable(text_stream *name, preprocessor_variable_set *in_set) ; -#line 567 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 604 "inweb/foundation-module/Chapter 4/Preprocessor.w" preprocessor_macro * Preprocessor__new_macro(linked_list *L, text_stream *name, text_stream *parameter_specification, void (*expander)(preprocessor_macro *, preprocessor_state *, text_stream **, preprocessor_loop *, text_file_position *), text_file_position *tfp) ; -#line 627 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 664 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__add_line_to_macro(preprocessor_macro *mm, text_stream *line, text_file_position *tfp) ; -#line 645 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 682 "inweb/foundation-module/Chapter 4/Preprocessor.w" linked_list * Preprocessor__list_of_reserved_macros(linked_list *special_macros) ; -#line 658 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 695 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__do_not_suppress_whitespace(preprocessor_macro *mm) ; -#line 663 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 700 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__new_loop_macro(linked_list *L, text_stream *name, text_stream *parameter_specification, void (*expander)(preprocessor_macro *, preprocessor_state *, text_stream **, preprocessor_loop *, text_file_position *), text_file_position *tfp) ; -#line 702 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 739 "inweb/foundation-module/Chapter 4/Preprocessor.w" preprocessor_macro * Preprocessor__find_macro(linked_list *L, text_stream *name) ; -#line 717 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 754 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__default_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) ; -#line 734 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 771 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__set_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) ; -#line 749 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 786 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__repeat_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) ; -#line 778 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 815 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__end_loop_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) ; #line 77 "inweb/foundation-module/Chapter 4/Tries and Avinues.w" wchar_t * Tries__search(match_trie *T, text_stream *p, wchar_t *add_outcome) ; @@ -3618,89 +3623,89 @@ JSON_value * JSON__decode_error(text_stream *err, text_file_position *tfp) ; JSON_value * JSON__decode_error_q(text_stream *err, text_file_position *tfp, text_stream *T, int from, int to) ; #line 260 "inweb/foundation-module/Chapter 4/JSON.w" JSON_value * JSON__decode_range(text_stream *T, int from, int to, text_file_position *tfp) ; -#line 306 "inweb/foundation-module/Chapter 4/JSON.w" +#line 307 "inweb/foundation-module/Chapter 4/JSON.w" JSON_value * JSON__decode_array(JSON_value *array, text_stream *T, int from, int to, text_file_position *tfp) ; -#line 333 "inweb/foundation-module/Chapter 4/JSON.w" +#line 335 "inweb/foundation-module/Chapter 4/JSON.w" JSON_value * JSON__decode_array_entry(JSON_value *array, text_stream *T, int from, int to, text_file_position *tfp) ; -#line 342 "inweb/foundation-module/Chapter 4/JSON.w" +#line 344 "inweb/foundation-module/Chapter 4/JSON.w" JSON_value * JSON__decode_object(JSON_value *obj, text_stream *T, int from, int to, text_file_position *tfp) ; -#line 377 "inweb/foundation-module/Chapter 4/JSON.w" +#line 380 "inweb/foundation-module/Chapter 4/JSON.w" JSON_value * JSON__decode_object_entry(JSON_value *obj, text_stream *T, int from, int to, text_file_position *tfp) ; -#line 415 "inweb/foundation-module/Chapter 4/JSON.w" +#line 418 "inweb/foundation-module/Chapter 4/JSON.w" JSON_value * JSON__decode_number(text_stream *T, int from, int to, text_file_position *tfp) ; -#line 452 "inweb/foundation-module/Chapter 4/JSON.w" +#line 455 "inweb/foundation-module/Chapter 4/JSON.w" JSON_value * JSON__decode_string(text_stream *T, int from, int to, text_file_position *tfp) ; -#line 503 "inweb/foundation-module/Chapter 4/JSON.w" +#line 506 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__encode(OUTPUT_STREAM, JSON_value *J) ; -#line 563 "inweb/foundation-module/Chapter 4/JSON.w" +#line 566 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__encode_string(OUTPUT_STREAM, text_stream *T) ; -#line 596 "inweb/foundation-module/Chapter 4/JSON.w" +#line 599 "inweb/foundation-module/Chapter 4/JSON.w" JSON_requirement * JSON__single_choice(JSON_single_requirement *sing) ; -#line 603 "inweb/foundation-module/Chapter 4/JSON.w" +#line 606 "inweb/foundation-module/Chapter 4/JSON.w" JSON_requirement * JSON__add_alternative(JSON_requirement *so_far, JSON_single_requirement *sing) ; -#line 626 "inweb/foundation-module/Chapter 4/JSON.w" +#line 629 "inweb/foundation-module/Chapter 4/JSON.w" JSON_single_requirement * JSON__require_requirement(JSON_requirement *req) ; -#line 634 "inweb/foundation-module/Chapter 4/JSON.w" +#line 637 "inweb/foundation-module/Chapter 4/JSON.w" JSON_single_requirement * JSON__require_value(JSON_value *value) ; -#line 642 "inweb/foundation-module/Chapter 4/JSON.w" +#line 645 "inweb/foundation-module/Chapter 4/JSON.w" JSON_single_requirement * JSON__require_type(int t) ; -#line 672 "inweb/foundation-module/Chapter 4/JSON.w" +#line 675 "inweb/foundation-module/Chapter 4/JSON.w" JSON_type * JSON__new_type_requirement(int t) ; -#line 700 "inweb/foundation-module/Chapter 4/JSON.w" +#line 703 "inweb/foundation-module/Chapter 4/JSON.w" JSON_single_requirement * JSON__require_array_of(JSON_requirement *E_req) ; -#line 711 "inweb/foundation-module/Chapter 4/JSON.w" +#line 714 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__require_entry(JSON_single_requirement *array_sr, JSON_requirement *entry_sr) ; -#line 723 "inweb/foundation-module/Chapter 4/JSON.w" +#line 726 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__require_pair(JSON_single_requirement *obj_sr, text_stream *key, JSON_requirement *req) ; -#line 727 "inweb/foundation-module/Chapter 4/JSON.w" +#line 730 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__allow_pair(JSON_single_requirement *obj_sr, text_stream *key, JSON_requirement *req) ; -#line 731 "inweb/foundation-module/Chapter 4/JSON.w" +#line 734 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__require_pair_inner(JSON_single_requirement *obj_sr, text_stream *key, JSON_requirement *req, int opt) ; -#line 750 "inweb/foundation-module/Chapter 4/JSON.w" +#line 753 "inweb/foundation-module/Chapter 4/JSON.w" JSON_pair_requirement * JSON__look_up_pair(JSON_single_requirement *obj_sr, text_stream *key) ; -#line 763 "inweb/foundation-module/Chapter 4/JSON.w" +#line 766 "inweb/foundation-module/Chapter 4/JSON.w" JSON_single_requirement * JSON__error_sr(text_stream *msg) ; -#line 781 "inweb/foundation-module/Chapter 4/JSON.w" +#line 784 "inweb/foundation-module/Chapter 4/JSON.w" int JSON__validate(JSON_value *val, JSON_requirement *req, linked_list *errs) ; -#line 792 "inweb/foundation-module/Chapter 4/JSON.w" +#line 795 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__validation_error(linked_list *errs, text_stream *err, lifo_stack *location) ; -#line 815 "inweb/foundation-module/Chapter 4/JSON.w" +#line 818 "inweb/foundation-module/Chapter 4/JSON.w" int JSON__validate_r(JSON_value *val, JSON_requirement *req, linked_list *errs, lifo_stack *location) ; -#line 834 "inweb/foundation-module/Chapter 4/JSON.w" +#line 837 "inweb/foundation-module/Chapter 4/JSON.w" int JSON__validate_single_r(JSON_value *val, JSON_single_requirement *req, linked_list *errs, lifo_stack *location) ; -#line 984 "inweb/foundation-module/Chapter 4/JSON.w" +#line 987 "inweb/foundation-module/Chapter 4/JSON.w" JSON_requirement * JSON__decode_req(text_stream *T, dictionary *known_names) ; -#line 992 "inweb/foundation-module/Chapter 4/JSON.w" +#line 995 "inweb/foundation-module/Chapter 4/JSON.w" JSON_requirement * JSON__decode_req_range(text_stream *T, int from, int to, dictionary *known_names) ; -#line 1024 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1028 "inweb/foundation-module/Chapter 4/JSON.w" JSON_requirement * JSON__decode_req_alternative(JSON_requirement *req, text_stream *T, int from, int to, dictionary *known_names) ; -#line 1036 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1040 "inweb/foundation-module/Chapter 4/JSON.w" JSON_single_requirement * JSON__decode_sreq_range(text_stream *T, int from, int to, dictionary *known_names) ; -#line 1122 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1127 "inweb/foundation-module/Chapter 4/JSON.w" JSON_single_requirement * JSON__decode_req_array(JSON_single_requirement *array_sr, text_stream *T, int from, int to, dictionary *known_names) ; -#line 1154 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1160 "inweb/foundation-module/Chapter 4/JSON.w" JSON_single_requirement * JSON__decode_req_array_entry(JSON_single_requirement *array_sr, text_stream *T, int from, int to, dictionary *known_names) ; -#line 1164 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1170 "inweb/foundation-module/Chapter 4/JSON.w" JSON_single_requirement * JSON__decode_req_object(JSON_single_requirement *obj, text_stream *T, int from, int to, dictionary *known_names) ; -#line 1191 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1198 "inweb/foundation-module/Chapter 4/JSON.w" JSON_single_requirement * JSON__decode_req_object_entry(JSON_single_requirement *obj, text_stream *T, int from, int to, dictionary *known_names) ; -#line 1239 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1246 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__encode_req(OUTPUT_STREAM, JSON_requirement *req) ; -#line 1243 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1250 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__encode_req_r(OUTPUT_STREAM, JSON_requirement *req) ; -#line 1256 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1263 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__encode_sreq_r(OUTPUT_STREAM, JSON_single_requirement *sing) ; -#line 1262 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1269 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__encode_type(OUTPUT_STREAM, JSON_type *type) ; -#line 1339 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1346 "inweb/foundation-module/Chapter 4/JSON.w" dictionary * JSON__read_requirements_file(dictionary *known, filename *F) ; -#line 1351 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1358 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__read_requirements_file_helper(text_stream *text, text_file_position *tfp, void *v_state) ; -#line 1375 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1382 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__process_req_defn(JSON_rrf_state *state) ; -#line 1388 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1395 "inweb/foundation-module/Chapter 4/JSON.w" JSON_requirement * JSON__decode_printing_errors(text_stream *defn, dictionary *dict, text_file_position *tfp) ; -#line 1407 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1414 "inweb/foundation-module/Chapter 4/JSON.w" JSON_requirement * JSON__look_up_requirements(dictionary *known, text_stream *name) ; #line 8 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__header(OUTPUT_STREAM, text_stream *title, filename *css1, filename *css2, filename *js1, filename *js2, void *state) ; @@ -3840,29 +3845,29 @@ void HTML__end_html_row(OUTPUT_STREAM) ; void HTML__end_html_table(OUTPUT_STREAM) ; #line 655 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__open_coloured_box(OUTPUT_STREAM, text_stream *classname, int rounding) ; -#line 675 "inweb/foundation-module/Chapter 5/HTML.w" +#line 663 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__close_coloured_box(OUTPUT_STREAM, text_stream *classname, int rounding) ; -#line 693 "inweb/foundation-module/Chapter 5/HTML.w" +#line 669 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__box_corner(OUTPUT_STREAM, text_stream *classname, text_stream *corner) ; -#line 703 "inweb/foundation-module/Chapter 5/HTML.w" +#line 679 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__comment(OUTPUT_STREAM, text_stream *text) ; -#line 707 "inweb/foundation-module/Chapter 5/HTML.w" +#line 683 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__heading(OUTPUT_STREAM, char *tag, text_stream *text) ; -#line 714 "inweb/foundation-module/Chapter 5/HTML.w" +#line 690 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__hr(OUTPUT_STREAM, char *class) ; -#line 879 "inweb/foundation-module/Chapter 5/HTML.w" +#line 855 "inweb/foundation-module/Chapter 5/HTML.w" wchar_t * HTML__translate_colour_name(wchar_t *original) ; -#line 887 "inweb/foundation-module/Chapter 5/HTML.w" +#line 863 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__begin_colour(OUTPUT_STREAM, text_stream *col) ; -#line 890 "inweb/foundation-module/Chapter 5/HTML.w" +#line 866 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__end_colour(OUTPUT_STREAM) ; -#line 897 "inweb/foundation-module/Chapter 5/HTML.w" +#line 873 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__begin_span(OUTPUT_STREAM, text_stream *class_name) ; -#line 904 "inweb/foundation-module/Chapter 5/HTML.w" +#line 880 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__end_span(OUTPUT_STREAM) ; -#line 912 "inweb/foundation-module/Chapter 5/HTML.w" +#line 888 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__write_xml_safe_text(OUTPUT_STREAM, text_stream *txt) ; -#line 943 "inweb/foundation-module/Chapter 5/HTML.w" +#line 919 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__put(OUTPUT_STREAM, int charcode) ; #line 106 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" ebook * Epub__new(text_stream *title, char *prefix) ; @@ -5565,10 +5570,6 @@ text_stream *TL_IS_720 = NULL; text_stream *TL_IS_721 = NULL; text_stream *TL_IS_722 = NULL; text_stream *TL_IS_723 = NULL; -text_stream *TL_IS_724 = NULL; -text_stream *TL_IS_725 = NULL; -text_stream *TL_IS_726 = NULL; -text_stream *TL_IS_727 = NULL; void register_tangled_text_literals(void); #line 57 "inweb/foundation-module/Chapter 2/Streams.w" #define WRITE(args...) Writers__printf(OUT, args) @@ -8989,11 +8990,11 @@ int CommandLine__read_pair_p(text_stream *opt, text_stream *opt_val, int N, ; innocuous = TRUE; break; case VERSION_CLSW: { PRINT("inweb"); - char *svn = "7.1.0-beta+1B10"; + char *svn = "7.1.0-beta+1B11"; if (svn[0]) PRINT(" version %s", svn); char *vname = "Escape to Danger"; if (vname[0]) PRINT(" '%s'", vname); - char *d = "13 June 2022"; + char *d = "16 June 2022"; if (d[0]) PRINT(" (%s)", d); PRINT("\n"); innocuous = TRUE; break; @@ -10450,12 +10451,16 @@ int Characters__islower(wchar_t c) { int Characters__isalnum(wchar_t c) { return isalnum((int) c); } +int Characters__iscntrl(wchar_t c) { + int i = c; + return ((i >= 0) && (i < 32)); +} int Characters__vowel(wchar_t c) { if ((c == 'a') || (c == 'e') || (c == 'i') || (c == 'o') || (c == 'u')) return TRUE; return FALSE; } -#line 37 "inweb/foundation-module/Chapter 4/Characters.w" +#line 41 "inweb/foundation-module/Chapter 4/Characters.w" int Characters__is_space_or_tab(int c) { if ((c == ' ') || (c == '\t')) return TRUE; return FALSE; @@ -10465,14 +10470,14 @@ int Characters__is_whitespace(int c) { return FALSE; } -#line 51 "inweb/foundation-module/Chapter 4/Characters.w" +#line 55 "inweb/foundation-module/Chapter 4/Characters.w" int Characters__is_babel_whitespace(int c) { if ((c == ' ') || (c == '\t') || (c == '\x0a') || (c == '\x0d') || (c == NEWLINE_IN_STRING)) return TRUE; return FALSE; } -#line 62 "inweb/foundation-module/Chapter 4/Characters.w" +#line 66 "inweb/foundation-module/Chapter 4/Characters.w" int Characters__combine_accent(int accent, int letter) { switch(accent) { case 0x0300: /* Unicode combining grave */ @@ -10522,7 +10527,7 @@ int Characters__combine_accent(int accent, int letter) { return '?'; } -#line 116 "inweb/foundation-module/Chapter 4/Characters.w" +#line 120 "inweb/foundation-module/Chapter 4/Characters.w" int Characters__make_filename_safe(int charcode) { charcode = Characters__remove_accent(charcode); if (charcode >= 128) charcode = '-'; @@ -10535,7 +10540,7 @@ wchar_t Characters__make_wchar_t_filename_safe(wchar_t charcode) { return charcode; } -#line 131 "inweb/foundation-module/Chapter 4/Characters.w" +#line 135 "inweb/foundation-module/Chapter 4/Characters.w" int Characters__remove_accent(int charcode) { switch (charcode) { case 0xC0: case 0xC1: case 0xC2: case 0xC3: @@ -10567,7 +10572,7 @@ wchar_t Characters__remove_wchar_t_accent(wchar_t charcode) { return (wchar_t) Characters__remove_accent((int) charcode); } -#line 165 "inweb/foundation-module/Chapter 4/Characters.w" +#line 169 "inweb/foundation-module/Chapter 4/Characters.w" int Characters__isalphabetic(int letter) { return Characters__isalpha((wchar_t) Characters__remove_accent(letter)); } @@ -11462,11 +11467,12 @@ int TextFiles__utf8_fgetc(FILE *from, const char **or_from, int escape_oddities, return '?'; } -#line 23 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 28 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__preprocess(filename *prototype, filename *F, text_stream *header, - linked_list *special_macros, general_pointer specifics, wchar_t comment_char) { + linked_list *special_macros, general_pointer specifics, wchar_t comment_char, + int encoding) { struct text_stream processed_file; - if (STREAM_OPEN_TO_FILE(&processed_file, F, ISO_ENC) == FALSE) + if (STREAM_OPEN_TO_FILE(&processed_file, F, encoding) == FALSE) Errors__fatal_with_file("unable to write tangled file", F); text_stream *OUT = &processed_file; WRITE("%S", header); @@ -11474,8 +11480,8 @@ void Preprocessor__preprocess(filename *prototype, filename *F, text_stream *hea preprocessor_state PPS; { -#line 67 "inweb/foundation-module/Chapter 4/Preprocessor.w" - PPS.dest = OUT; +#line 79 "inweb/foundation-module/Chapter 4/Preprocessor.w" + PPS.dest = Str__new(); PPS.suppress_newline = FALSE; PPS.last_line_was_blank = TRUE; PPS.defining = NULL; @@ -11488,18 +11494,24 @@ void Preprocessor__preprocess(filename *prototype, filename *F, text_stream *hea PPS.comment_character = comment_char; } -#line 32 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 38 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; TextFiles__read(prototype, FALSE, "can't open prototype file", TRUE, Preprocessor__scan_line, NULL, &PPS); + for (int i=0; iloop_var_name = Str__duplicate(name); } @@ -11507,12 +11519,12 @@ void Preprocessor__add_loop_iteration(preprocessor_loop *loop, text_stream *valu ADD_TO_LINKED_LIST(Str__duplicate(value), text_stream, loop->iterations); } -#line 98 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 110 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__scan_line(text_stream *line, text_file_position *tfp, void *X) { preprocessor_state *PPS = (preprocessor_state *) X; { -#line 110 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 123 "inweb/foundation-module/Chapter 4/Preprocessor.w" LOOP_THROUGH_TEXT(pos, line) { wchar_t c = Str__get(pos); if (c == PPS->comment_character) return; @@ -11520,15 +11532,44 @@ void Preprocessor__scan_line(text_stream *line, text_file_position *tfp, void *X } } -#line 100 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 112 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; { -#line 117 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 130 "inweb/foundation-module/Chapter 4/Preprocessor.w" + for (int i = 0; i < Str__len(line); i++) { + wchar_t c = Str__get_at(line, i); + if (c == '\\') { + wchar_t d = Str__get_at(line, i+1); + switch (d) { + case '{': + Str__put_at(line, i, PROTECTED_OPEN_BRACE_PPCHAR); + Str__put_at(line, i+1, PROTECTED_BLANK_PPCHAR); + break; + case '}': + Str__put_at(line, i, PROTECTED_CLOSE_BRACE_PPCHAR); + Str__put_at(line, i+1, PROTECTED_BLANK_PPCHAR); + break; + case '\\': + Str__put_at(line, i+1, PROTECTED_BLANK_PPCHAR); + break; + default: + Errors__in_text_file("backslash '\\' must be followed by '{', '}' or '\\'", tfp); + break; + } + } + } + +} +#line 113 "inweb/foundation-module/Chapter 4/Preprocessor.w" +; + +{ +#line 154 "inweb/foundation-module/Chapter 4/Preprocessor.w" match_results mr = Regexp__create_mr(); if (Regexp__match(&mr, line, L" *{define: *(%C+) *} *")) { -#line 125 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 162 "inweb/foundation-module/Chapter 4/Preprocessor.w" if (PPS->defining) Errors__in_text_file("nested definitions are not allowed", tfp); text_stream *name = mr.exp[0]; @@ -11539,11 +11580,11 @@ void Preprocessor__scan_line(text_stream *line, text_file_position *tfp, void *X return; } -#line 118 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 155 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; if (Regexp__match(&mr, line, L" *{define: *(%C+) (%c*)} *")) { -#line 135 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 172 "inweb/foundation-module/Chapter 4/Preprocessor.w" if (PPS->defining) Errors__in_text_file("nested definitions are not allowed", tfp); text_stream *name = mr.exp[0]; @@ -11554,11 +11595,11 @@ void Preprocessor__scan_line(text_stream *line, text_file_position *tfp, void *X return; } -#line 119 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 156 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; if (Regexp__match(&mr, line, L" *{end-define} *")) { -#line 150 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 187 "inweb/foundation-module/Chapter 4/Preprocessor.w" if (PPS->defining == NULL) Errors__in_text_file("{end-define} without {define: ...}", tfp); PPS->defining = NULL; @@ -11566,27 +11607,27 @@ void Preprocessor__scan_line(text_stream *line, text_file_position *tfp, void *X return; } -#line 120 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 157 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; if (PPS->defining) { -#line 145 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 182 "inweb/foundation-module/Chapter 4/Preprocessor.w" Preprocessor__add_line_to_macro(PPS->defining, line, tfp); Regexp__dispose_of(&mr); return; } -#line 121 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 158 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; Regexp__dispose_of(&mr); } -#line 101 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 114 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; Preprocessor__expand(line, tfp, PPS); { -#line 157 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 194 "inweb/foundation-module/Chapter 4/Preprocessor.w" if (PPS->suppress_newline == FALSE) { text_stream *OUT = PPS->dest; if (Str__len(line) == 0) { @@ -11600,11 +11641,11 @@ void Preprocessor__scan_line(text_stream *line, text_file_position *tfp, void *X PPS->suppress_newline = FALSE; } -#line 103 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 116 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; } -#line 180 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 217 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__expand(text_stream *text, text_file_position *tfp, preprocessor_state *PPS) { TEMPORARY_TEXT(before_matter) TEMPORARY_TEXT(braced_matter) @@ -11630,18 +11671,18 @@ void Preprocessor__expand(text_stream *text, text_file_position *tfp, preprocess if (after_times) { { -#line 217 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 254 "inweb/foundation-module/Chapter 4/Preprocessor.w" if (Preprocessor__acceptable_variable_name(braced_matter)) { { -#line 278 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 315 "inweb/foundation-module/Chapter 4/Preprocessor.w" Preprocessor__expand(before_matter, tfp, PPS); if (PPS->repeat_sp > 0) { WRITE_TO(PPS->dest, "{%S}", braced_matter); } else { { -#line 323 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 360 "inweb/foundation-module/Chapter 4/Preprocessor.w" preprocessor_variable *var = Preprocessor__find_variable(braced_matter, PPS->stack_frame); if (var) { @@ -11654,13 +11695,13 @@ void Preprocessor__expand(text_stream *text, text_file_position *tfp, preprocess } } -#line 282 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 319 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; } Preprocessor__expand(after_matter, tfp, PPS); } -#line 218 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 255 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; } else { text_stream *identifier = braced_matter; @@ -11672,7 +11713,7 @@ void Preprocessor__expand(text_stream *text, text_file_position *tfp, preprocess } { -#line 245 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 282 "inweb/foundation-module/Chapter 4/Preprocessor.w" preprocessor_macro *loop_mm; LOOP_OVER_LINKED_LIST(loop_mm, preprocessor_macro, PPS->known_macros) if (Str__len(loop_mm->loop_name) > 0) { @@ -11701,7 +11742,7 @@ void Preprocessor__expand(text_stream *text, text_file_position *tfp, preprocess } } -#line 227 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 264 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; preprocessor_macro *mm = Preprocessor__find_macro(PPS->known_macros, identifier); @@ -11713,7 +11754,7 @@ void Preprocessor__expand(text_stream *text, text_file_position *tfp, preprocess } else { { -#line 294 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 331 "inweb/foundation-module/Chapter 4/Preprocessor.w" if (mm->suppress_whitespace_when_expanding) { while (Characters__is_whitespace(Str__get_last_char(before_matter))) Str__delete_last_character(before_matter); @@ -11735,12 +11776,12 @@ void Preprocessor__expand(text_stream *text, text_file_position *tfp, preprocess } else { { -#line 338 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 375 "inweb/foundation-module/Chapter 4/Preprocessor.w" text_stream *parameter_values[MAX_PP_MACRO_PARAMETERS]; for (int i=0; ino_parameters; i++) if (parameter_values[i] == NULL) if (mm->parameters[i]->optional == FALSE) { @@ -11791,13 +11832,13 @@ void Preprocessor__expand(text_stream *text, text_file_position *tfp, preprocess } } -#line 341 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 378 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; preprocessor_loop *loop = NULL; if (mm->begins_loop) { -#line 402 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 439 "inweb/foundation-module/Chapter 4/Preprocessor.w" if (PPS->repeat_sp >= MAX_PREPROCESSOR_LOOP_DEPTH) { Errors__in_text_file("repetition too deep", tfp); } else { @@ -11812,27 +11853,27 @@ void Preprocessor__expand(text_stream *text, text_file_position *tfp, preprocess } } -#line 344 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 381 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; (*(mm->expander))(mm, PPS, parameter_values, loop, tfp); } -#line 313 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 350 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; if (mm->suppress_newline_after_expanding) PPS->suppress_newline = TRUE; } Preprocessor__expand(after_matter, tfp, PPS); } -#line 236 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 273 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; } Regexp__dispose_of(&mr); } } -#line 203 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 240 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; } else { WRITE_TO(PPS->dest, "%S", text); @@ -11842,7 +11883,7 @@ void Preprocessor__expand(text_stream *text, text_file_position *tfp, preprocess DISCARD_TEXT(after_matter) } -#line 419 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 456 "inweb/foundation-module/Chapter 4/Preprocessor.w" int Preprocessor__acceptable_variable_name(text_stream *name) { LOOP_THROUGH_TEXT(pos, name) { wchar_t c = Str__get(pos); @@ -11854,7 +11895,7 @@ int Preprocessor__acceptable_variable_name(text_stream *name) { return TRUE; } -#line 438 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 475 "inweb/foundation-module/Chapter 4/Preprocessor.w" text_stream *Preprocessor__read_variable(preprocessor_variable *var) { if (var == NULL) internal_error("no such pp variable"); @@ -11865,7 +11906,7 @@ void Preprocessor__write_variable(preprocessor_variable *var, text_stream *val) var->value = Str__duplicate(val); } -#line 458 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 495 "inweb/foundation-module/Chapter 4/Preprocessor.w" preprocessor_variable_set *Preprocessor__new_variable_set(preprocessor_variable_set *outer) { preprocessor_variable_set *set = CREATE(preprocessor_variable_set); @@ -11894,7 +11935,7 @@ preprocessor_variable *Preprocessor__find_variable(text_stream *name, return NULL; } -#line 490 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 527 "inweb/foundation-module/Chapter 4/Preprocessor.w" preprocessor_variable *Preprocessor__ensure_variable(text_stream *name, preprocessor_variable_set *in_set) { if (in_set == NULL) internal_error("variable without set"); @@ -11908,11 +11949,11 @@ preprocessor_variable *Preprocessor__ensure_variable(text_stream *name, return var; } -#line 549 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 586 "inweb/foundation-module/Chapter 4/Preprocessor.w" -#line 556 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 593 "inweb/foundation-module/Chapter 4/Preprocessor.w" -#line 567 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 604 "inweb/foundation-module/Chapter 4/Preprocessor.w" preprocessor_macro *Preprocessor__new_macro(linked_list *L, text_stream *name, text_stream *parameter_specification, void (*expander)(preprocessor_macro *, preprocessor_state *, text_stream **, preprocessor_loop *, text_file_position *), @@ -11922,7 +11963,7 @@ preprocessor_macro *Preprocessor__new_macro(linked_list *L, text_stream *name, preprocessor_macro *new_macro = CREATE(preprocessor_macro); { -#line 581 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 618 "inweb/foundation-module/Chapter 4/Preprocessor.w" new_macro->identifier = Str__duplicate(name); new_macro->no_parameters = 0; @@ -11937,11 +11978,11 @@ preprocessor_macro *Preprocessor__new_macro(linked_list *L, text_stream *name, new_macro->suppress_whitespace_when_expanding = TRUE; } -#line 574 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 611 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; { -#line 595 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 632 "inweb/foundation-module/Chapter 4/Preprocessor.w" text_stream *spec = Str__duplicate(parameter_specification); match_results mr = Regexp__create_mr(); while (Regexp__match(&mr, spec, L" *(%C+): *(%C+) *(%c*)")) { @@ -11954,7 +11995,7 @@ preprocessor_macro *Preprocessor__new_macro(linked_list *L, text_stream *name, } else { { -#line 613 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 650 "inweb/foundation-module/Chapter 4/Preprocessor.w" preprocessor_macro_parameter *new_parameter = CREATE(preprocessor_macro_parameter); new_parameter->name = Str__duplicate(par_name); new_parameter->definition_token = Str__duplicate(token_name); @@ -11966,7 +12007,7 @@ preprocessor_macro *Preprocessor__new_macro(linked_list *L, text_stream *name, new_macro->parameters[new_macro->no_parameters++] = new_parameter; } -#line 605 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 642 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; } } @@ -11975,13 +12016,13 @@ preprocessor_macro *Preprocessor__new_macro(linked_list *L, text_stream *name, Errors__in_text_file("parameter list for this definition is malformed", tfp); } -#line 575 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 612 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; ADD_TO_LINKED_LIST(new_macro, preprocessor_macro, L); return new_macro; } -#line 627 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 664 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__add_line_to_macro(preprocessor_macro *mm, text_stream *line, text_file_position *tfp) { if (mm->no_lines >= MAX_PP_MACRO_LINES) { @@ -11991,7 +12032,7 @@ void Preprocessor__add_line_to_macro(preprocessor_macro *mm, text_stream *line, } } -#line 645 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 682 "inweb/foundation-module/Chapter 4/Preprocessor.w" linked_list *Preprocessor__list_of_reserved_macros(linked_list *special_macros) { linked_list *L = NEW_LINKED_LIST(preprocessor_macro); Preprocessor__new_loop_macro(L, TL_IS_5, TL_IS_6, @@ -12046,7 +12087,7 @@ void Preprocessor__new_loop_macro(linked_list *L, text_stream *name, DISCARD_TEXT(subname) } -#line 702 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 739 "inweb/foundation-module/Chapter 4/Preprocessor.w" preprocessor_macro *Preprocessor__find_macro(linked_list *L, text_stream *name) { preprocessor_macro *mm; LOOP_OVER_LINKED_LIST(mm, preprocessor_macro, L) @@ -12055,7 +12096,7 @@ preprocessor_macro *Preprocessor__find_macro(linked_list *L, text_stream *name) return NULL; } -#line 717 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 754 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__default_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) { PPS->stack_frame = Preprocessor__new_variable_set(PPS->stack_frame); @@ -12069,7 +12110,7 @@ void Preprocessor__default_expander(preprocessor_macro *mm, preprocessor_state * PPS->stack_frame = PPS->stack_frame->outer; } -#line 734 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 771 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__set_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) { text_stream *name = parameter_values[0]; @@ -12082,7 +12123,7 @@ void Preprocessor__set_expander(preprocessor_macro *mm, preprocessor_state *PPS, Preprocessor__write_variable(var, value); } -#line 749 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 786 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__repeat_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) { text_stream *with = parameter_values[0]; @@ -12102,7 +12143,7 @@ void Preprocessor__repeat_expander(preprocessor_macro *mm, preprocessor_state *P Preprocessor__add_loop_iteration(loop, value); } -#line 778 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 815 "inweb/foundation-module/Chapter 4/Preprocessor.w" void Preprocessor__end_loop_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) { PPS->shadow_sp = 0; @@ -12118,7 +12159,7 @@ void Preprocessor__end_loop_expander(preprocessor_macro *mm, preprocessor_state LOOP_OVER_LINKED_LIST(value, text_stream, loop->iterations) { -#line 797 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 834 "inweb/foundation-module/Chapter 4/Preprocessor.w" Preprocessor__write_variable(loop_var, value); if (mm->span) { Preprocessor__expand(matter, tfp, PPS); @@ -12136,7 +12177,7 @@ void Preprocessor__end_loop_expander(preprocessor_macro *mm, preprocessor_state } } -#line 791 "inweb/foundation-module/Chapter 4/Preprocessor.w" +#line 828 "inweb/foundation-module/Chapter 4/Preprocessor.w" ; PPS->stack_frame = PPS->stack_frame->outer; } @@ -12965,10 +13006,11 @@ JSON_value *JSON__decode_error_q(text_stream *err, text_file_position *tfp, #line 260 "inweb/foundation-module/Chapter 4/JSON.w" JSON_value *JSON__decode_range(text_stream *T, int from, int to, text_file_position *tfp) { - int first_nws = -1, last_nws = -1, first_c = 0, last_c = 0; + int first_nws = -1, last_nws = -1; + wchar_t first_c = 0, last_c = 0; { -#line 288 "inweb/foundation-module/Chapter 4/JSON.w" +#line 289 "inweb/foundation-module/Chapter 4/JSON.w" for (int i=from; i from) && (Characters__is_whitespace(Str__get_at(T, to-1)))) to--; @@ -13137,7 +13181,7 @@ JSON_value *JSON__decode_number(text_stream *T, int from, int to, text_file_posi return value; } -#line 452 "inweb/foundation-module/Chapter 4/JSON.w" +#line 455 "inweb/foundation-module/Chapter 4/JSON.w" JSON_value *JSON__decode_string(text_stream *T, int from, int to, text_file_position *tfp) { TEMPORARY_TEXT(string) for (int i=from; i= 0) && (c < 32)) return JSON__decode_error(TL_IS_25, tfp); + if (Characters__iscntrl(c)) return JSON__decode_error(TL_IS_25, tfp); switch (c) { case 'b': c = 8; break; case 't': c = 9; break; @@ -13156,7 +13200,7 @@ JSON_value *JSON__decode_string(text_stream *T, int from, int to, text_file_posi case '/': break; case 'u': { -#line 486 "inweb/foundation-module/Chapter 4/JSON.w" +#line 489 "inweb/foundation-module/Chapter 4/JSON.w" if (i+4 >= to) return JSON__decode_error(TL_IS_27, tfp); int hex = 0; for (int j=0; j<4; j++) { @@ -13172,7 +13216,7 @@ JSON_value *JSON__decode_string(text_stream *T, int from, int to, text_file_posi i += 4; } -#line 468 "inweb/foundation-module/Chapter 4/JSON.w" +#line 471 "inweb/foundation-module/Chapter 4/JSON.w" ; break; default: return JSON__decode_error(TL_IS_26, tfp); } @@ -13186,7 +13230,7 @@ JSON_value *JSON__decode_string(text_stream *T, int from, int to, text_file_posi return val; } -#line 503 "inweb/foundation-module/Chapter 4/JSON.w" +#line 506 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__encode(OUTPUT_STREAM, JSON_value *J) { if (J == NULL) internal_error("no JSON value supplied"); switch (J->JSON_type) { @@ -13243,7 +13287,7 @@ void JSON__encode(OUTPUT_STREAM, JSON_value *J) { } } -#line 563 "inweb/foundation-module/Chapter 4/JSON.w" +#line 566 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__encode_string(OUTPUT_STREAM, text_stream *T) { LOOP_THROUGH_TEXT(pos, T) { wchar_t c = Str__get(pos); @@ -13255,14 +13299,14 @@ void JSON__encode_string(OUTPUT_STREAM, text_stream *T) { case 12: WRITE("\\f"); break; case 13: WRITE("\\r"); break; default: - if ((c >= 0) && (c < 32)) WRITE("\\u%04x", c); + if (Characters__iscntrl(c)) WRITE("\\u%04x", (int)c); else PUT(c); break; } } } -#line 595 "inweb/foundation-module/Chapter 4/JSON.w" +#line 598 "inweb/foundation-module/Chapter 4/JSON.w" JSON_requirement *JSON__single_choice(JSON_single_requirement *sing) { JSON_requirement *req = CREATE(JSON_requirement); @@ -13278,9 +13322,9 @@ JSON_requirement *JSON__add_alternative(JSON_requirement *so_far, return so_far; } -#line 621 "inweb/foundation-module/Chapter 4/JSON.w" +#line 624 "inweb/foundation-module/Chapter 4/JSON.w" -#line 626 "inweb/foundation-module/Chapter 4/JSON.w" +#line 629 "inweb/foundation-module/Chapter 4/JSON.w" JSON_single_requirement *JSON__require_requirement(JSON_requirement *req) { JSON_single_requirement *sing = CREATE(JSON_single_requirement); sing->this_requirement = req; @@ -13305,9 +13349,9 @@ JSON_single_requirement *JSON__require_type(int t) { return sing; } -#line 665 "inweb/foundation-module/Chapter 4/JSON.w" +#line 668 "inweb/foundation-module/Chapter 4/JSON.w" -#line 671 "inweb/foundation-module/Chapter 4/JSON.w" +#line 674 "inweb/foundation-module/Chapter 4/JSON.w" JSON_type *JSON__new_type_requirement(int t) { JSON_type *type = CREATE(JSON_type); @@ -13333,14 +13377,14 @@ JSON_type *JSON__new_type_requirement(int t) { return type; } -#line 700 "inweb/foundation-module/Chapter 4/JSON.w" +#line 703 "inweb/foundation-module/Chapter 4/JSON.w" JSON_single_requirement *JSON__require_array_of(JSON_requirement *E_req) { JSON_single_requirement *req = JSON__require_type(ARRAY_JSONTYPE); req->this_type->all_if_list = E_req; return req; } -#line 711 "inweb/foundation-module/Chapter 4/JSON.w" +#line 714 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__require_entry(JSON_single_requirement *array_sr, JSON_requirement *entry_sr) { if (array_sr == NULL) internal_error("no array"); if ((array_sr->this_type == NULL) || @@ -13349,7 +13393,7 @@ void JSON__require_entry(JSON_single_requirement *array_sr, JSON_requirement *en ADD_TO_LINKED_LIST(entry_sr, JSON_requirement, array_sr->this_type->if_list); } -#line 723 "inweb/foundation-module/Chapter 4/JSON.w" +#line 726 "inweb/foundation-module/Chapter 4/JSON.w" void JSON__require_pair(JSON_single_requirement *obj_sr, text_stream *key, JSON_requirement *req) { JSON__require_pair_inner(obj_sr, key, req, FALSE); } @@ -13373,7 +13417,7 @@ void JSON__require_pair_inner(JSON_single_requirement *obj_sr, text_stream *key, if (de) de->value = pr; } -#line 750 "inweb/foundation-module/Chapter 4/JSON.w" +#line 753 "inweb/foundation-module/Chapter 4/JSON.w" JSON_pair_requirement *JSON__look_up_pair(JSON_single_requirement *obj_sr, text_stream *key) { if (obj_sr == NULL) internal_error("no object"); if ((obj_sr->this_type == NULL) || @@ -13383,14 +13427,14 @@ JSON_pair_requirement *JSON__look_up_pair(JSON_single_requirement *obj_sr, text_ return de->value; } -#line 763 "inweb/foundation-module/Chapter 4/JSON.w" +#line 766 "inweb/foundation-module/Chapter 4/JSON.w" JSON_single_requirement *JSON__error_sr(text_stream *msg) { JSON_single_requirement *req = JSON__require_type(ERROR_JSONTYPE); req->this_type->if_error = Str__duplicate(msg); return req; } -#line 781 "inweb/foundation-module/Chapter 4/JSON.w" +#line 784 "inweb/foundation-module/Chapter 4/JSON.w" int JSON__validate(JSON_value *val, JSON_requirement *req, linked_list *errs) { lifo_stack *location = NEW_LIFO_STACK(text_stream); if ((val) && (val->JSON_type == ARRAY_JSONTYPE)) { @@ -13419,7 +13463,7 @@ void JSON__validation_error(linked_list *errs, text_stream *err, lifo_stack *loc } } -#line 815 "inweb/foundation-module/Chapter 4/JSON.w" +#line 818 "inweb/foundation-module/Chapter 4/JSON.w" int JSON__validate_r(JSON_value *val, JSON_requirement *req, linked_list *errs, lifo_stack *location) { if (val == NULL) internal_error("no value"); @@ -13436,7 +13480,7 @@ int JSON__validate_r(JSON_value *val, JSON_requirement *req, linked_list *errs, return FALSE; } -#line 834 "inweb/foundation-module/Chapter 4/JSON.w" +#line 837 "inweb/foundation-module/Chapter 4/JSON.w" int JSON__validate_single_r(JSON_value *val, JSON_single_requirement *req, linked_list *errs, lifo_stack *location) { if (val->JSON_type == ERROR_JSONTYPE) { @@ -13446,15 +13490,15 @@ int JSON__validate_single_r(JSON_value *val, JSON_single_requirement *req, } if (req->this_requirement) { -#line 848 "inweb/foundation-module/Chapter 4/JSON.w" +#line 851 "inweb/foundation-module/Chapter 4/JSON.w" return JSON__validate_r(val, req->this_requirement, errs, location); } -#line 841 "inweb/foundation-module/Chapter 4/JSON.w" +#line 844 "inweb/foundation-module/Chapter 4/JSON.w" ; if (req->this_value) { -#line 851 "inweb/foundation-module/Chapter 4/JSON.w" +#line 854 "inweb/foundation-module/Chapter 4/JSON.w" if (JSON__eq(val, req->this_value) == FALSE) { TEMPORARY_TEXT(msg) WRITE_TO(msg, "value "); @@ -13467,14 +13511,14 @@ int JSON__validate_single_r(JSON_value *val, JSON_single_requirement *req, return TRUE; } -#line 842 "inweb/foundation-module/Chapter 4/JSON.w" +#line 845 "inweb/foundation-module/Chapter 4/JSON.w" ; if (req->this_type) { -#line 863 "inweb/foundation-module/Chapter 4/JSON.w" +#line 866 "inweb/foundation-module/Chapter 4/JSON.w" { -#line 872 "inweb/foundation-module/Chapter 4/JSON.w" +#line 875 "inweb/foundation-module/Chapter 4/JSON.w" if (val->JSON_type != req->this_type->JSON_type) { if (errs) { TEMPORARY_TEXT(msg) @@ -13489,13 +13533,13 @@ int JSON__validate_single_r(JSON_value *val, JSON_single_requirement *req, } } -#line 863 "inweb/foundation-module/Chapter 4/JSON.w" +#line 866 "inweb/foundation-module/Chapter 4/JSON.w" ; int outcome = TRUE; if (val->JSON_type == ARRAY_JSONTYPE) { -#line 886 "inweb/foundation-module/Chapter 4/JSON.w" +#line 889 "inweb/foundation-module/Chapter 4/JSON.w" int count = 0; JSON_value *E; LOOP_OVER_LINKED_LIST(E, JSON_value, val->if_list) { @@ -13522,17 +13566,17 @@ int JSON__validate_single_r(JSON_value *val, JSON_single_requirement *req, } } -#line 866 "inweb/foundation-module/Chapter 4/JSON.w" +#line 869 "inweb/foundation-module/Chapter 4/JSON.w" ; if (val->JSON_type == OBJECT_JSONTYPE) { -#line 912 "inweb/foundation-module/Chapter 4/JSON.w" +#line 915 "inweb/foundation-module/Chapter 4/JSON.w" text_stream *key; LOOP_OVER_LINKED_LIST(key, text_stream, val->list_if_object) { -#line 924 "inweb/foundation-module/Chapter 4/JSON.w" +#line 927 "inweb/foundation-module/Chapter 4/JSON.w" JSON_value *E = Dictionaries__read_value(val->dictionary_if_object, key); if (E == NULL) internal_error("broken JSON object dictionary"); JSON_pair_requirement *pr = JSON__look_up_pair(req, key); @@ -13552,7 +13596,7 @@ int JSON__validate_single_r(JSON_value *val, JSON_single_requirement *req, DISCARD_TEXT(at) } -#line 914 "inweb/foundation-module/Chapter 4/JSON.w" +#line 917 "inweb/foundation-module/Chapter 4/JSON.w" ; LOOP_OVER_LINKED_LIST(key, text_stream, req->this_type->list_if_object) { JSON_pair_requirement *pr = @@ -13561,7 +13605,7 @@ int JSON__validate_single_r(JSON_value *val, JSON_single_requirement *req, if (pr->optional == FALSE) { -#line 943 "inweb/foundation-module/Chapter 4/JSON.w" +#line 946 "inweb/foundation-module/Chapter 4/JSON.w" JSON_value *E = JSON__look_up_object(val, key); if (E == NULL) { TEMPORARY_TEXT(msg) @@ -13572,33 +13616,34 @@ int JSON__validate_single_r(JSON_value *val, JSON_single_requirement *req, } } -#line 920 "inweb/foundation-module/Chapter 4/JSON.w" +#line 923 "inweb/foundation-module/Chapter 4/JSON.w" ; } } -#line 868 "inweb/foundation-module/Chapter 4/JSON.w" +#line 871 "inweb/foundation-module/Chapter 4/JSON.w" ; return outcome; } -#line 843 "inweb/foundation-module/Chapter 4/JSON.w" +#line 846 "inweb/foundation-module/Chapter 4/JSON.w" ; internal_error("bad single requirement"); } -#line 984 "inweb/foundation-module/Chapter 4/JSON.w" +#line 987 "inweb/foundation-module/Chapter 4/JSON.w" JSON_requirement *JSON__decode_req(text_stream *T, dictionary *known_names) { return JSON__decode_req_range(T, 0, Str__len(T), known_names); } -#line 992 "inweb/foundation-module/Chapter 4/JSON.w" +#line 995 "inweb/foundation-module/Chapter 4/JSON.w" JSON_requirement *JSON__decode_req_range(text_stream *T, int from, int to, dictionary *known_names) { - int first_nws = -1, last_nws = -1, first_c = 0, last_c = 0; + int first_nws = -1, last_nws = -1; + wchar_t first_c = 0, last_c = 0; { -#line 1108 "inweb/foundation-module/Chapter 4/JSON.w" +#line 1113 "inweb/foundation-module/Chapter 4/JSON.w" for (int i=from; iname) > 0) { JSON_requirement *req = @@ -14543,37 +14591,13 @@ void HTML__end_html_table(OUTPUT_STREAM) { #line 655 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__open_coloured_box(OUTPUT_STREAM, text_stream *classname, int rounding) { HTML_OPEN_WITH("table", - "width=\"100%%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" " + "width=\"100%%\" cellpadding=\"6\" cellspacing=\"0\" border=\"0\" " "class=\"%S\"", classname); HTML_OPEN("tr"); - HTML_OPEN_WITH("td", "width=\"%d\"", CORNER_SIZE); - if (rounding & ROUND_BOX_TOP) HTML__box_corner(OUT, classname, TL_IS_54); - HTML_CLOSE("td"); - HTML_OPEN("td"); - HTML_CLOSE("td"); - HTML_OPEN_WITH("td", "width=\"%d\"", CORNER_SIZE); - if (rounding & ROUND_BOX_TOP) HTML__box_corner(OUT, classname, TL_IS_55); - HTML_CLOSE("td"); - HTML_CLOSE("tr"); - HTML_OPEN("tr"); - HTML_OPEN_WITH("td", "width=\"%d\"", CORNER_SIZE); - HTML_CLOSE("td"); HTML_OPEN("td"); } void HTML__close_coloured_box(OUTPUT_STREAM, text_stream *classname, int rounding) { - HTML_CLOSE("td"); - HTML_OPEN_WITH("td", "width=\"%d\"", CORNER_SIZE); - HTML_CLOSE("td"); - HTML_CLOSE("tr"); - HTML_OPEN("tr"); - HTML_OPEN_WITH("td", "width=\"%d\"", CORNER_SIZE); - if (rounding & ROUND_BOX_BOTTOM) HTML__box_corner(OUT, classname, TL_IS_56); - HTML_CLOSE("td"); - HTML_OPEN("td"); - HTML_CLOSE("td"); - HTML_OPEN_WITH("td", "width=\"%d\"", CORNER_SIZE); - if (rounding & ROUND_BOX_BOTTOM) HTML__box_corner(OUT, classname, TL_IS_57); HTML_CLOSE("td"); HTML_CLOSE("tr"); HTML__end_html_table(OUT); @@ -14586,7 +14610,7 @@ void HTML__box_corner(OUTPUT_STREAM, text_stream *classname, text_stream *corner corner, classname, CORNER_SIZE, CORNER_SIZE); } -#line 703 "inweb/foundation-module/Chapter 5/HTML.w" +#line 679 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__comment(OUTPUT_STREAM, text_stream *text) { WRITE("\n", text); } @@ -14603,7 +14627,7 @@ void HTML__hr(OUTPUT_STREAM, char *class) { else HTML_TAG("hr"); } -#line 727 "inweb/foundation-module/Chapter 5/HTML.w" +#line 703 "inweb/foundation-module/Chapter 5/HTML.w" colour_translation table_of_translations[] = { { L"Alice Blue", L"F0F8FF" }, @@ -14752,7 +14776,7 @@ colour_translation table_of_translations[] = { { L"", L"" } }; -#line 879 "inweb/foundation-module/Chapter 5/HTML.w" +#line 855 "inweb/foundation-module/Chapter 5/HTML.w" wchar_t *HTML__translate_colour_name(wchar_t *original) { for (int j=0; Wide__cmp(table_of_translations[j].chip_name, L""); j++) if (Wide__cmp(table_of_translations[j].chip_name, original) == 0) @@ -14760,7 +14784,7 @@ wchar_t *HTML__translate_colour_name(wchar_t *original) { return NULL; } -#line 887 "inweb/foundation-module/Chapter 5/HTML.w" +#line 863 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__begin_colour(OUTPUT_STREAM, text_stream *col) { HTML_OPEN_WITH("span", "style='color:#%S'", col); } @@ -14768,7 +14792,7 @@ void HTML__end_colour(OUTPUT_STREAM) { HTML_CLOSE("span"); } -#line 897 "inweb/foundation-module/Chapter 5/HTML.w" +#line 873 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__begin_span(OUTPUT_STREAM, text_stream *class_name) { if (Str__len(class_name) > 0) { HTML_OPEN_WITH("span", "class=\"%S\"", class_name); @@ -14780,7 +14804,7 @@ void HTML__end_span(OUTPUT_STREAM) { HTML_CLOSE("span"); } -#line 912 "inweb/foundation-module/Chapter 5/HTML.w" +#line 888 "inweb/foundation-module/Chapter 5/HTML.w" void HTML__write_xml_safe_text(OUTPUT_STREAM, text_stream *txt) { LOOP_THROUGH_TEXT(pos, txt) { wchar_t c = Str__get(pos); @@ -14793,20 +14817,20 @@ void HTML__write_xml_safe_text(OUTPUT_STREAM, text_stream *txt) { } } -#line 940 "inweb/foundation-module/Chapter 5/HTML.w" +#line 916 "inweb/foundation-module/Chapter 5/HTML.w" text_stream *source_ref_fields[3] = { NULL, NULL, NULL }; /* paraphrase, filename, line */ int source_ref_field = -1; /* which field we are buffering */ void HTML__put(OUTPUT_STREAM, int charcode) { { -#line 967 "inweb/foundation-module/Chapter 5/HTML.w" +#line 943 "inweb/foundation-module/Chapter 5/HTML.w" if ((source_ref_field >= 0) && (charcode != SOURCE_REF_CHAR)) { PUT_TO(source_ref_fields[source_ref_field], charcode); return; } } -#line 944 "inweb/foundation-module/Chapter 5/HTML.w" +#line 920 "inweb/foundation-module/Chapter 5/HTML.w" ; switch(charcode) { case '"': WRITE("""); break; @@ -14817,14 +14841,14 @@ void HTML__put(OUTPUT_STREAM, int charcode) { #ifdef PROBLEMS_MODULE case FORCE_NEW_PARA_CHAR: HTML_CLOSE("p"); HTML_OPEN_WITH("p", "class=\"in2\""); - HTML__icon_with_tooltip(OUT, TL_IS_58, NULL, NULL); + HTML__icon_with_tooltip(OUT, TL_IS_54, NULL, NULL); WRITE(" "); break; #endif #ifdef WORDS_MODULE case SOURCE_REF_CHAR: { -#line 972 "inweb/foundation-module/Chapter 5/HTML.w" +#line 948 "inweb/foundation-module/Chapter 5/HTML.w" source_ref_field++; if (source_ref_field == 3) { source_ref_field = -1; @@ -14841,7 +14865,7 @@ void HTML__put(OUTPUT_STREAM, int charcode) { } } -#line 959 "inweb/foundation-module/Chapter 5/HTML.w" +#line 935 "inweb/foundation-module/Chapter 5/HTML.w" ; break; #endif @@ -14984,14 +15008,14 @@ pathname *Epub__begin_construction(ebook *B, pathname *P, filename *cover_image) B->eventual_epub = Filenames__in(P, TEMP); DISCARD_TEXT(TEMP) - pathname *Holder = Pathnames__down(P, TL_IS_59); + pathname *Holder = Pathnames__down(P, TL_IS_55); if (Pathnames__create_in_file_system(Holder) == FALSE) return NULL; B->holder = Holder; { #line 245 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" - filename *Mimetype = Filenames__in(Holder, TL_IS_61); + filename *Mimetype = Filenames__in(Holder, TL_IS_57); text_stream EM_struct; text_stream *OUT = &EM_struct; if (STREAM_OPEN_TO_FILE(OUT, Mimetype, ISO_ENC) == FALSE) Errors__fatal_with_file("unable to open mimetype file for output: %f", @@ -15005,9 +15029,9 @@ pathname *Epub__begin_construction(ebook *B, pathname *P, filename *cover_image) { #line 254 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" - pathname *META_INF = Pathnames__down(Holder, TL_IS_62); + pathname *META_INF = Pathnames__down(Holder, TL_IS_58); if (Pathnames__create_in_file_system(META_INF) == FALSE) return NULL; - filename *container = Filenames__in(META_INF, TL_IS_63); + filename *container = Filenames__in(META_INF, TL_IS_59); text_stream C_struct; text_stream *OUT = &C_struct; if (STREAM_OPEN_TO_FILE(OUT, container, ISO_ENC) == FALSE) Errors__fatal_with_file("unable to open container file for output: %f", @@ -15027,18 +15051,18 @@ pathname *Epub__begin_construction(ebook *B, pathname *P, filename *cover_image) } #line 236 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" ; - pathname *OEBPS = Pathnames__down(Holder, TL_IS_60); + pathname *OEBPS = Pathnames__down(Holder, TL_IS_56); if (Pathnames__create_in_file_system(OEBPS) == FALSE) return NULL; if (cover_image) { #line 280 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" - filename *cover = Filenames__in(OEBPS, TL_IS_64); + filename *cover = Filenames__in(OEBPS, TL_IS_60); text_stream C_struct; text_stream *OUT = &C_struct; if (STREAM_OPEN_TO_FILE(OUT, cover, ISO_ENC) == FALSE) Errors__fatal_with_file("unable to open cover file for output: %f", cover); - Epub__note_page(B, cover, TL_IS_65, TL_IS_66); + Epub__note_page(B, cover, TL_IS_61, TL_IS_62); HTML__declare_as_HTML(OUT, TRUE); HTML__begin_head(OUT, NULL); @@ -15095,7 +15119,7 @@ void Epub__end_construction(ebook *B) { { #line 335 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" - filename *content = Filenames__in(B->OEBPS_path, TL_IS_67); + filename *content = Filenames__in(B->OEBPS_path, TL_IS_63); text_stream C_struct; text_stream *OUT = &C_struct; if (STREAM_OPEN_TO_FILE(OUT, content, UTF8_ENC) == FALSE) Errors__fatal_with_file("unable to open content file for output: %f", @@ -15220,7 +15244,7 @@ void Epub__end_construction(ebook *B) { { #line 434 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" - filename *toc = Filenames__in(B->OEBPS_path, TL_IS_68); + filename *toc = Filenames__in(B->OEBPS_path, TL_IS_64); text_stream C_struct; text_stream *OUT = &C_struct; if (STREAM_OPEN_TO_FILE(OUT, toc, UTF8_ENC) == FALSE) Errors__fatal_with_file("unable to open ncx file for output: %f", @@ -15488,7 +15512,7 @@ void Epub__end_construction(ebook *B) { { #line 551 "inweb/foundation-module/Chapter 5/Epub Ebooks.w" - pathname *up = Pathnames__from_text(TL_IS_69); + pathname *up = Pathnames__from_text(TL_IS_65); filename *ePub_relative = Filenames__in(up, Filenames__get_leafname(B->eventual_epub)); @@ -16946,7 +16970,7 @@ semver_range *VersionNumberRanges__compatibility_range(semantic_version_number V semantic_version_number W = VersionNumbers__null(); W.version_numbers[0] = V.version_numbers[0] + 1; W.prerelease_segments = NEW_LINKED_LIST(text_stream); - ADD_TO_LINKED_LIST(TL_IS_70, text_stream, W.prerelease_segments); + ADD_TO_LINKED_LIST(TL_IS_66, text_stream, W.prerelease_segments); R->upper.end_value = W; } return R; @@ -17110,7 +17134,7 @@ web_md *WebMetadata__get(pathname *P, filename *alt_F, int syntax_version, { #line 141 "inweb/foundation-module/Chapter 8/Web Structure.w" int sequential = FALSE; /* are we numbering sections sequentially? */ - if (Str__eq(Bibliographic__get_datum(Wm, TL_IS_71), TL_IS_72)) + if (Str__eq(Bibliographic__get_datum(Wm, TL_IS_67), TL_IS_68)) sequential = TRUE; chapter_md *Cm; section_md *Sm; @@ -17277,9 +17301,9 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, { #line 346 "inweb/foundation-module/Chapter 8/Web Structure.w" - if (Str__eq(line, TL_IS_73)) + if (Str__eq(line, TL_IS_69)) RS->Wm->default_syntax = V1_SYNTAX; - else if (Str__eq(line, TL_IS_74)) + else if (Str__eq(line, TL_IS_70)) RS->Wm->default_syntax = V2_SYNTAX; } @@ -17293,9 +17317,9 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, { #line 357 "inweb/foundation-module/Chapter 8/Web Structure.w" RS->halted = TRUE; - text_stream *new_chapter_range = TL_IS_75; + text_stream *new_chapter_range = TL_IS_71; text_stream *language_name = NULL; - line = TL_IS_76; + line = TL_IS_72; { #line 560 "inweb/foundation-module/Chapter 8/Web Structure.w" @@ -17325,7 +17349,7 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, } #line 361 "inweb/foundation-module/Chapter 8/Web Structure.w" ; - line = TL_IS_77; + line = TL_IS_73; filename_of_single_file_web = tfp->text_file_filename; { @@ -17380,7 +17404,7 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, { #line 635 "inweb/foundation-module/Chapter 8/Web Structure.w" text_stream *p = language_name; - if (Str__len(p) == 0) p = Bibliographic__get_datum(RS->Wm, TL_IS_81); + if (Str__len(p) == 0) p = Bibliographic__get_datum(RS->Wm, TL_IS_77); Sm->sect_independent_language = Str__duplicate(p); } @@ -17523,7 +17547,7 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, #line 552 "inweb/foundation-module/Chapter 8/Web Structure.w" match_results mr = Regexp__create_mr(); if (Regexp__match(&mr, language_name, L" *")) - language_name = Bibliographic__get_datum(RS->Wm, TL_IS_80); + language_name = Bibliographic__get_datum(RS->Wm, TL_IS_76); else if (Regexp__match(&mr, language_name, L" *(%c*?) *")) language_name = mr.exp[0]; Regexp__dispose_of(&mr); @@ -17558,13 +17582,13 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, } else if (Regexp__match(&mr, line, L"Header: (%c+)")) { pathname *P = RS->path_to; if (P == NULL) P = RS->Wm->path_to_web; - P = Pathnames__down(P, TL_IS_78); + P = Pathnames__down(P, TL_IS_74); filename *HF = Filenames__in(P, mr.exp[0]); ADD_TO_LINKED_LIST(HF, filename, RS->Wm->header_filenames); this_is_a_chapter = FALSE; } else if (Regexp__match(&mr, line, L"Import: (%c+)")) { if (RS->halt_at_at) - Errors__in_text_file_S(TL_IS_79, tfp); + Errors__in_text_file_S(TL_IS_75, tfp); else if (RS->import_from) { module *imported = WebModules__find(RS->Wm, RS->import_from, mr.exp[0], RS->path_to_inweb); @@ -17699,7 +17723,7 @@ void WebMetadata__read_contents_line(text_stream *line, text_file_position *tfp, { #line 635 "inweb/foundation-module/Chapter 8/Web Structure.w" text_stream *p = language_name; - if (Str__len(p) == 0) p = Bibliographic__get_datum(RS->Wm, TL_IS_81); + if (Str__len(p) == 0) p = Bibliographic__get_datum(RS->Wm, TL_IS_77); Sm->sect_independent_language = Str__duplicate(p); } @@ -17754,7 +17778,7 @@ int WebMetadata__directory_looks_like_a_web(pathname *P) { } filename *WebMetadata__contents_filename(pathname *P) { - return Filenames__in(P, TL_IS_82); + return Filenames__in(P, TL_IS_78); } #line 673 "inweb/foundation-module/Chapter 8/Web Structure.w" @@ -17793,38 +17817,38 @@ int Bibliographic__datum_on_or_off(web_md *Wm, text_stream *key) { void Bibliographic__initialise_data(web_md *Wm) { web_bibliographic_datum *bd; - bd = Bibliographic__set_datum(Wm, TL_IS_83, NULL); bd->declaration_mandatory = TRUE; - bd = Bibliographic__set_datum(Wm, TL_IS_84, NULL); bd->declaration_mandatory = TRUE; - bd = Bibliographic__set_datum(Wm, TL_IS_85, TL_IS_86); - bd = Bibliographic__set_datum(Wm, TL_IS_87, TL_IS_88); + bd = Bibliographic__set_datum(Wm, TL_IS_79, NULL); bd->declaration_mandatory = TRUE; + bd = Bibliographic__set_datum(Wm, TL_IS_80, NULL); bd->declaration_mandatory = TRUE; + bd = Bibliographic__set_datum(Wm, TL_IS_81, TL_IS_82); + bd = Bibliographic__set_datum(Wm, TL_IS_83, TL_IS_84); - bd = Bibliographic__set_datum(Wm, TL_IS_89, NULL); - bd->alias = Bibliographic__set_datum(Wm, TL_IS_90, NULL); /* alias US to UK spelling */ + bd = Bibliographic__set_datum(Wm, TL_IS_85, NULL); + bd->alias = Bibliographic__set_datum(Wm, TL_IS_86, NULL); /* alias US to UK spelling */ + Bibliographic__set_datum(Wm, TL_IS_87, NULL); + Bibliographic__set_datum(Wm, TL_IS_88, NULL); + Bibliographic__set_datum(Wm, TL_IS_89, NULL); + Bibliographic__set_datum(Wm, TL_IS_90, NULL); Bibliographic__set_datum(Wm, TL_IS_91, NULL); Bibliographic__set_datum(Wm, TL_IS_92, NULL); - Bibliographic__set_datum(Wm, TL_IS_93, NULL); - Bibliographic__set_datum(Wm, TL_IS_94, NULL); + Bibliographic__set_datum(Wm, TL_IS_93, TL_IS_94); Bibliographic__set_datum(Wm, TL_IS_95, NULL); Bibliographic__set_datum(Wm, TL_IS_96, NULL); - Bibliographic__set_datum(Wm, TL_IS_97, TL_IS_98); - Bibliographic__set_datum(Wm, TL_IS_99, NULL); - Bibliographic__set_datum(Wm, TL_IS_100, NULL); - Bibliographic__set_datum(Wm, TL_IS_101, NULL); + Bibliographic__set_datum(Wm, TL_IS_97, NULL); + bd = Bibliographic__set_datum(Wm, TL_IS_98, TL_IS_99); bd->on_or_off = TRUE; + bd = Bibliographic__set_datum(Wm, TL_IS_100, TL_IS_101); bd->on_or_off = TRUE; bd = Bibliographic__set_datum(Wm, TL_IS_102, TL_IS_103); bd->on_or_off = TRUE; bd = Bibliographic__set_datum(Wm, TL_IS_104, TL_IS_105); bd->on_or_off = TRUE; - bd = Bibliographic__set_datum(Wm, TL_IS_106, TL_IS_107); bd->on_or_off = TRUE; - bd = Bibliographic__set_datum(Wm, TL_IS_108, TL_IS_109); bd->on_or_off = TRUE; + bd = Bibliographic__set_datum(Wm, TL_IS_106, TL_IS_107); + bd = Bibliographic__set_datum(Wm, TL_IS_108, TL_IS_109); bd = Bibliographic__set_datum(Wm, TL_IS_110, TL_IS_111); bd = Bibliographic__set_datum(Wm, TL_IS_112, TL_IS_113); bd = Bibliographic__set_datum(Wm, TL_IS_114, TL_IS_115); bd = Bibliographic__set_datum(Wm, TL_IS_116, TL_IS_117); bd = Bibliographic__set_datum(Wm, TL_IS_118, TL_IS_119); - bd = Bibliographic__set_datum(Wm, TL_IS_120, TL_IS_121); - bd = Bibliographic__set_datum(Wm, TL_IS_122, TL_IS_123); - bd = Bibliographic__set_datum(Wm, TL_IS_124, NULL); - bd = Bibliographic__set_datum(Wm, TL_IS_125, TL_IS_126); + bd = Bibliographic__set_datum(Wm, TL_IS_120, NULL); + bd = Bibliographic__set_datum(Wm, TL_IS_121, TL_IS_122); } #line 86 "inweb/foundation-module/Chapter 8/Bibliographic Data for Webs.w" @@ -17886,7 +17910,7 @@ web_bibliographic_datum *Bibliographic__set_datum(web_md *Wm, text_stream *key, Str__copy(recapped, val); LOOP_THROUGH_TEXT(P, recapped) Str__put(P, Characters__toupper(Str__get(P))); - Bibliographic__set_datum(Wm, TL_IS_127, recapped); + Bibliographic__set_datum(Wm, TL_IS_123, recapped); DISCARD_TEXT(recapped) } @@ -17904,7 +17928,7 @@ module *WebModules__new(text_stream *name, pathname *at, int m) { M->module_name = Str__duplicate(name); M->dependencies = NEW_LINKED_LIST(module); M->origin_marker = m; - M->module_tag = TL_IS_128; + M->module_tag = TL_IS_124; M->chapters_md = NEW_LINKED_LIST(chapter_md); M->sections_md = NEW_LINKED_LIST(section_md); return M; @@ -17912,7 +17936,7 @@ module *WebModules__new(text_stream *name, pathname *at, int m) { #line 52 "inweb/foundation-module/Chapter 8/Web Modules.w" module *WebModules__create_main_module(web_md *WS) { - return WebModules__new(TL_IS_129, WS->path_to_web, READING_WEB_MOM); + return WebModules__new(TL_IS_125, WS->path_to_web, READING_WEB_MOM); } #line 63 "inweb/foundation-module/Chapter 8/Web Modules.w" @@ -18181,9 +18205,9 @@ int WebModules__named_reference(module **return_M, section_md **return_Sm, #line 10 "inweb/foundation-module/Chapter 8/Build Files.w" filename *BuildFiles__build_file_for_web(web_md *WS) { - filename *F = Filenames__in(WS->path_to_web, TL_IS_130); + filename *F = Filenames__in(WS->path_to_web, TL_IS_126); if (TextFiles__exists(F)) return F; - F = Filenames__in(NULL, TL_IS_131); + F = Filenames__in(NULL, TL_IS_127); if (TextFiles__exists(F)) return F; return NULL; } @@ -18237,25 +18261,25 @@ void BuildFiles__set_bibliographic_data_for(web_md *WS) { if (F) { build_file_data bfd = BuildFiles__read(F); if (Str__len(bfd.prerelease_text) > 0) - Bibliographic__set_datum(WS, TL_IS_132, bfd.prerelease_text); + Bibliographic__set_datum(WS, TL_IS_128, bfd.prerelease_text); if (Str__len(bfd.build_code) > 0) - Bibliographic__set_datum(WS, TL_IS_133, bfd.build_code); + Bibliographic__set_datum(WS, TL_IS_129, bfd.build_code); if (Str__len(bfd.build_date) > 0) - Bibliographic__set_datum(WS, TL_IS_134, bfd.build_date); + Bibliographic__set_datum(WS, TL_IS_130, bfd.build_date); } } #line 99 "inweb/foundation-module/Chapter 8/Build Files.w" void BuildFiles__deduce_semver(web_md *WS) { TEMPORARY_TEXT(combined) - text_stream *s = Bibliographic__get_datum(WS, TL_IS_135); + text_stream *s = Bibliographic__get_datum(WS, TL_IS_131); if (Str__len(s) > 0) WRITE_TO(combined, "%S", s); else { - text_stream *v = Bibliographic__get_datum(WS, TL_IS_136); + text_stream *v = Bibliographic__get_datum(WS, TL_IS_132); if (Str__len(v) > 0) WRITE_TO(combined, "%S", v); - text_stream *p = Bibliographic__get_datum(WS, TL_IS_137); + text_stream *p = Bibliographic__get_datum(WS, TL_IS_133); if (Str__len(p) > 0) WRITE_TO(combined, "-%S", p); - text_stream *b = Bibliographic__get_datum(WS, TL_IS_138); + text_stream *b = Bibliographic__get_datum(WS, TL_IS_134); if (Str__len(b) > 0) WRITE_TO(combined, "+%S", b); } if (Str__len(combined) > 0) { @@ -18265,7 +18289,7 @@ void BuildFiles__deduce_semver(web_md *WS) { "Combined version '%S' does not comply with the semver standard", combined); } else { - Bibliographic__set_datum(WS, TL_IS_139, combined); + Bibliographic__set_datum(WS, TL_IS_135, combined); } } DISCARD_TEXT(combined) @@ -18406,7 +18430,7 @@ void SimpleTangler__tangle_L3(OUTPUT_STREAM, text_stream *text, if (F) { Input_File = Filenames__fopen(F, "r"); } else if (Str__len(leafname) > 0) { - pathname *P = Pathnames__down(docket->web_path, TL_IS_140); + pathname *P = Pathnames__down(docket->web_path, TL_IS_136); Input_File = Filenames__fopen(Filenames__in(P, leafname), "r"); } if (Input_File == NULL) @@ -18812,13 +18836,13 @@ int main(int argc, char **argv) { inweb_instructions args = Configuration__read(argc, argv); verbose_mode = args.verbose_switch; fundamental_mode = args.inweb_mode; - path_to_inweb = Pathnames__installation_path("INWEB_PATH", TL_IS_141); + path_to_inweb = Pathnames__installation_path("INWEB_PATH", TL_IS_137); if (verbose_mode) { PRINT("Installation path is %p\n", path_to_inweb); Locales__write_locales(STDOUT); } - path_to_inweb_patterns = Pathnames__down(path_to_inweb, TL_IS_142); - path_to_inweb_materials = Pathnames__down(path_to_inweb, TL_IS_143); + path_to_inweb_patterns = Pathnames__down(path_to_inweb, TL_IS_138); + path_to_inweb_materials = Pathnames__down(path_to_inweb, TL_IS_139); Main__follow_instructions(&args); @@ -18848,11 +18872,11 @@ void Main__follow_instructions(inweb_instructions *ins) { { #line 115 "inweb/Chapter 1/Program Control.w" if ((ins->makefile_setting) && (ins->prototype_setting == NULL)) - ins->prototype_setting = Filenames__from_text(TL_IS_144); + ins->prototype_setting = Filenames__from_text(TL_IS_140); if ((ins->gitignore_setting) && (ins->prototype_setting == NULL)) - ins->prototype_setting = Filenames__from_text(TL_IS_145); + ins->prototype_setting = Filenames__from_text(TL_IS_141); if ((ins->writeme_setting) && (ins->prototype_setting == NULL)) - ins->prototype_setting = Filenames__from_text(TL_IS_146); + ins->prototype_setting = Filenames__from_text(TL_IS_142); if (ins->makefile_setting) Makefiles__write(W, ins->prototype_setting, ins->makefile_setting, WebModules__make_search_path(ins->import_setting), ins->platform_setting); @@ -18932,10 +18956,10 @@ void Main__follow_instructions(inweb_instructions *ins) { { #line 221 "inweb/Chapter 1/Program Control.w" tn = NULL; - if (Bibliographic__data_exists(W->md, TL_IS_147)) - Str__copy(tangle_leaf, Bibliographic__get_datum(W->md, TL_IS_148)); + if (Bibliographic__data_exists(W->md, TL_IS_143)) + Str__copy(tangle_leaf, Bibliographic__get_datum(W->md, TL_IS_144)); else - Str__copy(tangle_leaf, Bibliographic__get_datum(W->md, TL_IS_149)); + Str__copy(tangle_leaf, Bibliographic__get_datum(W->md, TL_IS_145)); Str__concatenate(tangle_leaf, W->main_language->file_extension); } @@ -19092,7 +19116,7 @@ inweb_instructions Configuration__read(int argc, char **argv) { L" sections: ditto with sections\n"); CommandLine__begin_group(LANGUAGES_CLSG, - TL_IS_151); + TL_IS_147); CommandLine__declare_switch(LANGUAGE_CLSW, L"read-language", 2, L"read language definition from file X"); CommandLine__declare_switch(LANGUAGES_CLSW, L"read-languages", 2, @@ -19106,7 +19130,7 @@ inweb_instructions Configuration__read(int argc, char **argv) { CommandLine__end_group(); CommandLine__begin_group(ANALYSIS_CLSG, - TL_IS_152); + TL_IS_148); CommandLine__declare_switch(CATALOGUE_CLSW, L"catalogue", 1, L"list the sections in the web"); CommandLine__declare_switch(CATALOGUE_CLSW, L"catalog", 1, @@ -19134,7 +19158,7 @@ inweb_instructions Configuration__read(int argc, char **argv) { CommandLine__end_group(); CommandLine__begin_group(WEAVING_CLSG, - TL_IS_153); + TL_IS_149); CommandLine__declare_switch(WEAVE_CLSW, L"weave", 1, L"weave the web into human-readable form"); CommandLine__declare_switch(WEAVE_INTO_CLSW, L"weave-into", 2, @@ -19154,7 +19178,7 @@ inweb_instructions Configuration__read(int argc, char **argv) { CommandLine__end_group(); CommandLine__begin_group(TANGLING_CLSG, - TL_IS_154); + TL_IS_150); CommandLine__declare_switch(TANGLE_CLSW, L"tangle", 1, L"tangle the web into machine-compilable form"); CommandLine__declare_switch(TANGLE_TO_CLSW, L"tangle-to", 2, @@ -19166,7 +19190,7 @@ inweb_instructions Configuration__read(int argc, char **argv) { CommandLine__end_group(); CommandLine__begin_group(COLONIAL_CLSG, - TL_IS_155); + TL_IS_151); CommandLine__declare_switch(COLONY_CLSW, L"colony", 2, L"use the file X as a list of webs in this colony"); CommandLine__declare_switch(MEMBER_CLSW, L"member", 2, @@ -19191,7 +19215,7 @@ inweb_instructions Configuration__read(int argc, char **argv) { args.inweb_mode = NO_MODE; } if (Str__len(args.chosen_range) == 0) { - Str__copy(args.chosen_range, TL_IS_150); + Str__copy(args.chosen_range, TL_IS_146); } return args; } @@ -19353,7 +19377,7 @@ void Configuration__member_and_colony(inweb_instructions *args) { void Configuration__bareword(int id, text_stream *opt, void *state) { inweb_instructions *args = (inweb_instructions *) state; if ((args->chosen_web == NULL) && (args->chosen_file == NULL)) { - if (Str__suffix_eq(opt, TL_IS_156, 6)) + if (Str__suffix_eq(opt, TL_IS_152, 6)) args->chosen_file = Filenames__from_text(opt); else args->chosen_web = Pathnames__from_text(opt); @@ -19372,7 +19396,7 @@ void Configuration__set_range(inweb_instructions *args, text_stream *opt) { } else { if (++args->targets > 1) Errors__fatal("at most one target may be given"); if (Str__eq_wide_string(opt, L"all")) { - Str__copy(args->chosen_range, TL_IS_157); + Str__copy(args->chosen_range, TL_IS_153); } else if (((isalnum(Str__get_first_char(opt))) && (Str__len(opt) == 1)) || (Regexp__match(&mr, opt, L"%i+/%i+"))) { Str__copy(args->chosen_range, opt); @@ -19470,7 +19494,7 @@ weave_order *Swarm__weave_subset(web *W, text_stream *range, int open_afterwards match_results mr = Regexp__create_mr(); if (Str__eq_wide_string(range, L"0")) { if (W->md->single_file) { - wv->booklet_title = Str__duplicate(Bibliographic__get_datum(W->md, TL_IS_158)); + wv->booklet_title = Str__duplicate(Bibliographic__get_datum(W->md, TL_IS_154)); Filenames__write_unextended_leafname(leafname, W->md->single_file); } else { wv->booklet_title = Str__new_from_wide_string(L"Complete Program"); @@ -19506,7 +19530,7 @@ weave_order *Swarm__weave_subset(web *W, text_stream *range, int open_afterwards else Str__copy(wv->booklet_title, range); Str__copy(leafname, range); } - Bibliographic__set_datum(W->md, TL_IS_159, wv->booklet_title); + Bibliographic__set_datum(W->md, TL_IS_155, wv->booklet_title); LOOP_THROUGH_TEXT(P, leafname) if ((Str__get(P) == '/') || (Str__get(P) == ' ')) Str__put(P, '-'); @@ -19573,12 +19597,12 @@ colour_scheme *Swarm__ensure_colour_scheme(weave_order *wv, text_stream *name, return existing; colour_scheme *cs = Assets__find_colour_scheme(wv->pattern, name, pre); if (cs == NULL) { - if (Str__eq(name, TL_IS_160)) { + if (Str__eq(name, TL_IS_156)) { TEMPORARY_TEXT(err) WRITE_TO(err, "No CSS file for the colour scheme '%S' can be found", name); Main__error_in_web(err, NULL); } else { - return Swarm__ensure_colour_scheme(wv, TL_IS_161, TL_IS_162); + return Swarm__ensure_colour_scheme(wv, TL_IS_157, TL_IS_158); } } if (cs) ADD_TO_LINKED_LIST(cs, colour_scheme, wv->colour_schemes); @@ -19597,18 +19621,18 @@ void Swarm__include_plugins(OUTPUT_STREAM, web *W, weave_order *wv, filename *fr #line 231 "inweb/Chapter 1/The Swarm.w" void Swarm__weave_index_templates(web *W, text_stream *range, weave_pattern *pattern, pathname *into, filename *nav, linked_list *crumbs) { - if (!(Bibliographic__data_exists(W->md, TL_IS_163))) - Bibliographic__set_datum(W->md, TL_IS_164, TL_IS_165); - filename *INF = Patterns__find_template(pattern, TL_IS_166); + if (!(Bibliographic__data_exists(W->md, TL_IS_159))) + Bibliographic__set_datum(W->md, TL_IS_160, TL_IS_161); + filename *INF = Patterns__find_template(pattern, TL_IS_162); if (INF) { pathname *H = W->redirect_weaves_to; if (H == NULL) H = Reader__woven_folder(W); - filename *Contents = Filenames__in(H, TL_IS_167); + filename *Contents = Filenames__in(H, TL_IS_163); text_stream TO_struct; text_stream *OUT = &TO_struct; if (STREAM_OPEN_TO_FILE(OUT, Contents, ISO_ENC) == FALSE) Errors__fatal_with_file("unable to write contents file", Contents); if (W->as_ebook) - Epub__note_page(W->as_ebook, Contents, TL_IS_168, TL_IS_169); + Epub__note_page(W->as_ebook, Contents, TL_IS_164, TL_IS_165); PRINT("[Index file: %f]\n", Contents); Collater__collate(OUT, W, range, INF, pattern, nav, crumbs, NULL, Contents); STREAM_CLOSE(OUT); @@ -19634,7 +19658,7 @@ weave_pattern *Patterns__find(web *W, text_stream *name) { wp->number_sections = FALSE; wp->footnotes_plugin = NULL; wp->mathematics_plugin = NULL; - wp->default_range = Str__duplicate(TL_IS_170); + wp->default_range = Str__duplicate(TL_IS_166); wp->initial_extension = NULL; wp->post_commands = NEW_LINKED_LIST(text_stream); wp->blocked_templates = NEW_LINKED_LIST(text_stream); @@ -19651,19 +19675,19 @@ weave_pattern *Patterns__find(web *W, text_stream *name) { pathname *CP = Colonies__patterns_path(); if (CP) { wp->pattern_location = Pathnames__down(CP, name); - pattern_file = Filenames__in(wp->pattern_location, TL_IS_171); + pattern_file = Filenames__in(wp->pattern_location, TL_IS_167); if (TextFiles__exists(pattern_file) == FALSE) wp->pattern_location = NULL; } if (wp->pattern_location == NULL) { wp->pattern_location = Pathnames__down( - Pathnames__down(W->md->path_to_web, TL_IS_172), name); - pattern_file = Filenames__in(wp->pattern_location, TL_IS_173); + Pathnames__down(W->md->path_to_web, TL_IS_168), name); + pattern_file = Filenames__in(wp->pattern_location, TL_IS_169); if (TextFiles__exists(pattern_file) == FALSE) wp->pattern_location = NULL; } if (wp->pattern_location == NULL) { wp->pattern_location = Pathnames__down( path_to_inweb_patterns, name); - pattern_file = Filenames__in(wp->pattern_location, TL_IS_174); + pattern_file = Filenames__in(wp->pattern_location, TL_IS_170); if (TextFiles__exists(pattern_file) == FALSE) wp->pattern_location = NULL; } if (wp->pattern_location == NULL) @@ -19701,7 +19725,7 @@ void Patterns__scan_pattern_line(text_stream *line, text_file_position *tfp, voi match_results mr = Regexp__create_mr(); if (Regexp__match(&mr, line, L"(%c+) *: *(%c+?)")) { text_stream *key = mr.exp[0], *value = Str__duplicate(mr.exp[1]); - if ((Str__eq_insensitive(key, TL_IS_175)) && (wp->commands == 1)) { + if ((Str__eq_insensitive(key, TL_IS_171)) && (wp->commands == 1)) { match_results mr2 = Regexp__create_mr(); if (Regexp__match(&mr2, value, L"(%c+?) based on (%c+)")) { if (Str__ne_insensitive(mr2.exp[0], wp->pattern_name)) { @@ -19720,29 +19744,29 @@ void Patterns__scan_pattern_line(text_stream *line, text_file_position *tfp, voi } Regexp__dispose_of(&mr2); wp->name_command_given = TRUE; - } else if (Str__eq_insensitive(key, TL_IS_176)) { + } else if (Str__eq_insensitive(key, TL_IS_172)) { text_stream *name = Patterns__plugin_name(value, tfp); if (Str__len(name) > 0) { weave_plugin *plugin = Assets__new(name); ADD_TO_LINKED_LIST(plugin, weave_plugin, wp->plugins); } - } else if (Str__eq_insensitive(key, TL_IS_177)) { + } else if (Str__eq_insensitive(key, TL_IS_173)) { wp->pattern_format = Formats__find_by_name(value); - } else if (Str__eq_insensitive(key, TL_IS_178)) { + } else if (Str__eq_insensitive(key, TL_IS_174)) { wp->number_sections = Patterns__yes_or_no(value, tfp); - } else if (Str__eq_insensitive(key, TL_IS_179)) { + } else if (Str__eq_insensitive(key, TL_IS_175)) { wp->default_range = Str__duplicate(value); - } else if (Str__eq_insensitive(key, TL_IS_180)) { + } else if (Str__eq_insensitive(key, TL_IS_176)) { wp->initial_extension = Str__duplicate(value); - } else if (Str__eq_insensitive(key, TL_IS_181)) { + } else if (Str__eq_insensitive(key, TL_IS_177)) { wp->mathematics_plugin = Patterns__plugin_name(value, tfp); - } else if (Str__eq_insensitive(key, TL_IS_182)) { + } else if (Str__eq_insensitive(key, TL_IS_178)) { wp->footnotes_plugin = Patterns__plugin_name(value, tfp); - } else if (Str__eq_insensitive(key, TL_IS_183)) { + } else if (Str__eq_insensitive(key, TL_IS_179)) { ADD_TO_LINKED_LIST(Str__duplicate(value), text_stream, wp->blocked_templates); - } else if (Str__eq_insensitive(key, TL_IS_184)) { + } else if (Str__eq_insensitive(key, TL_IS_180)) { ADD_TO_LINKED_LIST(Str__duplicate(value), text_stream, wp->post_commands); - } else if (Str__eq_insensitive(key, TL_IS_185)) { + } else if (Str__eq_insensitive(key, TL_IS_181)) { match_results mr2 = Regexp__create_mr(); if (Regexp__match(&mr2, value, L"(%c+?) = (%c+)")) { Bibliographic__set_datum(wp->patterned_for->md, mr2.exp[0], mr2.exp[1]); @@ -19750,7 +19774,7 @@ void Patterns__scan_pattern_line(text_stream *line, text_file_position *tfp, voi Errors__in_text_file("syntax is 'bibliographic data: X = Y'", tfp); } Regexp__dispose_of(&mr2); - } else if (Str__eq_insensitive(key, TL_IS_186)) { + } else if (Str__eq_insensitive(key, TL_IS_182)) { match_results mr2 = Regexp__create_mr(); if (Regexp__match(&mr2, value, L"(.%C+?) (%c+)")) { Assets__add_asset_rule(wp->asset_rules, mr2.exp[0], mr2.exp[1], tfp); @@ -19769,8 +19793,8 @@ void Patterns__scan_pattern_line(text_stream *line, text_file_position *tfp, voi #line 184 "inweb/Chapter 1/Patterns.w" int Patterns__yes_or_no(text_stream *arg, text_file_position *tfp) { - if (Str__eq(arg, TL_IS_187)) return TRUE; - if (Str__eq(arg, TL_IS_188)) return FALSE; + if (Str__eq(arg, TL_IS_183)) return TRUE; + if (Str__eq(arg, TL_IS_184)) return FALSE; Errors__in_text_file("setting must be 'yes' or 'no'", tfp); return FALSE; } @@ -19778,7 +19802,7 @@ int Patterns__yes_or_no(text_stream *arg, text_file_position *tfp) { text_stream *Patterns__plugin_name(text_stream *arg, text_file_position *tfp) { match_results mr = Regexp__create_mr(); if (Regexp__match(&mr, arg, L"(%i+)")) { - if (Str__eq_insensitive(arg, TL_IS_189)) return NULL; + if (Str__eq_insensitive(arg, TL_IS_185)) return NULL; } else { Errors__in_text_file("plugin names must be single alphanumeric words", tfp); arg = NULL; @@ -19794,10 +19818,10 @@ void Patterns__post_process(weave_pattern *pattern, weave_order *wv) { filename *last_F = NULL; TEMPORARY_TEXT(cmd) for (int i=0; iweave_to)); i += 8; - } else if (Str__includes_at(T, i, TL_IS_191)) { + } else if (Str__includes_at(T, i, TL_IS_187)) { filename *W = wv->weave_to; i += 5; if (Str__get_at(T, i) == '.') { @@ -19813,7 +19837,7 @@ void Patterns__post_process(weave_pattern *pattern, weave_order *wv) { i--; } else PUT_TO(cmd, Str__get_at(T, i)); } - if ((Str__includes_at(cmd, 0, TL_IS_192)) && (last_F)) { + if ((Str__includes_at(cmd, 0, TL_IS_188)) && (last_F)) { TeXUtilities__post_process_weave(wv, last_F); } else { if (verbose_mode) PRINT("(%S)\n", cmd); @@ -19885,8 +19909,8 @@ colour_scheme *Assets__find_colour_scheme(weave_pattern *pattern, return cs; TEMPORARY_TEXT(css) WRITE_TO(css, "%S.css", name); - filename *F = Patterns__find_file_in_subdirectory(pattern, TL_IS_193, css); - if (F == NULL) F = Patterns__find_file_in_subdirectory(pattern, TL_IS_194, css); + filename *F = Patterns__find_file_in_subdirectory(pattern, TL_IS_189, css); + if (F == NULL) F = Patterns__find_file_in_subdirectory(pattern, TL_IS_190, css); DISCARD_TEXT(css) if (F == NULL) return NULL; cs = CREATE(colour_scheme); @@ -19952,8 +19976,8 @@ void Assets__include_colour_scheme(OUTPUT_STREAM, web *W, colour_scheme *cs, if (verbose_mode) PRINT("Include colour scheme '%S'\n", cs->scheme_name); TEMPORARY_TEXT(css) WRITE_TO(css, "%S.css", cs->scheme_name); - filename *F = Patterns__find_file_in_subdirectory(pattern, TL_IS_195, css); - if (F == NULL) F = Patterns__find_file_in_subdirectory(pattern, TL_IS_196, css); + filename *F = Patterns__find_file_in_subdirectory(pattern, TL_IS_191, css); + if (F == NULL) F = Patterns__find_file_in_subdirectory(pattern, TL_IS_192, css); if (F == NULL) { TEMPORARY_TEXT(err) WRITE_TO(err, "No CSS file for the colour scheme '%S' can be found", @@ -19973,7 +19997,7 @@ void Assets__include_colour_scheme(OUTPUT_STREAM, web *W, colour_scheme *cs, #line 184 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" linked_list *Assets__new_asset_rules_list(void) { linked_list *L = NEW_LINKED_LIST(asset_rule); - Assets__add_asset_rule(L, TL_IS_197, TL_IS_198, NULL); + Assets__add_asset_rule(L, TL_IS_193, TL_IS_194, NULL); return L; } @@ -20000,7 +20024,7 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line cmd = mr.exp[0]; detail = mr.exp[1]; } - if (Str__eq(cmd, TL_IS_199)) { + if (Str__eq(cmd, TL_IS_195)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -20012,7 +20036,7 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 231 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = COPY_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_200)) { + } else if (Str__eq(cmd, TL_IS_196)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -20024,7 +20048,7 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 233 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = PRIVATE_COPY_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_201)) { + } else if (Str__eq(cmd, TL_IS_197)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -20036,7 +20060,7 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 235 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = EMBED_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_202)) { + } else if (Str__eq(cmd, TL_IS_198)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -20048,11 +20072,11 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 237 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = COLLATE_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_203)) { + } else if (Str__eq(cmd, TL_IS_199)) { R->pre = Str__duplicate(detail); - } else if (Str__eq(cmd, TL_IS_204)) { + } else if (Str__eq(cmd, TL_IS_200)) { R->post = Str__duplicate(detail); - } else if (Str__eq(cmd, TL_IS_205)) { + } else if (Str__eq(cmd, TL_IS_201)) { R->transform_names = TRUE; } else Errors__in_text_file("no such asset command", tfp); Regexp__dispose_of(&mr); @@ -20085,7 +20109,7 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line cmd = mr.exp[0]; detail = mr.exp[1]; } - if (Str__eq(cmd, TL_IS_199)) { + if (Str__eq(cmd, TL_IS_195)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -20097,7 +20121,7 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 231 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = COPY_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_200)) { + } else if (Str__eq(cmd, TL_IS_196)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -20109,7 +20133,7 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 233 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = PRIVATE_COPY_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_201)) { + } else if (Str__eq(cmd, TL_IS_197)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -20121,7 +20145,7 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 235 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = EMBED_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_202)) { + } else if (Str__eq(cmd, TL_IS_198)) { { #line 217 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" @@ -20133,11 +20157,11 @@ asset_rule *Assets__new_rule(linked_list *L, text_stream *ext, text_stream *line } #line 237 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" ; R->method = COLLATE_ASSET_METHOD; - } else if (Str__eq(cmd, TL_IS_203)) { + } else if (Str__eq(cmd, TL_IS_199)) { R->pre = Str__duplicate(detail); - } else if (Str__eq(cmd, TL_IS_204)) { + } else if (Str__eq(cmd, TL_IS_200)) { R->post = Str__duplicate(detail); - } else if (Str__eq(cmd, TL_IS_205)) { + } else if (Str__eq(cmd, TL_IS_201)) { R->transform_names = TRUE; } else Errors__in_text_file("no such asset command", tfp); Regexp__dispose_of(&mr); @@ -20160,7 +20184,7 @@ asset_rule *Assets__applicable_rule(weave_pattern *pattern, filename *F) { } asset_rule *R; LOOP_OVER_LINKED_LIST(R, asset_rule, pattern->asset_rules) - if (Str__eq_insensitive(R->applies_to, TL_IS_206)) + if (Str__eq_insensitive(R->applies_to, TL_IS_202)) return R; internal_error("no default asset rule"); return NULL; @@ -20180,7 +20204,7 @@ pathname *Assets__include_asset(OUTPUT_STREAM, asset_rule *R, web *W, filename * { #line 296 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" for (int i=0; ipre); i++) { - if (Str__includes_at(R->pre, i, TL_IS_207)) { + if (Str__includes_at(R->pre, i, TL_IS_203)) { WRITE("%S", url); i += 2; } else PUT(Str__get_at(R->pre, i)); @@ -20266,7 +20290,7 @@ pathname *Assets__include_asset(OUTPUT_STREAM, asset_rule *R, web *W, filename * { #line 334 "inweb/Chapter 1/Assets, Plugins and Colour Schemes.w" for (int i=0; ipost); i++) { - if (Str__includes_at(R->post, i, TL_IS_208)) { + if (Str__includes_at(R->post, i, TL_IS_204)) { WRITE("%S", url); i += 2; } else PUT(Str__get_at(R->post, i)); @@ -20334,7 +20358,7 @@ web *Reader__load_web(pathname *P, filename *alt_F, module_search *I, #line 134 "inweb/Chapter 2/The Reader.w" TEMPORARY_TEXT(IB) WRITE_TO(IB, "7.1.0"); - web_bibliographic_datum *bd = Bibliographic__set_datum(W->md, TL_IS_209, IB); + web_bibliographic_datum *bd = Bibliographic__set_datum(W->md, TL_IS_205, IB); bd->declaration_permitted = FALSE; DISCARD_TEXT(IB) @@ -20353,7 +20377,7 @@ web *Reader__load_web(pathname *P, filename *alt_F, module_search *I, W->redirect_weaves_to = NULL; W->main_language = Languages__default(W); W->web_extent = 0; W->no_paragraphs = 0; - text_stream *language_name = Bibliographic__get_datum(W->md, TL_IS_210); + text_stream *language_name = Bibliographic__get_datum(W->md, TL_IS_206); if (Str__len(language_name) > 0) W->main_language = Languages__find_by_name(language_name, W, TRUE); main_target = Reader__add_tangle_target(W, W->main_language); @@ -20527,7 +20551,7 @@ void Reader__read_file(web *W, chapter *C, filename *F, text_stream *titling_lin } #line 253 "inweb/Chapter 2/The Reader.w" ; - text_stream *purpose = Bibliographic__get_datum(W->md, TL_IS_211); + text_stream *purpose = Bibliographic__get_datum(W->md, TL_IS_207); if (Str__len(purpose) > 0) { Str__clear(line); WRITE_TO(line, "Implied Purpose: %S", purpose); @@ -20606,13 +20630,13 @@ void Reader__scan_source_line(text_stream *line, text_file_position *tfp, void * #line 296 "inweb/Chapter 2/The Reader.w" pathname *Reader__woven_folder(web *W) { - pathname *P = Pathnames__down(W->md->path_to_web, TL_IS_212); + pathname *P = Pathnames__down(W->md->path_to_web, TL_IS_208); if (Pathnames__create_in_file_system(P) == FALSE) Errors__fatal_with_path("unable to create Woven subdirectory", P); return P; } pathname *Reader__tangled_folder(web *W) { - pathname *P = Pathnames__down(W->md->path_to_web, TL_IS_213); + pathname *P = Pathnames__down(W->md->path_to_web, TL_IS_209); if (Pathnames__create_in_file_system(P) == FALSE) Errors__fatal_with_path("unable to create Tangled subdirectory", P); return P; @@ -20691,7 +20715,7 @@ int Reader__web_has_one_section(web *W) { #line 430 "inweb/Chapter 2/The Reader.w" void Reader__print_web_statistics(web *W) { - PRINT("web \"%S\": ", Bibliographic__get_datum(W->md, TL_IS_214)); + PRINT("web \"%S\": ", Bibliographic__get_datum(W->md, TL_IS_210)); int c = WebMetadata__chapter_count(W->md); int s = WebMetadata__section_count(W->md); if (W->md->chaptered) PRINT("%d chapter%s : ", @@ -20842,7 +20866,7 @@ void Parser__parse_web(web *W, int inweb_mode) { { #line 141 "inweb/Chapter 2/The Parser.w" - source_line *NL = Lines__new_source_line_in(TL_IS_217, &(L->source), S); + source_line *NL = Lines__new_source_line_in(TL_IS_213, &(L->source), S); PL->next_line = NL; NL->next_line = L; L = PL; @@ -20855,13 +20879,13 @@ void Parser__parse_web(web *W, int inweb_mode) { } if ((PL) && (Regexp__match(&mr, L->text, L"@ *= *"))) { Str__clear(L->text); - Str__copy(L->text, TL_IS_216); + Str__copy(L->text, TL_IS_212); if (S->md->using_syntax < V2_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "implied paragraph breaks", V2_SYNTAX); { #line 141 "inweb/Chapter 2/The Parser.w" - source_line *NL = Lines__new_source_line_in(TL_IS_217, &(L->source), S); + source_line *NL = Lines__new_source_line_in(TL_IS_213, &(L->source), S); PL->next_line = NL; NL->next_line = L; L = PL; @@ -20973,10 +20997,10 @@ void Parser__parse_web(web *W, int inweb_mode) { } else if (Str__eq_wide_string(command_text, L"Figure")) { if (S->md->using_syntax > V1_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "[[Figure...]]", V1_SYNTAX); - Tags__add_by_name(L->owning_paragraph, TL_IS_218); + Tags__add_by_name(L->owning_paragraph, TL_IS_214); L->command_code = FIGURE_CMD; } else { - Main__error_in_web(TL_IS_219, L); + Main__error_in_web(TL_IS_215, L); } L->is_commentary = TRUE; DISCARD_TEXT(command_text) @@ -20997,7 +21021,7 @@ void Parser__parse_web(web *W, int inweb_mode) { Str__copy(para_macro_name, mr.exp[0]); L->category = MACRO_DEFINITION_LCAT; if (current_paragraph == NULL) - Main__error_in_web(TL_IS_220, L); + Main__error_in_web(TL_IS_216, L); else Macros__create(S, current_paragraph, L, para_macro_name); comment_mode = FALSE; extract_mode = FALSE; L->is_commentary = FALSE; @@ -21039,9 +21063,9 @@ void Parser__parse_web(web *W, int inweb_mode) { match_results mr = Regexp__create_mr(); match_results mr2 = Regexp__create_mr(); if (Regexp__match(&mr, L->text, L"= *(%c+) *")) { - if ((current_paragraph) && (Str__eq(mr.exp[0], TL_IS_221))) { + if ((current_paragraph) && (Str__eq(mr.exp[0], TL_IS_217))) { current_paragraph->placed_very_early = TRUE; - } else if ((current_paragraph) && (Str__eq(mr.exp[0], TL_IS_222))) { + } else if ((current_paragraph) && (Str__eq(mr.exp[0], TL_IS_218))) { current_paragraph->placed_early = TRUE; } else if ((current_paragraph) && (Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text%)"))) { @@ -21051,11 +21075,11 @@ void Parser__parse_web(web *W, int inweb_mode) { 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_238)) L->plainer = TRUE; - else if (Str__eq(mr3.exp[0], TL_IS_239)) L->enable_hyperlinks = TRUE; + if (Str__eq(mr3.exp[0], TL_IS_234)) L->plainer = TRUE; + else if (Str__eq(mr3.exp[0], TL_IS_235)) L->enable_hyperlinks = TRUE; else { Main__error_in_web( - TL_IS_240, L); + TL_IS_236, L); } } else break; Str__clear(mr2.exp[0]); @@ -21078,11 +21102,11 @@ void Parser__parse_web(web *W, int inweb_mode) { 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_238)) L->plainer = TRUE; - else if (Str__eq(mr3.exp[0], TL_IS_239)) L->enable_hyperlinks = TRUE; + if (Str__eq(mr3.exp[0], TL_IS_234)) L->plainer = TRUE; + else if (Str__eq(mr3.exp[0], TL_IS_235)) L->enable_hyperlinks = TRUE; else { Main__error_in_web( - TL_IS_240, L); + TL_IS_236, L); } } else break; Str__clear(mr2.exp[0]); @@ -21095,7 +21119,7 @@ void Parser__parse_web(web *W, int inweb_mode) { ; code_lcat_for_body = TEXT_EXTRACT_LCAT; code_destination = Str__duplicate(mr2.exp[1]); - code_pl_for_body = Languages__find_by_name(TL_IS_223, W, TRUE); + code_pl_for_body = Languages__find_by_name(TL_IS_219, W, TRUE); extract_mode = TRUE; } else if ((current_paragraph) && (Regexp__match(&mr2, mr.exp[0], L"%((%c*?) *text as code%)"))) { @@ -21105,11 +21129,11 @@ void Parser__parse_web(web *W, int inweb_mode) { 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_238)) L->plainer = TRUE; - else if (Str__eq(mr3.exp[0], TL_IS_239)) L->enable_hyperlinks = TRUE; + if (Str__eq(mr3.exp[0], TL_IS_234)) L->plainer = TRUE; + else if (Str__eq(mr3.exp[0], TL_IS_235)) L->enable_hyperlinks = TRUE; else { Main__error_in_web( - TL_IS_240, L); + TL_IS_236, L); } } else break; Str__clear(mr2.exp[0]); @@ -21132,11 +21156,11 @@ void Parser__parse_web(web *W, int inweb_mode) { 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_238)) L->plainer = TRUE; - else if (Str__eq(mr3.exp[0], TL_IS_239)) L->enable_hyperlinks = TRUE; + if (Str__eq(mr3.exp[0], TL_IS_234)) L->plainer = TRUE; + else if (Str__eq(mr3.exp[0], TL_IS_235)) L->enable_hyperlinks = TRUE; else { Main__error_in_web( - TL_IS_240, L); + TL_IS_236, L); } } else break; Str__clear(mr2.exp[0]); @@ -21159,11 +21183,11 @@ void Parser__parse_web(web *W, int inweb_mode) { 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_238)) L->plainer = TRUE; - else if (Str__eq(mr3.exp[0], TL_IS_239)) L->enable_hyperlinks = TRUE; + if (Str__eq(mr3.exp[0], TL_IS_234)) L->plainer = TRUE; + else if (Str__eq(mr3.exp[0], TL_IS_235)) L->enable_hyperlinks = TRUE; else { Main__error_in_web( - TL_IS_240, L); + TL_IS_236, L); } } else break; Str__clear(mr2.exp[0]); @@ -21193,7 +21217,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_241, &(L->source), S); + source_line *EEL = Lines__new_source_line_in(TL_IS_237, &(L->source), S); EEL->next_line = latest->next_line; latest->next_line = EEL; code_lcat_for_body = TEXT_EXTRACT_LCAT; @@ -21210,11 +21234,11 @@ void Parser__parse_web(web *W, int inweb_mode) { 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_238)) L->plainer = TRUE; - else if (Str__eq(mr3.exp[0], TL_IS_239)) L->enable_hyperlinks = TRUE; + if (Str__eq(mr3.exp[0], TL_IS_234)) L->plainer = TRUE; + else if (Str__eq(mr3.exp[0], TL_IS_235)) L->enable_hyperlinks = TRUE; else { Main__error_in_web( - TL_IS_240, L); + TL_IS_236, L); } } else break; Str__clear(mr2.exp[0]); @@ -21244,7 +21268,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_241, &(L->source), S); + source_line *EEL = Lines__new_source_line_in(TL_IS_237, &(L->source), S); EEL->next_line = latest->next_line; latest->next_line = EEL; code_lcat_for_body = TEXT_EXTRACT_LCAT; @@ -21261,11 +21285,11 @@ void Parser__parse_web(web *W, int inweb_mode) { 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_238)) L->plainer = TRUE; - else if (Str__eq(mr3.exp[0], TL_IS_239)) L->enable_hyperlinks = TRUE; + if (Str__eq(mr3.exp[0], TL_IS_234)) L->plainer = TRUE; + else if (Str__eq(mr3.exp[0], TL_IS_235)) L->enable_hyperlinks = TRUE; else { Main__error_in_web( - TL_IS_240, L); + TL_IS_236, L); } } else break; Str__clear(mr2.exp[0]); @@ -21295,7 +21319,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_241, &(L->source), S); + source_line *EEL = Lines__new_source_line_in(TL_IS_237, &(L->source), S); EEL->next_line = latest->next_line; latest->next_line = EEL; code_lcat_for_body = TEXT_EXTRACT_LCAT; @@ -21306,7 +21330,7 @@ void Parser__parse_web(web *W, int inweb_mode) { ; } else if ((current_paragraph) && (Regexp__match(&mr2, mr.exp[0], L"%(figure (%c+)%)"))) { - Tags__add_by_name(L->owning_paragraph, TL_IS_224); + Tags__add_by_name(L->owning_paragraph, TL_IS_220); L->command_code = FIGURE_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; @@ -21314,7 +21338,7 @@ void Parser__parse_web(web *W, int inweb_mode) { comment_mode = TRUE; } else if ((current_paragraph) && (Regexp__match(&mr2, mr.exp[0], L"%(html (%c+)%)"))) { - Tags__add_by_name(L->owning_paragraph, TL_IS_225); + Tags__add_by_name(L->owning_paragraph, TL_IS_221); L->command_code = HTML_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; @@ -21322,7 +21346,7 @@ void Parser__parse_web(web *W, int inweb_mode) { 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_226); + Tags__add_by_name(L->owning_paragraph, TL_IS_222); L->command_code = AUDIO_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; @@ -21330,7 +21354,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_227); + Tags__add_by_name(L->owning_paragraph, TL_IS_223); L->command_code = VIDEO_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; @@ -21338,7 +21362,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_228); + Tags__add_by_name(L->owning_paragraph, TL_IS_224); L->command_code = DOWNLOAD_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; @@ -21347,7 +21371,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_229); + Tags__add_by_name(L->owning_paragraph, TL_IS_225); L->command_code = DOWNLOAD_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; @@ -21356,7 +21380,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_230); + Tags__add_by_name(L->owning_paragraph, TL_IS_226); L->command_code = CAROUSEL_UNCAPTIONED_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; @@ -21364,7 +21388,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_231); + Tags__add_by_name(L->owning_paragraph, TL_IS_227); L->command_code = CAROUSEL_BELOW_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; @@ -21372,7 +21396,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_232); + Tags__add_by_name(L->owning_paragraph, TL_IS_228); L->command_code = CAROUSEL_ABOVE_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; @@ -21380,7 +21404,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_233); + Tags__add_by_name(L->owning_paragraph, TL_IS_229); L->command_code = CAROUSEL_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; @@ -21388,7 +21412,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_234); + Tags__add_by_name(L->owning_paragraph, TL_IS_230); L->command_code = CAROUSEL_END_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; @@ -21396,7 +21420,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_235); + Tags__add_by_name(L->owning_paragraph, TL_IS_231); L->command_code = EMBED_CMD; L->category = COMMAND_LCAT; code_lcat_for_body = COMMENT_BODY_LCAT; @@ -21404,10 +21428,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_236, L); + Main__error_in_web(TL_IS_232, L); } } else if (Regexp__match(&mr, L->text, L"= *%C%c*")) { - Main__error_in_web(TL_IS_237, L); + Main__error_in_web(TL_IS_233, L); } code_plainness_for_body = L->plainer; hyperlink_body = L->enable_hyperlinks; @@ -21441,7 +21465,7 @@ void Parser__parse_web(web *W, int inweb_mode) { if (Str__eq_wide_string(command_text, L"Purpose:")) { #line 586 "inweb/Chapter 2/The Parser.w" - if (before_bar == FALSE) Main__error_in_web(TL_IS_243, L); + if (before_bar == FALSE) Main__error_in_web(TL_IS_239, L); if (S->md->using_syntax >= V2_SYNTAX) Parser__wrong_version(S->md->using_syntax, L, "'@Purpose'", V1_SYNTAX); L->category = PURPOSE_LCAT; @@ -21457,7 +21481,7 @@ void Parser__parse_web(web *W, int inweb_mode) { #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_244, L); + if (before_bar == FALSE) Main__error_in_web(TL_IS_240, L); L->category = INTERFACE_LCAT; L->owning_paragraph = NULL; L->is_commentary = TRUE; @@ -21477,7 +21501,7 @@ void Parser__parse_web(web *W, int inweb_mode) { #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_245, L); + if (before_bar == FALSE) Main__error_in_web(TL_IS_241, L); L->category = DEFINITIONS_LCAT; L->owning_paragraph = NULL; L->is_commentary = TRUE; @@ -21492,7 +21516,7 @@ void Parser__parse_web(web *W, int inweb_mode) { #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_246, L); + if (before_bar == FALSE) Main__error_in_web(TL_IS_242, L); L->category = BAR_LCAT; L->owning_paragraph = NULL; L->is_commentary = TRUE; @@ -21621,7 +21645,7 @@ void Parser__parse_web(web *W, int inweb_mode) { from = mr.exp[1]; Str__copy(L->text_operand, mr.exp[0]); } else if (Regexp__match(&mr, L->text_operand, L"(%C+) (%c+)")) { - Main__error_in_web(TL_IS_247, L); + Main__error_in_web(TL_IS_243, L); } L->text_operand2 = Str__new(); if (inweb_mode == TANGLE_MODE) @@ -21656,7 +21680,7 @@ void Parser__parse_web(web *W, int inweb_mode) { from = mr.exp[1]; Str__copy(L->text_operand, mr.exp[0]); } else if (Regexp__match(&mr, L->text_operand, L"(%C+) (%c+)")) { - Main__error_in_web(TL_IS_247, L); + Main__error_in_web(TL_IS_243, L); } L->text_operand2 = Str__new(); if (inweb_mode == TANGLE_MODE) @@ -21721,13 +21745,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_248), TL_IS_249)) + if (Str__eq(Bibliographic__get_datum(W->md, TL_IS_244), TL_IS_245)) 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_250); + P->ornament = Str__duplicate(TL_IS_246); else - P->ornament = Str__duplicate(TL_IS_251); + P->ornament = Str__duplicate(TL_IS_247); WRITE_TO(P->paragraph_number, "%d", next_par_number++); P->parent_paragraph = NULL; P->next_child_number = 1; @@ -21757,7 +21781,7 @@ void Parser__parse_web(web *W, int inweb_mode) { } #line 578 "inweb/Chapter 2/The Parser.w" - else Main__error_in_web(TL_IS_242, L); + else Main__error_in_web(TL_IS_238, L); } } @@ -21822,7 +21846,7 @@ void Parser__parse_web(web *W, int inweb_mode) { source_line *L = S->first_line; if ((L) && (L->category == CHAPTER_HEADING_LCAT)) L = L->next_line; if (Str__len(S->sect_purpose) == 0) { - S->sect_purpose = Parser__extract_purpose(TL_IS_215, L?L->next_line: NULL, S, NULL); + S->sect_purpose = Parser__extract_purpose(TL_IS_211, L?L->next_line: NULL, S, NULL); if (Str__len(S->sect_purpose) > 0) L->next_line->category = PURPOSE_LCAT; } } @@ -21936,10 +21960,10 @@ text_stream *Parser__extract_purpose(text_stream *prologue, source_line *XL, sec 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_252); + Bibliographic__get_datum(W->md, TL_IS_248); text_stream *fn_off_notation = - Bibliographic__get_datum(W->md, TL_IS_253); - if (Str__ne(fn_on_notation, TL_IS_254)) { + Bibliographic__get_datum(W->md, TL_IS_249); + if (Str__ne(fn_on_notation, TL_IS_250)) { int N1 = Str__len(fn_on_notation); int N2 = Str__len(fn_off_notation); if ((N1 > 0) && (N2 > 0)) @@ -22074,10 +22098,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_255, 6)) { + if (Str__prefix_eq(name, TL_IS_251, 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_256, 7)) { + } else if (Str__prefix_eq(name, TL_IS_252, 7)) { Str__substr(tag->ifdef_symbol, Str__at(name, 7), Str__end(name)); tag->ifdef_positive = FALSE; } @@ -22172,20 +22196,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_258); + TextWeaver__commentary_text(tree, ap, TL_IS_254); } else { - TextWeaver__commentary_text(tree, ap, TL_IS_259); + TextWeaver__commentary_text(tree, ap, TL_IS_255); } } else { - TextWeaver__commentary_text(tree, ap, TL_IS_260); + TextWeaver__commentary_text(tree, ap, TL_IS_256); } TextWeaver__commentary_text(tree, ap, pt->the_tag->ifdef_symbol); } if (c > 0) { - if (c == 1) TextWeaver__commentary_text(tree, ap, TL_IS_261); - else TextWeaver__commentary_text(tree, ap, TL_IS_262); - if (sense) TextWeaver__commentary_text(tree, ap, TL_IS_263); - else TextWeaver__commentary_text(tree, ap, TL_IS_264); + if (c == 1) TextWeaver__commentary_text(tree, ap, TL_IS_257); + else TextWeaver__commentary_text(tree, ap, TL_IS_258); + if (sense) TextWeaver__commentary_text(tree, ap, TL_IS_259); + else TextWeaver__commentary_text(tree, ap, TL_IS_260); } } @@ -22204,26 +22228,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_258); + TextWeaver__commentary_text(tree, ap, TL_IS_254); } else { - TextWeaver__commentary_text(tree, ap, TL_IS_259); + TextWeaver__commentary_text(tree, ap, TL_IS_255); } } else { - TextWeaver__commentary_text(tree, ap, TL_IS_260); + TextWeaver__commentary_text(tree, ap, TL_IS_256); } TextWeaver__commentary_text(tree, ap, pt->the_tag->ifdef_symbol); } if (c > 0) { - if (c == 1) TextWeaver__commentary_text(tree, ap, TL_IS_261); - else TextWeaver__commentary_text(tree, ap, TL_IS_262); - if (sense) TextWeaver__commentary_text(tree, ap, TL_IS_263); - else TextWeaver__commentary_text(tree, ap, TL_IS_264); + if (c == 1) TextWeaver__commentary_text(tree, ap, TL_IS_257); + else TextWeaver__commentary_text(tree, ap, TL_IS_258); + if (sense) TextWeaver__commentary_text(tree, ap, TL_IS_259); + else TextWeaver__commentary_text(tree, ap, TL_IS_260); } } #line 139 "inweb/Chapter 2/Tags.w" ; - if (d > 0) TextWeaver__commentary_text(tree, ap, TL_IS_257); + if (d > 0) TextWeaver__commentary_text(tree, ap, TL_IS_253); } #line 22 "inweb/Chapter 2/Enumerated Constants.w" @@ -22247,7 +22271,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_265, L); + Main__error_in_web(TL_IS_261, L); WRITE_TO(pf, "BOGUS"); } Regexp__dispose_of(&mr); @@ -22263,7 +22287,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_266, L); + } else Main__error_in_web(TL_IS_262, L); } #line 45 "inweb/Chapter 2/Enumerated Constants.w" @@ -22271,7 +22295,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_267, L); + if (es) Main__error_in_web(TL_IS_263, L); else { es = CREATE(enumeration_set); es->postfix = Str__duplicate(pf); @@ -22571,7 +22595,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_268, L); + Main__error_in_web(TL_IS_264, L); } #line 109 "inweb/Chapter 3/The Analyser.w" @@ -22817,14 +22841,14 @@ void Analyser__write_makefile(web *W, filename *F, module_search *I, text_stream pathname *P = W->md->path_to_web; text_stream *short_name = Pathnames__directory_name(P); if ((Str__len(short_name) == 0) || - (Str__eq(short_name, TL_IS_269)) || (Str__eq(short_name, TL_IS_270))) - short_name = TL_IS_271; + (Str__eq(short_name, TL_IS_265)) || (Str__eq(short_name, TL_IS_266))) + short_name = TL_IS_267; TEMPORARY_TEXT(leafname) WRITE_TO(leafname, "%S.mkscript", short_name); filename *prototype = Filenames__in(P, leafname); DISCARD_TEXT(leafname) if (!(TextFiles__exists(prototype))) - prototype = Filenames__in(path_to_inweb_materials, TL_IS_272); + prototype = Filenames__in(path_to_inweb_materials, TL_IS_268); Makefiles__write(W, prototype, F, I, platform); } @@ -22832,21 +22856,21 @@ void Analyser__write_gitignore(web *W, filename *F) { pathname *P = W->md->path_to_web; text_stream *short_name = Pathnames__directory_name(P); if ((Str__len(short_name) == 0) || - (Str__eq(short_name, TL_IS_273)) || (Str__eq(short_name, TL_IS_274))) - short_name = TL_IS_275; + (Str__eq(short_name, TL_IS_269)) || (Str__eq(short_name, TL_IS_270))) + short_name = TL_IS_271; TEMPORARY_TEXT(leafname) WRITE_TO(leafname, "%S.giscript", short_name); filename *prototype = Filenames__in(P, leafname); DISCARD_TEXT(leafname) if (!(TextFiles__exists(prototype))) - prototype = Filenames__in(path_to_inweb_materials, TL_IS_276); + prototype = Filenames__in(path_to_inweb_materials, TL_IS_272); 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_277, F, pattern, NULL, NULL, NULL, into); + Collater__collate(OUT, W, TL_IS_273, F, pattern, NULL, NULL, NULL, into); } void Collater__for_order(text_stream *OUT, weave_order *wv, @@ -23001,33 +23025,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_278)) { + if (Str__eq(condition, TL_IS_274)) { if (cls->for_web->md->chaptered) level = IF_TRUE_LEVEL; - } else if (Str__eq(condition, TL_IS_279)) { + } else if (Str__eq(condition, TL_IS_275)) { if (LinkedLists__len(cls->modules) > 0) level = IF_TRUE_LEVEL; - } else if (Str__eq(condition, TL_IS_280)) { + } else if (Str__eq(condition, TL_IS_276)) { 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_281)) { + } else if (Str__eq(condition, TL_IS_277)) { 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_282); + Readme__write_var(purpose, url, TL_IS_278); if (Str__len(purpose) > 0) level = IF_TRUE_LEVEL; DISCARD_TEXT(url) DISCARD_TEXT(purpose) } - } else if (Str__eq(condition, TL_IS_283)) { + } else if (Str__eq(condition, TL_IS_279)) { 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_284)) { + } else if (Str__eq(condition, TL_IS_280)) { 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; @@ -23358,7 +23382,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_285); + Readme__write_var(substituted, url, TL_IS_281); DISCARD_TEXT(url) } else { WRITE_TO(substituted, "%S for %S", varname, M->module_name); @@ -23558,7 +23582,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_286)) { + } else if (Str__eq(url, TL_IS_282)) { WRITE_TO(substituted, "", url); WRITE_TO(substituted, ""); @@ -23659,7 +23683,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_286)) { + } else if (Str__eq(url, TL_IS_282)) { WRITE_TO(substituted, "", url); WRITE_TO(substituted, ""); @@ -23798,11 +23822,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_287)) { - if (Str__eq_insensitive(O2, TL_IS_288) == FALSE) return 1; + if (Str__eq_insensitive(O1, TL_IS_283)) { + if (Str__eq_insensitive(O2, TL_IS_284) == FALSE) return 1; return 0; } - if (Str__eq_insensitive(O2, TL_IS_289)) return -1; + if (Str__eq_insensitive(O2, TL_IS_285)) return -1; return Str__cmp_insensitive(O1, O2); } @@ -23814,7 +23838,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_290); + tree_node *T = WeaveTree__tail(tree, TL_IS_286); Trees__make_child(H, tree->root); Trees__make_child(B, tree->root); Trees__make_child(T, tree->root); @@ -23928,7 +23952,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_291); + Weaver__weave_subheading(tree, wv, state->ap, TL_IS_287); state->next_heading_without_vertical_skip = TRUE; state->horizontal_rule_just_drawn = FALSE; continue; @@ -23968,7 +23992,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_292, L); /* should never happen */ + Main__error_in_web(TL_IS_288, L); /* should never happen */ { @@ -24198,11 +24222,11 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo 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_293), state->ap); + Trees__make_child(WeaveTree__weave_item_node(tree, 2, TL_IS_289), 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_294), state->ap); + Trees__make_child(WeaveTree__weave_item_node(tree, 1, TL_IS_290), 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); @@ -24251,7 +24275,7 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo 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_295, L); + if (F->cued_already == FALSE) Main__error_in_web(TL_IS_291, L); state->ap = FN; } @@ -24285,10 +24309,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_296, FALSE); + theme_tag *T = Tags__find_by_name(TL_IS_292, FALSE); if ((T) && (Tags__tagged_with(L->owning_paragraph, T))) { programming_language *prepl = - Languages__find_by_name(TL_IS_297, wv->weave_web, FALSE); + Languages__find_by_name(TL_IS_293, wv->weave_web, FALSE); if (prepl) pl = prepl; } text_stream *note = NULL; @@ -24348,14 +24372,14 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo 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_298); + Str__copy(prefatory, TL_IS_294); Str__copy(matter, mr.exp[0]); } else if (Regexp__match(&mr, matter, L"@default (%c*)")) { - Str__copy(prefatory, TL_IS_299); + Str__copy(prefatory, TL_IS_295); 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_300); + Str__copy(prefatory, TL_IS_296); Str__copy(matter, mr.exp[0]); } Regexp__dispose_of(&mr); @@ -24482,23 +24506,23 @@ int Weaver__weave_inner(weave_order *wv, heterogeneous_tree *tree, tree_node *bo 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_301, FALSE); + theme_tag *T = Tags__find_by_name(TL_IS_297, FALSE); if ((T) && (Tags__tagged_with(P, T))) { #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_302); + TextWeaver__commentary_text(tree, ap, TL_IS_298); TEMPORARY_TEXT(url) int ext = FALSE; if (Colonies__resolve_reference_in_weave(url, NULL, wv->weave_to, - TL_IS_303, wv->weave_web->md, NULL, &ext)) - Trees__make_child(WeaveTree__url(tree, url, TL_IS_304, ext), ap); + TL_IS_299, wv->weave_web->md, NULL, &ext)) + Trees__make_child(WeaveTree__url(tree, url, TL_IS_300, ext), ap); else - TextWeaver__commentary_text(tree, ap, TL_IS_305); + TextWeaver__commentary_text(tree, ap, TL_IS_301); DISCARD_TEXT(url) - TextWeaver__commentary_text(tree, ap, TL_IS_306); + TextWeaver__commentary_text(tree, ap, TL_IS_302); } #line 584 "inweb/Chapter 3/The Weaver.w" @@ -24510,30 +24534,30 @@ void Weaver__show_endnotes_on_previous_paragraph(heterogeneous_tree *tree, #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_307); + TextWeaver__commentary_text(tree, ap, TL_IS_303); 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_308); + if (ct == 1) TextWeaver__commentary_text(tree, ap, TL_IS_304); 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_309); - else TextWeaver__commentary_text(tree, ap, TL_IS_310); + if (k < ct-1) TextWeaver__commentary_text(tree, ap, TL_IS_305); + else TextWeaver__commentary_text(tree, ap, TL_IS_306); } else { - TextWeaver__commentary_text(tree, ap, TL_IS_311); + TextWeaver__commentary_text(tree, ap, TL_IS_307); } 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_312); break; - case 3: TextWeaver__commentary_text(tree, ap, TL_IS_313); break; - case 4: TextWeaver__commentary_text(tree, ap, TL_IS_314); break; - case 5: TextWeaver__commentary_text(tree, ap, TL_IS_315); break; + case 2: TextWeaver__commentary_text(tree, ap, TL_IS_308); break; + case 3: TextWeaver__commentary_text(tree, ap, TL_IS_309); break; + case 4: TextWeaver__commentary_text(tree, ap, TL_IS_310); break; + case 5: TextWeaver__commentary_text(tree, ap, TL_IS_311); break; default: { TEMPORARY_TEXT(mt) WRITE_TO(mt, " (%d times)", mu->multiplicity); @@ -24544,7 +24568,7 @@ void Weaver__show_endnotes_on_previous_paragraph(heterogeneous_tree *tree, } } } - TextWeaver__commentary_text(tree, ap, TL_IS_316); + TextWeaver__commentary_text(tree, ap, TL_IS_312); } #line 587 "inweb/Chapter 3/The Weaver.w" @@ -24567,7 +24591,7 @@ void Weaver__show_endnotes_on_previous_paragraph(heterogeneous_tree *tree, #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_317); + TextWeaver__commentary_text(tree, ap, TL_IS_313); TextWeaver__commentary_text(tree, ap, st->structure_name); section *S; @@ -24591,18 +24615,18 @@ 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_318); + if (external == 0) TextWeaver__commentary_text(tree, ap, TL_IS_314); else { - TextWeaver__commentary_text(tree, ap, TL_IS_319); + TextWeaver__commentary_text(tree, ap, TL_IS_315); 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_320); + if (c++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_316); TextWeaver__commentary_text(tree, ap, S->md->sect_range); } - if (P->under_section->scratch_flag) TextWeaver__commentary_text(tree, ap, TL_IS_321); + if (P->under_section->scratch_flag) TextWeaver__commentary_text(tree, ap, TL_IS_317); } - TextWeaver__commentary_text(tree, ap, TL_IS_322); + TextWeaver__commentary_text(tree, ap, TL_IS_318); } #line 593 "inweb/Chapter 3/The Weaver.w" @@ -24620,7 +24644,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_323); + TextWeaver__commentary_text(tree, ap, TL_IS_319); TextWeaver__commentary_text(tree, ap, fn->function_name); } int used_flag = FALSE; @@ -24634,7 +24658,7 @@ void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv, { #line 733 "inweb/Chapter 3/The Weaver.w" if (as_list == FALSE) { - if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_328); + if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_324); } used_flag = TRUE; section *S = hteu->usage_recorded_at->under_section; @@ -24642,17 +24666,17 @@ 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_329); - else TextWeaver__commentary_text(tree, ap, TL_IS_330); + if (last_cited_in != P->under_section) TextWeaver__commentary_text(tree, ap, TL_IS_325); + else TextWeaver__commentary_text(tree, ap, TL_IS_326); } 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_331); - else TextWeaver__commentary_text(tree, ap, TL_IS_332); + if (as_list == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_327); + else TextWeaver__commentary_text(tree, ap, TL_IS_328); } - if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_333); + if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_329); Trees__make_child(WeaveTree__locale(tree, hteu->usage_recorded_at, NULL), ap); last_cited_in = hteu->usage_recorded_at->under_section; @@ -24665,7 +24689,7 @@ void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv, { #line 733 "inweb/Chapter 3/The Weaver.w" if (as_list == FALSE) { - if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_328); + if (used_flag == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_324); } used_flag = TRUE; section *S = hteu->usage_recorded_at->under_section; @@ -24673,17 +24697,17 @@ 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_329); - else TextWeaver__commentary_text(tree, ap, TL_IS_330); + if (last_cited_in != P->under_section) TextWeaver__commentary_text(tree, ap, TL_IS_325); + else TextWeaver__commentary_text(tree, ap, TL_IS_326); } 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_331); - else TextWeaver__commentary_text(tree, ap, TL_IS_332); + if (as_list == FALSE) TextWeaver__commentary_text(tree, ap, TL_IS_327); + else TextWeaver__commentary_text(tree, ap, TL_IS_328); } - if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_333); + if (count_under++ > 0) TextWeaver__commentary_text(tree, ap, TL_IS_329); Trees__make_child(WeaveTree__locale(tree, hteu->usage_recorded_at, NULL), ap); last_cited_in = hteu->usage_recorded_at->under_section; @@ -24692,15 +24716,15 @@ void Weaver__show_function_usage(heterogeneous_tree *tree, weave_order *wv, ; if (used_flag == FALSE) { if (as_list == FALSE) { - TextWeaver__commentary_text(tree, ap, TL_IS_324); + TextWeaver__commentary_text(tree, ap, TL_IS_320); } else { - TextWeaver__commentary_text(tree, ap, TL_IS_325); + TextWeaver__commentary_text(tree, ap, TL_IS_321); } } if (as_list == FALSE) { if ((last_cited_in != P->under_section) && (last_cited_in)) - TextWeaver__commentary_text(tree, ap, TL_IS_326); - TextWeaver__commentary_text(tree, ap, TL_IS_327); + TextWeaver__commentary_text(tree, ap, TL_IS_322); + TextWeaver__commentary_text(tree, ap, TL_IS_323); } } @@ -24782,8 +24806,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_334):(TL_IS_335)); - if (Str__ne(code_in_comments_notation, TL_IS_336)) + (in_code)?(TL_IS_330):(TL_IS_331)); + if (Str__ne(code_in_comments_notation, TL_IS_332)) { #line 51 "inweb/Chapter 3/The Weaver of Text.w" for (int i=0; i < Str__len(matter); i++) { @@ -24808,8 +24832,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_337); - if (Str__ne(tex_notation, TL_IS_338)) + TL_IS_333); + if (Str__ne(tex_notation, TL_IS_334)) { #line 99 "inweb/Chapter 3/The Weaver of Text.w" int N = Str__len(tex_notation); @@ -24844,8 +24868,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_339); - if (Str__ne(tex_notation, TL_IS_340)) + TL_IS_335); + if (Str__ne(tex_notation, TL_IS_336)) { #line 99 "inweb/Chapter 3/The Weaver of Text.w" int N = Str__len(tex_notation); @@ -24880,8 +24904,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_341); - if (Str__ne(xref_notation, TL_IS_342)) + TL_IS_337); + if (Str__ne(xref_notation, TL_IS_338)) { #line 150 "inweb/Chapter 3/The Weaver of Text.w" int N = Str__len(xref_notation); @@ -24941,8 +24965,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_343)) || - (Str__includes_at(matter, i, TL_IS_344))) { + if ((Str__includes_at(matter, i, TL_IS_339)) || + (Str__includes_at(matter, i, TL_IS_340))) { TEMPORARY_TEXT(before) Str__copy(before, matter); Str__truncate(before, i); TEMPORARY_TEXT(after) @@ -24990,7 +25014,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_345, wv->current_weave_line); + Main__error_in_web(TL_IS_341, wv->current_weave_line); } } DISCARD_TEXT(before) @@ -25044,8 +25068,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_348)) || - (Str__includes_at(matter, i, TL_IS_349))) { + if ((Str__includes_at(matter, i, TL_IS_344)) || + (Str__includes_at(matter, i, TL_IS_345))) { TEMPORARY_TEXT(after) Str__substr(after, Str__at(matter, i), Str__end(matter)); match_results mr = Regexp__create_mr(); @@ -25063,8 +25087,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_346); - if (Str__ne(xref_notation, TL_IS_347)) + TL_IS_342); + if (Str__ne(xref_notation, TL_IS_343)) { #line 277 "inweb/Chapter 3/The Weaver of Text.w" @@ -25201,7 +25225,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_350, L); + if (L->owning_paragraph == NULL) Main__error_in_web(TL_IS_346, L); else Tags__open_ifdefs(OUT, L->owning_paragraph); LanguageMethods__start_definition(OUT, lang, L->text_operand, @@ -25223,7 +25247,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_350, L); + if (L->owning_paragraph == NULL) Main__error_in_web(TL_IS_346, L); else Tags__open_ifdefs(OUT, L->owning_paragraph); LanguageMethods__start_definition(OUT, lang, L->text_operand, @@ -25374,7 +25398,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_351, L); + Main__error_in_web(TL_IS_347, L); WRITE_TO(STDERR, "Macro is '%S'\n", temp); LanguageMethods__comment(OUT, lang, temp); /* recover by putting macro name in comment */ } @@ -25444,7 +25468,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_352); + pathname *P = Pathnames__down(W->md->path_to_web, TL_IS_348); { #line 43 "inweb/Chapter 4/Programming Languages.w" @@ -25494,7 +25518,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_353, W, TRUE); + return Languages__find_by_name(TL_IS_349, W, TRUE); } void Languages__show(OUTPUT_STREAM) { @@ -25536,7 +25560,7 @@ void Languages__read_definitions(pathname *P) { } pathname *Languages__default_directory(void) { - return Pathnames__down(path_to_inweb, TL_IS_354); + return Pathnames__down(path_to_inweb, TL_IS_350); } #line 148 "inweb/Chapter 4/Programming Languages.w" @@ -25596,7 +25620,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_355)) InCSupport__add_features(pl); + if (Str__eq(pl->language_name, TL_IS_351)) InCSupport__add_features(pl); ACMESupport__add_fallbacks(pl); } @@ -25618,7 +25642,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_387)) { + if (Str__eq(line, TL_IS_383)) { state->current_block = state->current_block->parent; } else if (Regexp__match(&mr, line, L"characters {")) { colouring_rule *rule = Languages__new_rule(state->current_block); @@ -25634,7 +25658,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_388)) r = Languages__colour(mr.exp[0], tfp); + if (Str__ne(mr.exp[0], TL_IS_384)) 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+) {")) { @@ -25689,66 +25713,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_356)) pl->language_name = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_357)) + if (Str__eq(key, TL_IS_352)) pl->language_name = Languages__text(value, tfp, TRUE); + else if (Str__eq(key, TL_IS_353)) pl->language_details = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_358)) + else if (Str__eq(key, TL_IS_354)) pl->file_extension = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_359)) + else if (Str__eq(key, TL_IS_355)) pl->line_comment = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_360)) + else if (Str__eq(key, TL_IS_356)) pl->whole_line_comment = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_361)) + else if (Str__eq(key, TL_IS_357)) pl->multiline_comment_open = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_362)) + else if (Str__eq(key, TL_IS_358)) pl->multiline_comment_close = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_363)) + else if (Str__eq(key, TL_IS_359)) pl->string_literal = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_364)) + else if (Str__eq(key, TL_IS_360)) pl->string_literal_escape = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_365)) + else if (Str__eq(key, TL_IS_361)) pl->character_literal = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_366)) + else if (Str__eq(key, TL_IS_362)) pl->character_literal_escape = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_367)) + else if (Str__eq(key, TL_IS_363)) pl->binary_literal_prefix = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_368)) + else if (Str__eq(key, TL_IS_364)) pl->octal_literal_prefix = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_369)) + else if (Str__eq(key, TL_IS_365)) pl->hexadecimal_literal_prefix = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_370)) + else if (Str__eq(key, TL_IS_366)) pl->negative_literal_prefix = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_371)) + else if (Str__eq(key, TL_IS_367)) pl->shebang = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_372)) + else if (Str__eq(key, TL_IS_368)) pl->line_marker = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_373)) + else if (Str__eq(key, TL_IS_369)) pl->before_macro_expansion = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_374)) + else if (Str__eq(key, TL_IS_370)) pl->after_macro_expansion = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_375)) + else if (Str__eq(key, TL_IS_371)) pl->start_definition = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_376)) + else if (Str__eq(key, TL_IS_372)) pl->prolong_definition = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_377)) + else if (Str__eq(key, TL_IS_373)) pl->end_definition = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_378)) + else if (Str__eq(key, TL_IS_374)) pl->start_ifdef = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_379)) + else if (Str__eq(key, TL_IS_375)) pl->start_ifndef = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_380)) + else if (Str__eq(key, TL_IS_376)) pl->end_ifdef = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_381)) + else if (Str__eq(key, TL_IS_377)) pl->end_ifndef = Languages__text(value, tfp, TRUE); - else if (Str__eq(key, TL_IS_382)) + else if (Str__eq(key, TL_IS_378)) pl->C_like = Languages__boolean(value, tfp); - else if (Str__eq(key, TL_IS_383)) + else if (Str__eq(key, TL_IS_379)) pl->suppress_disclaimer = Languages__boolean(value, tfp); - else if (Str__eq(key, TL_IS_384)) + else if (Str__eq(key, TL_IS_380)) pl->supports_namespaces = Languages__boolean(value, tfp); - else if (Str__eq(key, TL_IS_385)) + else if (Str__eq(key, TL_IS_381)) Languages__regexp(pl->function_notation, value, tfp); - else if (Str__eq(key, TL_IS_386)) + else if (Str__eq(key, TL_IS_382)) Languages__regexp(pl->type_notation, value, tfp); else { Errors__in_text_file("unknown property name before ':'", tfp); @@ -25858,7 +25882,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_389)) { + if (Str__eq(action, TL_IS_385)) { rule->execute_block = Languages__new_block(state->current_block, WHOLE_LINE_CRULE_RUN); state->current_block = rule->execute_block; @@ -25871,7 +25895,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_390)) { + } else if (Str__eq(action, TL_IS_386)) { rule->debug = TRUE; } else { Errors__in_text_file("action after '=>' illegible", tfp); @@ -25906,17 +25930,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_391)) return STRING_COLOUR; - else if (Str__eq(T, TL_IS_392)) return FUNCTION_COLOUR; - else if (Str__eq(T, TL_IS_393)) return DEFINITION_COLOUR; - else if (Str__eq(T, TL_IS_394)) return RESERVED_COLOUR; - else if (Str__eq(T, TL_IS_395)) return ELEMENT_COLOUR; - else if (Str__eq(T, TL_IS_396)) return IDENTIFIER_COLOUR; - else if (Str__eq(T, TL_IS_397)) return CHARACTER_COLOUR; - else if (Str__eq(T, TL_IS_398)) return CONSTANT_COLOUR; - else if (Str__eq(T, TL_IS_399)) return PLAIN_COLOUR; - else if (Str__eq(T, TL_IS_400)) return EXTRACT_COLOUR; - else if (Str__eq(T, TL_IS_401)) return COMMENT_COLOUR; + if (Str__eq(T, TL_IS_387)) return STRING_COLOUR; + else if (Str__eq(T, TL_IS_388)) return FUNCTION_COLOUR; + else if (Str__eq(T, TL_IS_389)) return DEFINITION_COLOUR; + else if (Str__eq(T, TL_IS_390)) return RESERVED_COLOUR; + else if (Str__eq(T, TL_IS_391)) return ELEMENT_COLOUR; + else if (Str__eq(T, TL_IS_392)) return IDENTIFIER_COLOUR; + else if (Str__eq(T, TL_IS_393)) return CHARACTER_COLOUR; + else if (Str__eq(T, TL_IS_394)) return CONSTANT_COLOUR; + else if (Str__eq(T, TL_IS_395)) return PLAIN_COLOUR; + else if (Str__eq(T, TL_IS_396)) return EXTRACT_COLOUR; + else if (Str__eq(T, TL_IS_397)) return COMMENT_COLOUR; else { Errors__in_text_file("no such !colour", tfp); return PLAIN_COLOUR; @@ -25925,8 +25949,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_402)) return TRUE; - else if (Str__eq(T, TL_IS_403)) return FALSE; + if (Str__eq(T, TL_IS_398)) return TRUE; + else if (Str__eq(T, TL_IS_399)) return FALSE; else { Errors__in_text_file("must be true or false", tfp); return FALSE; @@ -25984,6 +26008,10 @@ text_stream *Languages__text(text_stream *T, text_file_position *tfp, int allow) } if (bareword) { int rw = FALSE; + if (Str__eq(V, TL_IS_400)) rw = TRUE; + if (Str__eq(V, TL_IS_401)) rw = TRUE; + if (Str__eq(V, TL_IS_402)) rw = TRUE; + if (Str__eq(V, TL_IS_403)) rw = TRUE; if (Str__eq(V, TL_IS_404)) rw = TRUE; if (Str__eq(V, TL_IS_405)) rw = TRUE; if (Str__eq(V, TL_IS_406)) rw = TRUE; @@ -26002,10 +26030,6 @@ text_stream *Languages__text(text_stream *T, text_file_position *tfp, int allow) if (Str__eq(V, TL_IS_419)) rw = TRUE; if (Str__eq(V, TL_IS_420)) rw = TRUE; if (Str__eq(V, TL_IS_421)) rw = TRUE; - if (Str__eq(V, TL_IS_422)) rw = TRUE; - if (Str__eq(V, TL_IS_423)) rw = TRUE; - if (Str__eq(V, TL_IS_424)) rw = TRUE; - if (Str__eq(V, TL_IS_425)) rw = TRUE; if (rw) { TEMPORARY_TEXT(err) @@ -26104,7 +26128,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_426); + Tags__add_by_name(L->owning_paragraph, TL_IS_422); ADD_TO_LINKED_LIST(str, language_type, W->language_types); ADD_TO_LINKED_LIST(str, language_type, L->owning_paragraph->structures); @@ -26217,7 +26241,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_427; + declared_namespace = TL_IS_423; if ((Str__ne(declared_namespace, ambient_namespace)) && (L->owning_paragraph->placed_very_early == FALSE)) { TEMPORARY_TEXT(err_mess) @@ -26330,7 +26354,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_428); + LanguageMethods__comment(OUT, pl, TL_IS_424); } #line 127 "inweb/Chapter 4/Language Methods.w" @@ -26353,7 +26377,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_429, L); + Main__error_in_web(TL_IS_425, L); } void LanguageMethods__prolong_definition(OUTPUT_STREAM, programming_language *pl, @@ -26361,7 +26385,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_430, L); + Main__error_in_web(TL_IS_426, L); } void LanguageMethods__end_definition(OUTPUT_STREAM, programming_language *pl, @@ -26518,9 +26542,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_431, FALSE); + theme_tag *T = Tags__find_by_name(TL_IS_427, FALSE); if ((T) && (Tags__tagged_with(L->owning_paragraph, T))) { - programming_language *prepl = Languages__find_by_name(TL_IS_432, wv->weave_web, FALSE); + programming_language *prepl = Languages__find_by_name(TL_IS_428, wv->weave_web, FALSE); if ((L->category == PREFORM_LCAT) || (L->category == PREFORM_GRAMMAR_LCAT)) if (prepl) colour_as = prepl; } @@ -26859,7 +26883,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_433), L"On")) + if (Str__eq_wide_string(Bibliographic__get_datum(W->md, TL_IS_429), L"On")) check_namespaces = TRUE; language_function *fn; LOOP_OVER(fn, language_function) { @@ -26879,11 +26903,11 @@ void ACMESupport__post_analysis(programming_language *self, web *W) { && (fn->call_freely == FALSE)) { if (fn->within_namespace) Main__error_in_web( - TL_IS_434, + TL_IS_430, fn->function_header_at); else Main__error_in_web( - TL_IS_435, + TL_IS_431, fn->function_header_at); } } @@ -27358,7 +27382,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_436); + Tags__add_by_name(L->owning_paragraph, TL_IS_432); } else if ((Str__get_first_char(L->text) == '}') && (current_str)) { current_str->typedef_ends = L; current_str = NULL; @@ -27494,14 +27518,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_438, L); + Main__error_in_web(TL_IS_434, 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_439, L); + Main__error_in_web(TL_IS_435, L); else cc_sp--; } @@ -27595,7 +27619,7 @@ void CLike__parse_functions(programming_language *self, web *W) { ; } if (cc_sp > 0) - Main__error_in_web(TL_IS_437, NULL); + Main__error_in_web(TL_IS_433, NULL); } #line 316 "inweb/Chapter 4/C-Like Languages.w" @@ -27769,7 +27793,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_440); + Tags__add_by_name(L->owning_paragraph, TL_IS_436); 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; @@ -28197,7 +28221,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_441, AL); + Main__error_in_web(TL_IS_437, AL); if (AL == NULL) WRITE_TO(STDERR, "%S\n", formula); } else { WRITE_TO(expanded, @@ -28276,25 +28300,25 @@ void InCSupport__tangle_line_inner(text_stream *OUT, source_line *AL, preform_no if (clauses == 1) { #line 765 "inweb/Chapter 4/InC Support.w" - if (Str__eq(clause[0], TL_IS_443)) { + if (Str__eq(clause[0], TL_IS_439)) { 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_444)) { + } else if (Str__eq(clause[0], TL_IS_440)) { 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_445)) { + } else if (Str__eq(clause[0], TL_IS_441)) { 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_446, 8)) { + } else if (Str__prefix_eq(clause[0], TL_IS_442, 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])); @@ -28302,7 +28326,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_447, 5)) { + } else if (Str__prefix_eq(clause[0], TL_IS_443, 5)) { clause[1] = Str__new(); clauses = 2; TEMPORARY_TEXT(from) Str__substr(from, Str__at(clause[0], 5), Str__end(clause[0])); @@ -28310,7 +28334,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_448)) { + } else if (Str__eq(clause[0], TL_IS_444)) { clause[1] = Str__new(); clauses = 2; Str__clear(clause[0]); WRITE_TO(clause[0], "0"); @@ -28326,7 +28350,7 @@ void InCSupport__tangle_line_inner(text_stream *OUT, source_line *AL, preform_no { #line 815 "inweb/Chapter 4/InC Support.w" for (int c=0; cntv_name, name)) @@ -28460,7 +28484,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_453); + filename *Syntax = Filenames__in(P, TL_IS_449); text_stream TO_struct; text_stream *OUT = &TO_struct; @@ -28471,8 +28495,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_454)) - WRITE("language %S\n", Bibliographic__get_datum(W->md, TL_IS_455)); + if (Bibliographic__data_exists(W->md, TL_IS_450)) + WRITE("language %S\n", Bibliographic__get_datum(W->md, TL_IS_451)); { @@ -28776,101 +28800,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_456, NULL); + weave_tree_type = Trees__new_type(TL_IS_452, NULL); weave_document_node_type = - Trees__new_node_type(TL_IS_457, weave_document_node_CLASS, NULL); + Trees__new_node_type(TL_IS_453, weave_document_node_CLASS, NULL); weave_head_node_type = - Trees__new_node_type(TL_IS_458, weave_head_node_CLASS, NULL); + Trees__new_node_type(TL_IS_454, weave_head_node_CLASS, NULL); weave_body_node_type = - Trees__new_node_type(TL_IS_459, weave_body_node_CLASS, NULL); + Trees__new_node_type(TL_IS_455, weave_body_node_CLASS, NULL); weave_tail_node_type = - Trees__new_node_type(TL_IS_460, weave_tail_node_CLASS, NULL); + Trees__new_node_type(TL_IS_456, weave_tail_node_CLASS, NULL); weave_chapter_footer_node_type = - Trees__new_node_type(TL_IS_461, weave_chapter_footer_node_CLASS, NULL); + Trees__new_node_type(TL_IS_457, weave_chapter_footer_node_CLASS, NULL); weave_chapter_header_node_type = - Trees__new_node_type(TL_IS_462, weave_chapter_header_node_CLASS, NULL); + Trees__new_node_type(TL_IS_458, weave_chapter_header_node_CLASS, NULL); weave_section_footer_node_type = - Trees__new_node_type(TL_IS_463, weave_section_footer_node_CLASS, NULL); + Trees__new_node_type(TL_IS_459, weave_section_footer_node_CLASS, NULL); weave_section_header_node_type = - Trees__new_node_type(TL_IS_464, weave_section_header_node_CLASS, NULL); + Trees__new_node_type(TL_IS_460, weave_section_header_node_CLASS, NULL); weave_section_purpose_node_type = - Trees__new_node_type(TL_IS_465, weave_section_purpose_node_CLASS, NULL); + Trees__new_node_type(TL_IS_461, weave_section_purpose_node_CLASS, NULL); weave_subheading_node_type = - Trees__new_node_type(TL_IS_466, weave_subheading_node_CLASS, NULL); + Trees__new_node_type(TL_IS_462, weave_subheading_node_CLASS, NULL); weave_bar_node_type = - Trees__new_node_type(TL_IS_467, weave_bar_node_CLASS, NULL); + Trees__new_node_type(TL_IS_463, weave_bar_node_CLASS, NULL); weave_pagebreak_node_type = - Trees__new_node_type(TL_IS_468, weave_pagebreak_node_CLASS, NULL); + Trees__new_node_type(TL_IS_464, weave_pagebreak_node_CLASS, NULL); weave_linebreak_node_type = - Trees__new_node_type(TL_IS_469, weave_linebreak_node_CLASS, NULL); + Trees__new_node_type(TL_IS_465, weave_linebreak_node_CLASS, NULL); weave_paragraph_heading_node_type = - Trees__new_node_type(TL_IS_470, weave_paragraph_heading_node_CLASS, NULL); + Trees__new_node_type(TL_IS_466, weave_paragraph_heading_node_CLASS, NULL); weave_endnote_node_type = - Trees__new_node_type(TL_IS_471, weave_endnote_node_CLASS, NULL); + Trees__new_node_type(TL_IS_467, weave_endnote_node_CLASS, NULL); weave_figure_node_type = - Trees__new_node_type(TL_IS_472, weave_figure_node_CLASS, NULL); + Trees__new_node_type(TL_IS_468, weave_figure_node_CLASS, NULL); weave_extract_node_type = - Trees__new_node_type(TL_IS_473, weave_extract_node_CLASS, NULL); + Trees__new_node_type(TL_IS_469, weave_extract_node_CLASS, NULL); weave_audio_node_type = - Trees__new_node_type(TL_IS_474, weave_audio_node_CLASS, NULL); + Trees__new_node_type(TL_IS_470, weave_audio_node_CLASS, NULL); weave_video_node_type = - Trees__new_node_type(TL_IS_475, weave_video_node_CLASS, NULL); + Trees__new_node_type(TL_IS_471, weave_video_node_CLASS, NULL); weave_download_node_type = - Trees__new_node_type(TL_IS_476, weave_download_node_CLASS, NULL); + Trees__new_node_type(TL_IS_472, weave_download_node_CLASS, NULL); weave_material_node_type = - Trees__new_node_type(TL_IS_477, weave_material_node_CLASS, NULL); + Trees__new_node_type(TL_IS_473, weave_material_node_CLASS, NULL); weave_embed_node_type = - Trees__new_node_type(TL_IS_478, weave_embed_node_CLASS, NULL); + Trees__new_node_type(TL_IS_474, weave_embed_node_CLASS, NULL); weave_pmac_node_type = - Trees__new_node_type(TL_IS_479, weave_pmac_node_CLASS, NULL); + Trees__new_node_type(TL_IS_475, weave_pmac_node_CLASS, NULL); weave_vskip_node_type = - Trees__new_node_type(TL_IS_480, weave_vskip_node_CLASS, NULL); + Trees__new_node_type(TL_IS_476, weave_vskip_node_CLASS, NULL); weave_chapter_node_type = - Trees__new_node_type(TL_IS_481, weave_chapter_node_CLASS, NULL); + Trees__new_node_type(TL_IS_477, weave_chapter_node_CLASS, NULL); weave_section_node_type = - Trees__new_node_type(TL_IS_482, weave_section_node_CLASS, NULL); + Trees__new_node_type(TL_IS_478, weave_section_node_CLASS, NULL); weave_code_line_node_type = - Trees__new_node_type(TL_IS_483, weave_code_line_node_CLASS, NULL); + Trees__new_node_type(TL_IS_479, weave_code_line_node_CLASS, NULL); weave_function_usage_node_type = - Trees__new_node_type(TL_IS_484, weave_function_usage_node_CLASS, NULL); + Trees__new_node_type(TL_IS_480, weave_function_usage_node_CLASS, NULL); weave_commentary_node_type = - Trees__new_node_type(TL_IS_485, weave_commentary_node_CLASS, NULL); + Trees__new_node_type(TL_IS_481, weave_commentary_node_CLASS, NULL); weave_carousel_slide_node_type = - Trees__new_node_type(TL_IS_486, weave_carousel_slide_node_CLASS, NULL); + Trees__new_node_type(TL_IS_482, weave_carousel_slide_node_CLASS, NULL); weave_toc_node_type = - Trees__new_node_type(TL_IS_487, weave_toc_node_CLASS, NULL); + Trees__new_node_type(TL_IS_483, weave_toc_node_CLASS, NULL); weave_toc_line_node_type = - Trees__new_node_type(TL_IS_488, weave_toc_line_node_CLASS, NULL); + Trees__new_node_type(TL_IS_484, weave_toc_line_node_CLASS, NULL); weave_chapter_title_page_node_type = - Trees__new_node_type(TL_IS_489, weave_chapter_title_page_node_CLASS, NULL); + Trees__new_node_type(TL_IS_485, weave_chapter_title_page_node_CLASS, NULL); weave_defn_node_type = - Trees__new_node_type(TL_IS_490, weave_defn_node_CLASS, NULL); + Trees__new_node_type(TL_IS_486, weave_defn_node_CLASS, NULL); weave_source_code_node_type = - Trees__new_node_type(TL_IS_491, weave_source_code_node_CLASS, NULL); + Trees__new_node_type(TL_IS_487, weave_source_code_node_CLASS, NULL); weave_url_node_type = - Trees__new_node_type(TL_IS_492, weave_url_node_CLASS, NULL); + Trees__new_node_type(TL_IS_488, weave_url_node_CLASS, NULL); weave_footnote_cue_node_type = - Trees__new_node_type(TL_IS_493, weave_footnote_cue_node_CLASS, NULL); + Trees__new_node_type(TL_IS_489, weave_footnote_cue_node_CLASS, NULL); weave_begin_footnote_text_node_type = - Trees__new_node_type(TL_IS_494, weave_begin_footnote_text_node_CLASS, NULL); + Trees__new_node_type(TL_IS_490, weave_begin_footnote_text_node_CLASS, NULL); weave_display_line_node_type = - Trees__new_node_type(TL_IS_495, weave_display_line_node_CLASS, NULL); + Trees__new_node_type(TL_IS_491, weave_display_line_node_CLASS, NULL); weave_function_defn_node_type = - Trees__new_node_type(TL_IS_496, weave_function_defn_node_CLASS, NULL); + Trees__new_node_type(TL_IS_492, weave_function_defn_node_CLASS, NULL); weave_item_node_type = - Trees__new_node_type(TL_IS_497, weave_item_node_CLASS, NULL); + Trees__new_node_type(TL_IS_493, weave_item_node_CLASS, NULL); weave_grammar_index_node_type = - Trees__new_node_type(TL_IS_498, weave_grammar_index_node_CLASS, NULL); + Trees__new_node_type(TL_IS_494, weave_grammar_index_node_CLASS, NULL); weave_inline_node_type = - Trees__new_node_type(TL_IS_499, weave_inline_node_CLASS, NULL); + Trees__new_node_type(TL_IS_495, weave_inline_node_CLASS, NULL); weave_locale_node_type = - Trees__new_node_type(TL_IS_500, weave_locale_node_CLASS, NULL); + Trees__new_node_type(TL_IS_496, weave_locale_node_CLASS, NULL); weave_maths_node_type = - Trees__new_node_type(TL_IS_501, weave_maths_node_CLASS, NULL); + Trees__new_node_type(TL_IS_497, weave_maths_node_CLASS, NULL); weave_verbatim_node_type = - Trees__new_node_type(TL_IS_502, weave_verbatim_node_CLASS, NULL); + Trees__new_node_type(TL_IS_498, weave_verbatim_node_CLASS, NULL); } heterogeneous_tree *tree = Trees__new(weave_tree_type); Trees__make_root(tree, WeaveTree__document(tree, wv)); @@ -29310,7 +29334,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_503, interior); + Bibliographic__set_datum(C->wv->weave_web->md, TL_IS_499, interior); if (F) Collater__for_order(OUT, C->wv, F, into); else WRITE("%S", interior); DISCARD_TEXT(interior) @@ -29364,7 +29388,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_504, TL_IS_505); + weave_format *wf = Formats__create_weave_format(TL_IS_500, TL_IS_501); METHOD_ADD(wf, RENDER_FOR_MTID, PlainText__render); } @@ -29688,7 +29712,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_506, TL_IS_507); + weave_format *wf = Formats__create_weave_format(TL_IS_502, TL_IS_503); METHOD_ADD(wf, RENDER_FOR_MTID, TeX__render_TeX); METHOD_ADD(wf, PREFORM_DOCUMENT_FOR_MTID, TeX__preform_document); } @@ -29766,7 +29790,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_508)) { + if (Str__ne(C->chap->md->ch_range, TL_IS_504)) { TeX__general_heading(OUT, trs->wv, FIRST_IN_LINKED_LIST(section, C->chap->sections), NULL, C->chap->md->ch_title, 3, FALSE); @@ -29840,7 +29864,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_509, 0, FALSE); + C->para, TL_IS_505, 0, FALSE); } #line 76 "inweb/Chapter 5/TeX Format.w" @@ -29870,7 +29894,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_510), + Pathnames__down(trs->wv->weave_web->md->path_to_web, TL_IS_506), C->figname); WRITE("\\pdfximage"); if (C->w >= 0) WRITE(" width %d cm{%f}\n", C->w/POINTS_PER_CM, F); @@ -30277,23 +30301,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_511; break; - case 1: TeX_macro = TL_IS_512; break; - case 2: TeX_macro = TL_IS_513; break; - default: TeX_macro = TL_IS_514; break; + case 0: TeX_macro = TL_IS_507; break; + case 1: TeX_macro = TL_IS_508; break; + case 2: TeX_macro = TL_IS_509; break; + default: TeX_macro = TL_IS_510; break; } if (wv->theme_match) { switch (weight) { - case 0: TeX_macro = TL_IS_515; break; - case 1: TeX_macro = TL_IS_516; break; - case 2: TeX_macro = TL_IS_517; break; - default: TeX_macro = TL_IS_518; break; + case 0: TeX_macro = TL_IS_511; break; + case 1: TeX_macro = TL_IS_512; break; + case 2: TeX_macro = TL_IS_513; break; + default: TeX_macro = TL_IS_514; break; } } if (no_skip) { switch (weight) { - case 0: TeX_macro = TL_IS_519; break; - case 1: TeX_macro = TL_IS_520; break; + case 0: TeX_macro = TL_IS_515; break; + case 1: TeX_macro = TL_IS_516; break; } } @@ -30530,7 +30554,7 @@ void HTMLFormat__create(void) { { #line 15 "inweb/Chapter 5/HTML Formats.w" - weave_format *wf = Formats__create_weave_format(TL_IS_521, TL_IS_522); + weave_format *wf = Formats__create_weave_format(TL_IS_517, TL_IS_518); METHOD_ADD(wf, RENDER_FOR_MTID, HTMLFormat__render); } @@ -30539,7 +30563,7 @@ void HTMLFormat__create(void) { { #line 19 "inweb/Chapter 5/HTML Formats.w" - weave_format *wf = Formats__create_weave_format(TL_IS_523, TL_IS_524); + weave_format *wf = Formats__create_weave_format(TL_IS_519, TL_IS_520); 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); @@ -30563,10 +30587,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_525, TL_IS_526, NULL); + hrs.copy_rule = Assets__new_rule(NULL, TL_IS_521, TL_IS_522, NULL); - Swarm__ensure_plugin(wv, TL_IS_527); - hrs.colours = Swarm__ensure_colour_scheme(wv, TL_IS_528, TL_IS_529); + Swarm__ensure_plugin(wv, TL_IS_523); + hrs.colours = Swarm__ensure_colour_scheme(wv, TL_IS_524, TL_IS_525); return hrs; } @@ -30583,7 +30607,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_530); + Epub__note_page(C->wv->weave_web->as_ebook, C->wv->weave_to, C->wv->booklet_title, TL_IS_526); HTML__completed(OUT); } @@ -30640,16 +30664,16 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { if (hrs->EPUB_flag == FALSE) { weave_section_header_node *C = RETRIEVE_POINTER_weave_section_header_node(N->content); - Swarm__ensure_plugin(hrs->wv, TL_IS_531); + Swarm__ensure_plugin(hrs->wv, TL_IS_527); 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_532); - if (Str__len(Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_533)) > 0) - bct = Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_534); + text_stream *bct = Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_528); + if (Str__len(Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_529)) > 0) + bct = Bibliographic__get_datum(hrs->wv->weave_web->md, TL_IS_530); if (hrs->wv->self_contained == FALSE) { - Colonies__write_breadcrumb(OUT, bct, TL_IS_535); + Colonies__write_breadcrumb(OUT, bct, TL_IS_531); if (hrs->wv->weave_web->md->chaptered) { TEMPORARY_TEXT(chapter_link) WRITE_TO(chapter_link, "index.html#%s%S", @@ -30712,7 +30736,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { chapter *Ch; LOOP_OVER_LINKED_LIST(Ch, chapter, hrs->wv->weave_web->chapters) { if (Ch->md->imported == FALSE) { - if (Str__ne(Ch->md->ch_range, TL_IS_536)) { + if (Str__ne(Ch->md->ch_range, TL_IS_532)) { if (Ch == C->sect->owning_chapter) { HTML_OPEN_WITH("li", "class=\"progresscurrentchapter\""); } else { @@ -30743,7 +30767,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_537), TL_IS_538)) + TL_IS_533), TL_IS_534)) Str__delete_first_character(label); if (S == C->sect) { HTML_OPEN_WITH("li", "class=\"progresscurrent\""); @@ -30870,7 +30894,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { #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_539), + Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_535), C->figname); filename *RF = Filenames__from_text(C->figname); HTML_OPEN_WITH("p", "class=\"center-p\""); @@ -30888,12 +30912,12 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { #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_540), + Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_536), 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_541, + Main__error_in_web(TL_IS_537, hrs->wv->current_weave_line); } else { while (TRUE) { @@ -30914,7 +30938,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { #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_542), + Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_538), C->audio_name); Assets__include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL, hrs->wv->pattern, hrs->wv->weave_to); @@ -30934,7 +30958,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { #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_543), + Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_539), C->video_name); Assets__include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL, hrs->wv->pattern, hrs->wv->weave_to); @@ -30960,14 +30984,14 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { { #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_544); + pathname *P = Pathnames__down(hrs->wv->weave_web->md->path_to_web, TL_IS_540); filename *F = Filenames__in(P, C->download_name); - filename *TF = Patterns__find_file_in_subdirectory(hrs->wv->pattern, TL_IS_545, - TL_IS_546); + filename *TF = Patterns__find_file_in_subdirectory(hrs->wv->pattern, TL_IS_541, + TL_IS_542); if (TF == NULL) { - Main__error_in_web(TL_IS_547, hrs->wv->current_weave_line); + Main__error_in_web(TL_IS_543, hrs->wv->current_weave_line); } else { - Swarm__ensure_plugin(hrs->wv, TL_IS_548); + Swarm__ensure_plugin(hrs->wv, TL_IS_544); pathname *TOP = Assets__include_asset(OUT, hrs->copy_rule, hrs->wv->weave_web, F, NULL, hrs->wv->pattern, hrs->wv->weave_to); @@ -30983,11 +31007,11 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { 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_553; x = N; y = 0; - if (N > 1) { unit = TL_IS_554; } - if (N >= 1024) { unit = TL_IS_555; x = 10*N/1024; y = x%10; x = x/10; } - if (N >= 1024*1024) { unit = TL_IS_556; x = 10*N/1024/1024; y = x%10; x = x/10; } - if (N >= 1024*1024*1024) { unit = TL_IS_557; x = 10*N/1024/1024/1024; y = x%10; x = x/10; } + text_stream *unit = TL_IS_549; x = N; y = 0; + if (N > 1) { unit = TL_IS_550; } + if (N >= 1024) { unit = TL_IS_551; x = 10*N/1024; y = x%10; x = x/10; } + if (N >= 1024*1024) { unit = TL_IS_552; x = 10*N/1024/1024; y = x%10; x = x/10; } + if (N >= 1024*1024*1024) { unit = TL_IS_553; 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); @@ -30996,13 +31020,13 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { } #line 407 "inweb/Chapter 5/HTML Formats.w" - else Main__error_in_web(TL_IS_549, + else Main__error_in_web(TL_IS_545, hrs->wv->current_weave_line); filename *D = Filenames__from_text(C->download_name); - Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_550, + Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_546, Filenames__get_leafname(D)); - Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_551, url); - Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_552, size); + Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_547, url); + Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_548, size); Collater__for_web_and_pattern(OUT, hrs->wv->weave_web, hrs->wv->pattern, TF, hrs->into_file); WRITE("\n"); @@ -31279,20 +31303,20 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { { #line 566 "inweb/Chapter 5/HTML Formats.w" weave_embed_node *C = RETRIEVE_POINTER_weave_embed_node(N->content); - text_stream *CH = TL_IS_558; - text_stream *CW = TL_IS_559; + text_stream *CH = TL_IS_554; + text_stream *CW = TL_IS_555; 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_560, embed_leaf); + filename *F = Patterns__find_file_in_subdirectory(hrs->wv->pattern, TL_IS_556, embed_leaf); DISCARD_TEXT(embed_leaf) if (F == NULL) { - Main__error_in_web(TL_IS_561, hrs->wv->current_weave_line); + Main__error_in_web(TL_IS_557, hrs->wv->current_weave_line); } else { - Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_562, C->ID); - Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_563, CW); - Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_564, CH); + Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_558, C->ID); + Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_559, CW); + Bibliographic__set_datum(hrs->wv->weave_web->md, TL_IS_560, 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); @@ -31312,7 +31336,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { if (C->defn == FALSE) { TEMPORARY_TEXT(url) Colonies__paragraph_URL(url, P, hrs->wv->weave_to); - HTML__begin_link_with_class(OUT, TL_IS_565, url); + HTML__begin_link_with_class(OUT, TL_IS_561, url); DISCARD_TEXT(url) } HTML_OPEN_WITH("span", "class=\"%s\"", @@ -31372,7 +31396,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { { #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_566, C->url); + HTML__begin_link_with_class(OUT, TL_IS_562, C->url); HTMLFormat__change_colour(OUT, FUNCTION_COLOUR, hrs->colours); WRITE("%S", C->fn->function_name); HTMLFormat__change_colour(OUT, -1, hrs->colours); @@ -31410,17 +31434,17 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { { #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_567); + Swarm__ensure_plugin(hrs->wv, TL_IS_563); TEMPORARY_TEXT(carousel_id) TEMPORARY_TEXT(carousel_dots_id) text_stream *caption_class = NULL; - text_stream *slide_count_class = TL_IS_568; + text_stream *slide_count_class = TL_IS_564; switch (C->caption_command) { - case CAROUSEL_CMD: caption_class = TL_IS_569; break; - case CAROUSEL_ABOVE_CMD: caption_class = TL_IS_570; - slide_count_class = TL_IS_571; break; - case CAROUSEL_BELOW_CMD: caption_class = TL_IS_572; - slide_count_class = TL_IS_573; break; + case CAROUSEL_CMD: caption_class = TL_IS_565; break; + case CAROUSEL_ABOVE_CMD: caption_class = TL_IS_566; + slide_count_class = TL_IS_567; break; + case CAROUSEL_BELOW_CMD: caption_class = TL_IS_568; + slide_count_class = TL_IS_569; break; } WRITE_TO(carousel_id, "carousel-no-%d", hrs->carousel_number); WRITE_TO(carousel_dots_id, "carousel-dots-no-%d", hrs->carousel_number); @@ -31581,7 +31605,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { { #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_574:TL_IS_575, C->url); + HTML__begin_link_with_class(OUT, (C->external)?TL_IS_570:TL_IS_571, C->url); WRITE("%S", C->content); HTML__end_link(OUT); @@ -31661,7 +31685,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { 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_576); + Swarm__ensure_plugin(hrs->wv, TL_IS_572); HTMLFormat__change_colour(OUT, FUNCTION_COLOUR, hrs->colours); WRITE("%S", C->fn->function_name); WRITE(""); @@ -31703,7 +31727,7 @@ int HTMLFormat__render_visit(tree_node *N, void *state, int L) { { #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_577)) WRITE("● "); + if (Str__eq(C->label, TL_IS_573)) WRITE("● "); else if (Str__len(C->label) > 0) WRITE("(%S) ", C->label); else WRITE(" "); @@ -31812,7 +31836,7 @@ void HTMLFormat__go_to_depth(HTML_render_state *hrs, int from_depth, int to_dept 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_578); + HTML__anchor_with_class(OUT, TEMP, TL_IS_574); DISCARD_TEXT(TEMP) if (P->invisible == FALSE) { HTML_OPEN("b"); @@ -31860,9 +31884,9 @@ void HTMLFormat__escape_text(text_stream *OUT, text_stream *id) { #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_579)); + WRITE_TO(T, "%S", Bibliographic__get_datum(W->md, TL_IS_575)); W->as_ebook = Epub__new(T, "P"); - filename *CSS = Patterns__find_file_in_subdirectory(pattern, TL_IS_580, TL_IS_581); + filename *CSS = Patterns__find_file_in_subdirectory(pattern, TL_IS_576, TL_IS_577); Epub__use_CSS_throughout(W->as_ebook, CSS); Epub__attach_metadata(W->as_ebook, L"identifier", T); DISCARD_TEXT(T) @@ -31879,7 +31903,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_582, TL_IS_583); + weave_format *wf = Formats__create_weave_format(TL_IS_578, TL_IS_579); METHOD_ADD(wf, RENDER_FOR_MTID, Debugging__render); } @@ -32353,7 +32377,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_584); + res->PDF_filename = Filenames__set_extension(CF, TL_IS_580); return res; } @@ -32549,7 +32573,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_585)) + if (Str__eq(macro, TL_IS_581)) { #line 364 "inweb/Chapter 5/TeX Utilities.w" if (Str__get_at(text, i) == '\\') { @@ -32557,8 +32581,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_681)) PUT((wchar_t) 0x2204); - else if (Str__eq(macro, TL_IS_682)) { PUT((wchar_t) 0x00AC); PUT((wchar_t) 0x2200); } + if (Str__eq(macro, TL_IS_677)) PUT((wchar_t) 0x2204); + else if (Str__eq(macro, TL_IS_678)) { PUT((wchar_t) 0x00AC); PUT((wchar_t) 0x2200); } else { PRINT("Don't know how to apply '\\not' to '\\%S'\n", macro); } @@ -32572,99 +32596,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_586)) WRITE("<="); - else if (Str__eq(macro, TL_IS_587)) WRITE(">="); - else if (Str__eq(macro, TL_IS_588)) WRITE("~"); - else if (Str__eq(macro, TL_IS_589)) WRITE(""); - else if (Str__eq(macro, TL_IS_590)) WRITE(""); - else if (Str__eq(macro, TL_IS_591)) WRITE(""); - else if (Str__eq(macro, TL_IS_592)) WRITE("=>"); - else if (Str__eq(macro, TL_IS_593)) WRITE("<=>"); - else if (Str__eq(macro, TL_IS_594)) WRITE("-->"); - else if (Str__eq(macro, TL_IS_595)) WRITE("-->"); - else if (Str__eq(macro, TL_IS_596)) WRITE("-->"); - else if (Str__eq(macro, TL_IS_597)) WRITE("<--"); - else if (Str__eq(macro, TL_IS_598)) WRITE("<--"); - else if (Str__eq(macro, TL_IS_599)) WRITE("{"); - else if (Str__eq(macro, TL_IS_600)) WRITE("|"); - else if (Str__eq(macro, TL_IS_601)) WRITE("}"); - else if (Str__eq(macro, TL_IS_602)) WRITE("."); - else if (Str__eq(macro, TL_IS_603)) WRITE("..."); - else if (Str__eq(macro, TL_IS_604)) WRITE("..."); - else if (Str__eq(macro, TL_IS_605)) WRITE("*"); - else if (Str__eq(macro, TL_IS_606)) WRITE(" "); - else if (Str__eq(macro, TL_IS_607)) WRITE(" "); - else if (Str__eq(macro, TL_IS_608)) WRITE("TeX"); - else if (Str__eq(macro, TL_IS_609)) WRITE("!="); - else if (Str__eq(macro, TL_IS_610)) WRITE("!="); - else if (Str__eq(macro, TL_IS_611)) WRITE("l"); - else if (Str__eq(macro, TL_IS_612)) WRITE("log"); - else if (Str__eq(macro, TL_IS_613)) WRITE("exp"); - else if (Str__eq(macro, TL_IS_614)) WRITE("sin"); - else if (Str__eq(macro, TL_IS_615)) WRITE("cos"); - else if (Str__eq(macro, TL_IS_616)) WRITE("tan"); - else if (Str__eq(macro, TL_IS_617)) WRITE("T"); - else if (Str__eq(macro, TL_IS_618)) PUT((wchar_t) 0x0391); - else if (Str__eq(macro, TL_IS_619)) PUT((wchar_t) 0x0392); - else if (Str__eq(macro, TL_IS_620)) PUT((wchar_t) 0x0393); - else if (Str__eq(macro, TL_IS_621)) PUT((wchar_t) 0x0394); - else if (Str__eq(macro, TL_IS_622)) PUT((wchar_t) 0x0395); - else if (Str__eq(macro, TL_IS_623)) PUT((wchar_t) 0x0396); - else if (Str__eq(macro, TL_IS_624)) PUT((wchar_t) 0x0397); - else if (Str__eq(macro, TL_IS_625)) PUT((wchar_t) 0x0398); - else if (Str__eq(macro, TL_IS_626)) PUT((wchar_t) 0x0399); - else if (Str__eq(macro, TL_IS_627)) PUT((wchar_t) 0x039A); - else if (Str__eq(macro, TL_IS_628)) PUT((wchar_t) 0x039B); - else if (Str__eq(macro, TL_IS_629)) PUT((wchar_t) 0x039C); - else if (Str__eq(macro, TL_IS_630)) PUT((wchar_t) 0x039D); - else if (Str__eq(macro, TL_IS_631)) PUT((wchar_t) 0x039E); - else if (Str__eq(macro, TL_IS_632)) PUT((wchar_t) 0x039F); - else if (Str__eq(macro, TL_IS_633)) PUT((wchar_t) 0x03A0); - else if (Str__eq(macro, TL_IS_634)) PUT((wchar_t) 0x03A1); - else if (Str__eq(macro, TL_IS_635)) PUT((wchar_t) 0x03A2); - else if (Str__eq(macro, TL_IS_636)) PUT((wchar_t) 0x03A3); - else if (Str__eq(macro, TL_IS_637)) PUT((wchar_t) 0x03A4); - else if (Str__eq(macro, TL_IS_638)) PUT((wchar_t) 0x03A5); - else if (Str__eq(macro, TL_IS_639)) PUT((wchar_t) 0x03A6); - else if (Str__eq(macro, TL_IS_640)) PUT((wchar_t) 0x03A7); - else if (Str__eq(macro, TL_IS_641)) PUT((wchar_t) 0x03A8); - else if (Str__eq(macro, TL_IS_642)) PUT((wchar_t) 0x03A9); - else if (Str__eq(macro, TL_IS_643)) PUT((wchar_t) 0x03B1); - else if (Str__eq(macro, TL_IS_644)) PUT((wchar_t) 0x03B2); - else if (Str__eq(macro, TL_IS_645)) PUT((wchar_t) 0x03B3); - else if (Str__eq(macro, TL_IS_646)) PUT((wchar_t) 0x03B4); - else if (Str__eq(macro, TL_IS_647)) PUT((wchar_t) 0x03B5); - else if (Str__eq(macro, TL_IS_648)) PUT((wchar_t) 0x03B6); - else if (Str__eq(macro, TL_IS_649)) PUT((wchar_t) 0x03B7); - else if (Str__eq(macro, TL_IS_650)) PUT((wchar_t) 0x03B8); - else if (Str__eq(macro, TL_IS_651)) PUT((wchar_t) 0x03B9); - else if (Str__eq(macro, TL_IS_652)) PUT((wchar_t) 0x03BA); - else if (Str__eq(macro, TL_IS_653)) PUT((wchar_t) 0x03BB); - else if (Str__eq(macro, TL_IS_654)) PUT((wchar_t) 0x03BC); - else if (Str__eq(macro, TL_IS_655)) PUT((wchar_t) 0x03BD); - else if (Str__eq(macro, TL_IS_656)) PUT((wchar_t) 0x03BE); - else if (Str__eq(macro, TL_IS_657)) PUT((wchar_t) 0x03BF); - else if (Str__eq(macro, TL_IS_658)) PUT((wchar_t) 0x03C0); - else if (Str__eq(macro, TL_IS_659)) PUT((wchar_t) 0x03C1); - else if (Str__eq(macro, TL_IS_660)) PUT((wchar_t) 0x03C2); - else if (Str__eq(macro, TL_IS_661)) PUT((wchar_t) 0x03C3); - else if (Str__eq(macro, TL_IS_662)) PUT((wchar_t) 0x03C4); - else if (Str__eq(macro, TL_IS_663)) PUT((wchar_t) 0x03C5); - else if (Str__eq(macro, TL_IS_664)) PUT((wchar_t) 0x03C6); - else if (Str__eq(macro, TL_IS_665)) PUT((wchar_t) 0x03C7); - else if (Str__eq(macro, TL_IS_666)) PUT((wchar_t) 0x03C8); - else if (Str__eq(macro, TL_IS_667)) PUT((wchar_t) 0x03C9); - else if (Str__eq(macro, TL_IS_668)) PUT((wchar_t) 0x2203); - else if (Str__eq(macro, TL_IS_669)) PUT((wchar_t) 0x2208); - else if (Str__eq(macro, TL_IS_670)) PUT((wchar_t) 0x2200); - else if (Str__eq(macro, TL_IS_671)) PUT((wchar_t) 0x2229); - else if (Str__eq(macro, TL_IS_672)) PUT((wchar_t) 0x2205); - else if (Str__eq(macro, TL_IS_673)) PUT((wchar_t) 0x2286); - else if (Str__eq(macro, TL_IS_674)) PUT((wchar_t) 0x2227); - else if (Str__eq(macro, TL_IS_675)) PUT((wchar_t) 0x2228); - else if (Str__eq(macro, TL_IS_676)) PUT((wchar_t) 0x00AC); - else if (Str__eq(macro, TL_IS_677)) PUT((wchar_t) 0x03A3); - else if (Str__eq(macro, TL_IS_678)) PUT((wchar_t) 0x03A0); + if (Str__eq(macro, TL_IS_582)) WRITE("<="); + else if (Str__eq(macro, TL_IS_583)) WRITE(">="); + else if (Str__eq(macro, TL_IS_584)) WRITE("~"); + else if (Str__eq(macro, TL_IS_585)) WRITE(""); + else if (Str__eq(macro, TL_IS_586)) WRITE(""); + else if (Str__eq(macro, TL_IS_587)) WRITE(""); + else if (Str__eq(macro, TL_IS_588)) WRITE("=>"); + else if (Str__eq(macro, TL_IS_589)) WRITE("<=>"); + else if (Str__eq(macro, TL_IS_590)) WRITE("-->"); + else if (Str__eq(macro, TL_IS_591)) WRITE("-->"); + else if (Str__eq(macro, TL_IS_592)) WRITE("-->"); + else if (Str__eq(macro, TL_IS_593)) WRITE("<--"); + else if (Str__eq(macro, TL_IS_594)) WRITE("<--"); + else if (Str__eq(macro, TL_IS_595)) WRITE("{"); + else if (Str__eq(macro, TL_IS_596)) WRITE("|"); + else if (Str__eq(macro, TL_IS_597)) WRITE("}"); + else if (Str__eq(macro, TL_IS_598)) WRITE("."); + else if (Str__eq(macro, TL_IS_599)) WRITE("..."); + else if (Str__eq(macro, TL_IS_600)) WRITE("..."); + else if (Str__eq(macro, TL_IS_601)) WRITE("*"); + else if (Str__eq(macro, TL_IS_602)) WRITE(" "); + else if (Str__eq(macro, TL_IS_603)) WRITE(" "); + else if (Str__eq(macro, TL_IS_604)) WRITE("TeX"); + else if (Str__eq(macro, TL_IS_605)) WRITE("!="); + else if (Str__eq(macro, TL_IS_606)) WRITE("!="); + else if (Str__eq(macro, TL_IS_607)) WRITE("l"); + else if (Str__eq(macro, TL_IS_608)) WRITE("log"); + else if (Str__eq(macro, TL_IS_609)) WRITE("exp"); + else if (Str__eq(macro, TL_IS_610)) WRITE("sin"); + else if (Str__eq(macro, TL_IS_611)) WRITE("cos"); + else if (Str__eq(macro, TL_IS_612)) WRITE("tan"); + else if (Str__eq(macro, TL_IS_613)) WRITE("T"); + else if (Str__eq(macro, TL_IS_614)) PUT((wchar_t) 0x0391); + else if (Str__eq(macro, TL_IS_615)) PUT((wchar_t) 0x0392); + else if (Str__eq(macro, TL_IS_616)) PUT((wchar_t) 0x0393); + else if (Str__eq(macro, TL_IS_617)) PUT((wchar_t) 0x0394); + else if (Str__eq(macro, TL_IS_618)) PUT((wchar_t) 0x0395); + else if (Str__eq(macro, TL_IS_619)) PUT((wchar_t) 0x0396); + else if (Str__eq(macro, TL_IS_620)) PUT((wchar_t) 0x0397); + else if (Str__eq(macro, TL_IS_621)) PUT((wchar_t) 0x0398); + else if (Str__eq(macro, TL_IS_622)) PUT((wchar_t) 0x0399); + else if (Str__eq(macro, TL_IS_623)) PUT((wchar_t) 0x039A); + else if (Str__eq(macro, TL_IS_624)) PUT((wchar_t) 0x039B); + else if (Str__eq(macro, TL_IS_625)) PUT((wchar_t) 0x039C); + else if (Str__eq(macro, TL_IS_626)) PUT((wchar_t) 0x039D); + else if (Str__eq(macro, TL_IS_627)) PUT((wchar_t) 0x039E); + else if (Str__eq(macro, TL_IS_628)) PUT((wchar_t) 0x039F); + else if (Str__eq(macro, TL_IS_629)) PUT((wchar_t) 0x03A0); + else if (Str__eq(macro, TL_IS_630)) PUT((wchar_t) 0x03A1); + else if (Str__eq(macro, TL_IS_631)) PUT((wchar_t) 0x03A2); + else if (Str__eq(macro, TL_IS_632)) PUT((wchar_t) 0x03A3); + else if (Str__eq(macro, TL_IS_633)) PUT((wchar_t) 0x03A4); + else if (Str__eq(macro, TL_IS_634)) PUT((wchar_t) 0x03A5); + else if (Str__eq(macro, TL_IS_635)) PUT((wchar_t) 0x03A6); + else if (Str__eq(macro, TL_IS_636)) PUT((wchar_t) 0x03A7); + else if (Str__eq(macro, TL_IS_637)) PUT((wchar_t) 0x03A8); + else if (Str__eq(macro, TL_IS_638)) PUT((wchar_t) 0x03A9); + else if (Str__eq(macro, TL_IS_639)) PUT((wchar_t) 0x03B1); + else if (Str__eq(macro, TL_IS_640)) PUT((wchar_t) 0x03B2); + else if (Str__eq(macro, TL_IS_641)) PUT((wchar_t) 0x03B3); + else if (Str__eq(macro, TL_IS_642)) PUT((wchar_t) 0x03B4); + else if (Str__eq(macro, TL_IS_643)) PUT((wchar_t) 0x03B5); + else if (Str__eq(macro, TL_IS_644)) PUT((wchar_t) 0x03B6); + else if (Str__eq(macro, TL_IS_645)) PUT((wchar_t) 0x03B7); + else if (Str__eq(macro, TL_IS_646)) PUT((wchar_t) 0x03B8); + else if (Str__eq(macro, TL_IS_647)) PUT((wchar_t) 0x03B9); + else if (Str__eq(macro, TL_IS_648)) PUT((wchar_t) 0x03BA); + else if (Str__eq(macro, TL_IS_649)) PUT((wchar_t) 0x03BB); + else if (Str__eq(macro, TL_IS_650)) PUT((wchar_t) 0x03BC); + else if (Str__eq(macro, TL_IS_651)) PUT((wchar_t) 0x03BD); + else if (Str__eq(macro, TL_IS_652)) PUT((wchar_t) 0x03BE); + else if (Str__eq(macro, TL_IS_653)) PUT((wchar_t) 0x03BF); + else if (Str__eq(macro, TL_IS_654)) PUT((wchar_t) 0x03C0); + else if (Str__eq(macro, TL_IS_655)) PUT((wchar_t) 0x03C1); + else if (Str__eq(macro, TL_IS_656)) PUT((wchar_t) 0x03C2); + else if (Str__eq(macro, TL_IS_657)) PUT((wchar_t) 0x03C3); + else if (Str__eq(macro, TL_IS_658)) PUT((wchar_t) 0x03C4); + else if (Str__eq(macro, TL_IS_659)) PUT((wchar_t) 0x03C5); + else if (Str__eq(macro, TL_IS_660)) PUT((wchar_t) 0x03C6); + else if (Str__eq(macro, TL_IS_661)) PUT((wchar_t) 0x03C7); + else if (Str__eq(macro, TL_IS_662)) PUT((wchar_t) 0x03C8); + else if (Str__eq(macro, TL_IS_663)) PUT((wchar_t) 0x03C9); + else if (Str__eq(macro, TL_IS_664)) PUT((wchar_t) 0x2203); + else if (Str__eq(macro, TL_IS_665)) PUT((wchar_t) 0x2208); + else if (Str__eq(macro, TL_IS_666)) PUT((wchar_t) 0x2200); + else if (Str__eq(macro, TL_IS_667)) PUT((wchar_t) 0x2229); + else if (Str__eq(macro, TL_IS_668)) PUT((wchar_t) 0x2205); + else if (Str__eq(macro, TL_IS_669)) PUT((wchar_t) 0x2286); + else if (Str__eq(macro, TL_IS_670)) PUT((wchar_t) 0x2227); + else if (Str__eq(macro, TL_IS_671)) PUT((wchar_t) 0x2228); + else if (Str__eq(macro, TL_IS_672)) PUT((wchar_t) 0x00AC); + else if (Str__eq(macro, TL_IS_673)) PUT((wchar_t) 0x03A3); + else if (Str__eq(macro, TL_IS_674)) PUT((wchar_t) 0x03A0); else { if (Str__len(macro) > 0) { int suspect = TRUE; @@ -32674,8 +32698,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_679)) suspect = FALSE; - if (Str__eq(macro, TL_IS_680)) suspect = FALSE; + if (Str__eq(macro, TL_IS_675)) suspect = FALSE; + if (Str__eq(macro, TL_IS_676)) suspect = FALSE; if (suspect) PRINT("[Passing through unknown TeX macro \\%S:\n %S\n", macro, text); } @@ -32701,23 +32725,23 @@ void Makefiles__write(web *W, filename *prototype, filename *F, module_search *I text_stream *platform) { linked_list *L = NEW_LINKED_LIST(preprocessor_macro); Preprocessor__new_macro(L, - TL_IS_683, NULL, + TL_IS_679, NULL, Makefiles__platform_settings_expander, NULL); Preprocessor__new_macro(L, - TL_IS_684, NULL, + TL_IS_680, NULL, Makefiles__identity_settings_expander, NULL); preprocessor_macro *mf = Preprocessor__new_macro(L, - TL_IS_685, TL_IS_686, + TL_IS_681, TL_IS_682, Makefiles__modify_filenames_expander, NULL); Preprocessor__do_not_suppress_whitespace(mf); Preprocessor__new_macro(L, - TL_IS_687, TL_IS_688, + TL_IS_683, TL_IS_684, Makefiles__component_expander, NULL); Preprocessor__new_macro(L, - TL_IS_689, TL_IS_690, + TL_IS_685, TL_IS_686, Makefiles__dependent_files_expander, NULL); Preprocessor__new_loop_macro(L, - TL_IS_691, TL_IS_692, + TL_IS_687, TL_IS_688, Makefiles__components_expander, NULL); makefile_specifics *specifics = CREATE(makefile_specifics); @@ -32741,7 +32765,7 @@ void Makefiles__write(web *W, filename *prototype, filename *F, module_search *I WRITE_TO(STDOUT, "(Read script from %f)\n", prototype); Preprocessor__preprocess(prototype, F, header, L, - STORE_POINTER_makefile_specifics(specifics), '#'); + STORE_POINTER_makefile_specifics(specifics), '#', ISO_ENC); } #line 60 "inweb/Chapter 6/Makefiles.w" @@ -32752,7 +32776,7 @@ void Makefiles__identity_settings_expander(preprocessor_macro *mm, preprocessor_ makefile_specifics *specifics = RETRIEVE_POINTER_makefile_specifics(PPS->specifics); text_stream *OUT = PPS->dest; 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_693); + pathname *path_to_intest = Pathnames__down(Pathnames__up(path_to_inweb), TL_IS_689); WRITE("INTEST = "); Makefiles__pathname_slashed(OUT, path_to_intest); WRITE("/Tangled/intest\n"); if (specifics->for_web) { WRITE("MYNAME = %S\n", Pathnames__directory_name(specifics->for_web->md->path_to_web)); @@ -32768,7 +32792,7 @@ void Makefiles__platform_settings_expander(preprocessor_macro *mm, preprocessor_ makefile_specifics *specifics = RETRIEVE_POINTER_makefile_specifics(PPS->specifics); text_stream *INWEBPLATFORM = Str__duplicate(specifics->which_platform); if (Str__len(INWEBPLATFORM) == 0) { - filename *ps = Filenames__in(path_to_inweb, TL_IS_694); + filename *ps = Filenames__in(path_to_inweb, TL_IS_690); TextFiles__read(ps, FALSE, "can't open platform settings file", TRUE, Makefiles__seek_INWEBPLATFORM, NULL, INWEBPLATFORM); } @@ -32776,8 +32800,8 @@ void Makefiles__platform_settings_expander(preprocessor_macro *mm, preprocessor_ Errors__in_text_file( "found platform settings file, but it does not set INWEBPLATFORM", tfp); } else { - pathname *P = Pathnames__down(path_to_inweb, TL_IS_695); - P = Pathnames__down(P, TL_IS_696); + pathname *P = Pathnames__down(path_to_inweb, TL_IS_691); + P = Pathnames__down(P, TL_IS_692); WRITE_TO(INWEBPLATFORM, ".mkscript"); filename *F = Filenames__in(P, INWEBPLATFORM); TextFiles__read(F, FALSE, "can't open platform definitions file", @@ -32896,7 +32920,7 @@ void Makefiles__component_expander(preprocessor_macro *mm, preprocessor_state *P text_stream *set = parameter_values[3]; text_stream *category = parameter_values[4]; - if (Str__eq(category, TL_IS_697)) { + if (Str__eq(category, TL_IS_693)) { int marker = MAKEFILE_TOOL_MOM; dictionary *D = specifics->tools_dictionary; @@ -32924,7 +32948,7 @@ void Makefiles__component_expander(preprocessor_macro *mm, preprocessor_state *P } #line 200 "inweb/Chapter 6/Makefiles.w" ; - } else if (Str__eq(category, TL_IS_698)) { + } else if (Str__eq(category, TL_IS_694)) { int marker = MAKEFILE_WEB_MOM; dictionary *D = specifics->webs_dictionary; @@ -32952,7 +32976,7 @@ void Makefiles__component_expander(preprocessor_macro *mm, preprocessor_state *P } #line 205 "inweb/Chapter 6/Makefiles.w" ; - } else if (Str__eq(category, TL_IS_699)) { + } else if (Str__eq(category, TL_IS_695)) { int marker = MAKEFILE_MODULE_MOM; dictionary *D = specifics->modules_dictionary; @@ -32989,11 +33013,11 @@ void Makefiles__component_expander(preprocessor_macro *mm, preprocessor_state *P #line 235 "inweb/Chapter 6/Makefiles.w" void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) { - Preprocessor__set_loop_var_name(loop, TL_IS_700); + Preprocessor__set_loop_var_name(loop, TL_IS_696); text_stream *category = parameter_values[0]; text_stream *set = parameter_values[1]; - if (Str__len(set) == 0) set = TL_IS_701; - if (Str__eq(category, TL_IS_702)) { + if (Str__len(set) == 0) set = TL_IS_697; + if (Str__eq(category, TL_IS_698)) { int marker = MAKEFILE_TOOL_MOM; { @@ -33001,7 +33025,7 @@ void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state * module *M; LOOP_OVER(M, module) { if ((M->origin_marker == marker) && - ((Str__eq(set, TL_IS_705)) || (Str__eq(set, M->module_tag)))) { + ((Str__eq(set, TL_IS_701)) || (Str__eq(set, M->module_tag)))) { text_stream *value = M->module_name; Preprocessor__add_loop_iteration(loop, value); } @@ -33010,7 +33034,7 @@ void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state * } #line 243 "inweb/Chapter 6/Makefiles.w" ; - } else if (Str__eq(category, TL_IS_703)) { + } else if (Str__eq(category, TL_IS_699)) { int marker = MAKEFILE_WEB_MOM; { @@ -33018,7 +33042,7 @@ void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state * module *M; LOOP_OVER(M, module) { if ((M->origin_marker == marker) && - ((Str__eq(set, TL_IS_705)) || (Str__eq(set, M->module_tag)))) { + ((Str__eq(set, TL_IS_701)) || (Str__eq(set, M->module_tag)))) { text_stream *value = M->module_name; Preprocessor__add_loop_iteration(loop, value); } @@ -33027,7 +33051,7 @@ void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state * } #line 246 "inweb/Chapter 6/Makefiles.w" ; - } else if (Str__eq(category, TL_IS_704)) { + } else if (Str__eq(category, TL_IS_700)) { int marker = MAKEFILE_MODULE_MOM; { @@ -33035,7 +33059,7 @@ void Makefiles__components_expander(preprocessor_macro *mm, preprocessor_state * module *M; LOOP_OVER(M, module) { if ((M->origin_marker == marker) && - ((Str__eq(set, TL_IS_705)) || (Str__eq(set, M->module_tag)))) { + ((Str__eq(set, TL_IS_701)) || (Str__eq(set, M->module_tag)))) { text_stream *value = M->module_name; Preprocessor__add_loop_iteration(loop, value); } @@ -33188,18 +33212,18 @@ void Makefiles__pathname_slashed(OUTPUT_STREAM, pathname *P) { #line 8 "inweb/Chapter 6/Git Support.w" void Git__write_gitignore(web *W, filename *prototype, filename *F) { linked_list *L = NEW_LINKED_LIST(preprocessor_macro); - Preprocessor__new_macro(L, TL_IS_706, NULL, Git__basics_expander, NULL); + Preprocessor__new_macro(L, TL_IS_702, NULL, Git__basics_expander, NULL); text_stream *header = Str__new(); WRITE_TO(header, "# This gitignore was automatically written by inweb -gitignore\n"); WRITE_TO(header, "# and is not intended for human editing\n\n"); WRITE_TO(STDOUT, "(Read script from %f)\n", prototype); - Preprocessor__preprocess(prototype, F, header, L, NULL_GENERAL_POINTER, '#'); + Preprocessor__preprocess(prototype, F, header, L, NULL_GENERAL_POINTER, '#', ISO_ENC); } #line 22 "inweb/Chapter 6/Git Support.w" void Git__basics_expander(preprocessor_macro *mm, preprocessor_state *PPS, text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) { - filename *prototype = Filenames__in(path_to_inweb_materials, TL_IS_707); + filename *prototype = Filenames__in(path_to_inweb_materials, TL_IS_703); TextFiles__read(prototype, FALSE, "can't open basic .gitignore file", TRUE, Preprocessor__scan_line, NULL, PPS); WRITE_TO(STDOUT, "(Read basics.giscript from inweb/"); @@ -33215,7 +33239,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_708); + F = Filenames__in(P, TL_IS_704); } text_stream *OUT = &ctags_file; if (STREAM_OPEN_TO_FILE(OUT, F, UTF8_ENC) == FALSE) @@ -33227,7 +33251,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.1.0-beta+1B10\t/built 13 June 2022/\n"); + WRITE("!_TAG_PROGRAM_VERSION\t7.1.0-beta+1B11\t/built 16 June 2022/\n"); } #line 47 "inweb/Chapter 6/Ctags Support.w" @@ -33318,11 +33342,11 @@ void Ctags__note_defined_constant(source_line *L, text_stream *name) { void Readme__write(filename *prototype, filename *F) { linked_list *L = NEW_LINKED_LIST(preprocessor_macro); preprocessor_macro *mm = Preprocessor__new_macro(L, - TL_IS_709, TL_IS_710, + TL_IS_705, TL_IS_706, Readme__bibliographic_expander, NULL); Preprocessor__do_not_suppress_whitespace(mm); WRITE_TO(STDOUT, "(Read script from %f)\n", prototype); - Preprocessor__preprocess(prototype, F, NULL, L, NULL_GENERAL_POINTER, '/'); + Preprocessor__preprocess(prototype, F, NULL, L, NULL_GENERAL_POINTER, '/', ISO_ENC); } #line 23 "inweb/Chapter 6/Readme Writeme.w" @@ -33333,8 +33357,8 @@ void Readme__bibliographic_expander(preprocessor_macro *mm, preprocessor_state * text_stream *OUT = PPS->dest; writeme_asset *A = Readme__find_asset(asset_name); if (A->if_web) WRITE("%S", Bibliographic__get_datum(A->if_web, datum)); - else if (Str__eq(datum, TL_IS_711)) WRITE("%S", A->date); - else if (Str__eq(datum, TL_IS_712)) WRITE("%S", A->version); + else if (Str__eq(datum, TL_IS_707)) WRITE("%S", A->date); + else if (Str__eq(datum, TL_IS_708)) WRITE("%S", A->version); } #line 49 "inweb/Chapter 6/Readme Writeme.w" @@ -33342,8 +33366,8 @@ void Readme__bibliographic_expander(preprocessor_macro *mm, preprocessor_state * 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_713)) WRITE("%S", A->date); - else if (Str__eq(datum, TL_IS_714)) WRITE("%S", A->version); + else if (Str__eq(datum, TL_IS_709)) WRITE("%S", A->date); + else if (Str__eq(datum, TL_IS_710)) WRITE("%S", A->version); } #line 60 "inweb/Chapter 6/Readme Writeme.w" @@ -33374,7 +33398,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_715), TL_IS_716); + Pathnames__down(Pathnames__from_text(program), TL_IS_711), TL_IS_712); if (TextFiles__exists(I6_vn)) { #line 97 "inweb/Chapter 6/Readme Writeme.w" @@ -33384,7 +33408,7 @@ writeme_asset *Readme__find_asset(text_stream *program) { } #line 82 "inweb/Chapter 6/Readme Writeme.w" ; - filename *template_vn = Filenames__in(Pathnames__from_text(program), TL_IS_717); + filename *template_vn = Filenames__in(Pathnames__from_text(program), TL_IS_713); if (TextFiles__exists(template_vn)) { #line 101 "inweb/Chapter 6/Readme Writeme.w" @@ -33394,7 +33418,7 @@ writeme_asset *Readme__find_asset(text_stream *program) { } #line 84 "inweb/Chapter 6/Readme Writeme.w" ; - filename *rmt_vn = Filenames__in(Pathnames__from_text(program), TL_IS_718); + filename *rmt_vn = Filenames__in(Pathnames__from_text(program), TL_IS_714); if (TextFiles__exists(rmt_vn)) { #line 105 "inweb/Chapter 6/Readme Writeme.w" @@ -33404,7 +33428,7 @@ writeme_asset *Readme__find_asset(text_stream *program) { } #line 86 "inweb/Chapter 6/Readme Writeme.w" ; - rmt_vn = Filenames__in(Pathnames__from_text(program), TL_IS_719); + rmt_vn = Filenames__in(Pathnames__from_text(program), TL_IS_715); if (TextFiles__exists(rmt_vn)) { #line 105 "inweb/Chapter 6/Readme Writeme.w" @@ -33479,7 +33503,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_720; + C->home = TL_IS_716; C->assets_path = NULL; C->patterns_path = NULL; colony_reader_state crs; @@ -33503,8 +33527,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_721)) CM->web_rather_than_module = TRUE; - else if (Str__eq(mr.exp[0], TL_IS_722)) CM->web_rather_than_module = FALSE; + if (Str__eq(mr.exp[0], TL_IS_717)) CM->web_rather_than_module = TRUE; + else if (Str__eq(mr.exp[0], TL_IS_718)) 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); @@ -33512,7 +33536,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_723, 6)) { + if (Str__suffix_eq(CM->path, TL_IS_719, 6)) { filename *F = Filenames__from_text(CM->path); Filenames__write_unextended_leafname(CM->home_leaf, F); WRITE_TO(CM->home_leaf, ".html"); @@ -33652,7 +33676,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_724, 6)) + if (Str__suffix_eq(CM->path, TL_IS_720, 6)) F = Filenames__from_text(CM->path); else P = Pathnames__from_text(CM->path); @@ -33679,7 +33703,7 @@ text_stream *Colonies__home(void) { colony *C; LOOP_OVER(C, colony) return C->home; - return TL_IS_725; + return TL_IS_721; } pathname *Colonies__assets_path(void) { @@ -33871,7 +33895,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_726, L); + Main__error_in_web(TL_IS_722, L); WebModules__named_reference(&found_M, &found_Sm, &bare_module_name, title, search_M, text, TRUE, FALSE); return FALSE; @@ -33953,7 +33977,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_727)) { + if (Str__ne(to_M->module_name, TL_IS_723)) { colony_member *to_C = Colonies__find(to_M->module_name); if (to_C) { pathname *from_path = Filenames__up(from); @@ -34036,678 +34060,674 @@ void register_tangled_text_literals(void) { TL_IS_51 = Str__literal(L"spurious text before first requirement"); TL_IS_52 = Str__literal(L"CONTENT BEGINS"); TL_IS_53 = Str__literal(L"CONTENT ENDS"); - TL_IS_54 = Str__literal(L"tl"); - TL_IS_55 = Str__literal(L"tr"); - TL_IS_56 = Str__literal(L"bl"); - TL_IS_57 = Str__literal(L"br"); - TL_IS_58 = Str__literal(L"inform:/doc_images/ornament_flower.png"); - TL_IS_59 = Str__literal(L"ePub"); - TL_IS_60 = Str__literal(L"OEBPS"); - TL_IS_61 = Str__literal(L"mimetype"); - TL_IS_62 = Str__literal(L"META-INF"); - TL_IS_63 = Str__literal(L"container.xml"); - TL_IS_64 = Str__literal(L"cover.html"); - TL_IS_65 = Str__literal(L"Cover"); - TL_IS_66 = Str__literal(L"cover"); - TL_IS_67 = Str__literal(L"content.opf"); - TL_IS_68 = Str__literal(L"toc.ncx"); - TL_IS_69 = Str__literal(L".."); - TL_IS_70 = Str__literal(L"A"); - TL_IS_71 = Str__literal(L"Sequential Section Ranges"); - TL_IS_72 = Str__literal(L"On"); - TL_IS_73 = Str__literal(L"Web Syntax Version: 1"); - TL_IS_74 = Str__literal(L"Web Syntax Version: 2"); - TL_IS_75 = Str__literal(L"S"); - TL_IS_76 = Str__literal(L"Sections"); - TL_IS_77 = Str__literal(L"All"); - TL_IS_78 = Str__literal(L"Headers"); - TL_IS_79 = Str__literal(L"single-file webs cannot Import modules"); - TL_IS_80 = Str__literal(L"Language"); + TL_IS_54 = Str__literal(L"inform:/doc_images/ornament_flower.png"); + TL_IS_55 = Str__literal(L"ePub"); + TL_IS_56 = Str__literal(L"OEBPS"); + TL_IS_57 = Str__literal(L"mimetype"); + TL_IS_58 = Str__literal(L"META-INF"); + TL_IS_59 = Str__literal(L"container.xml"); + TL_IS_60 = Str__literal(L"cover.html"); + TL_IS_61 = Str__literal(L"Cover"); + TL_IS_62 = Str__literal(L"cover"); + TL_IS_63 = Str__literal(L"content.opf"); + TL_IS_64 = Str__literal(L"toc.ncx"); + TL_IS_65 = Str__literal(L".."); + TL_IS_66 = Str__literal(L"A"); + TL_IS_67 = Str__literal(L"Sequential Section Ranges"); + TL_IS_68 = Str__literal(L"On"); + TL_IS_69 = Str__literal(L"Web Syntax Version: 1"); + TL_IS_70 = Str__literal(L"Web Syntax Version: 2"); + TL_IS_71 = Str__literal(L"S"); + TL_IS_72 = Str__literal(L"Sections"); + TL_IS_73 = Str__literal(L"All"); + TL_IS_74 = Str__literal(L"Headers"); + TL_IS_75 = Str__literal(L"single-file webs cannot Import modules"); + TL_IS_76 = Str__literal(L"Language"); + TL_IS_77 = Str__literal(L"Language"); + TL_IS_78 = Str__literal(L"Contents.w"); + TL_IS_79 = Str__literal(L"Title"); + TL_IS_80 = Str__literal(L"Author"); TL_IS_81 = Str__literal(L"Language"); - TL_IS_82 = Str__literal(L"Contents.w"); - TL_IS_83 = Str__literal(L"Title"); - TL_IS_84 = Str__literal(L"Author"); - TL_IS_85 = Str__literal(L"Language"); - TL_IS_86 = Str__literal(L"None"); - TL_IS_87 = Str__literal(L"Purpose"); - TL_IS_88 = Str__literal(L""); - TL_IS_89 = Str__literal(L"License"); - TL_IS_90 = Str__literal(L"Licence"); - TL_IS_91 = Str__literal(L"Short Title"); - TL_IS_92 = Str__literal(L"Capitalized Title"); - TL_IS_93 = Str__literal(L"Build Date"); - TL_IS_94 = Str__literal(L"Build Number"); - TL_IS_95 = Str__literal(L"Prerelease"); - TL_IS_96 = Str__literal(L"Semantic Version Number"); - TL_IS_97 = Str__literal(L"Version Number"); - TL_IS_98 = Str__literal(L"1"); - TL_IS_99 = Str__literal(L"Version Name"); - TL_IS_100 = Str__literal(L"Index Template"); - TL_IS_101 = Str__literal(L"Preform Language"); - TL_IS_102 = Str__literal(L"Declare Section Usage"); + TL_IS_82 = Str__literal(L"None"); + TL_IS_83 = Str__literal(L"Purpose"); + TL_IS_84 = Str__literal(L""); + TL_IS_85 = Str__literal(L"License"); + TL_IS_86 = Str__literal(L"Licence"); + TL_IS_87 = Str__literal(L"Short Title"); + TL_IS_88 = Str__literal(L"Capitalized Title"); + TL_IS_89 = Str__literal(L"Build Date"); + TL_IS_90 = Str__literal(L"Build Number"); + TL_IS_91 = Str__literal(L"Prerelease"); + TL_IS_92 = Str__literal(L"Semantic Version Number"); + TL_IS_93 = Str__literal(L"Version Number"); + TL_IS_94 = Str__literal(L"1"); + TL_IS_95 = Str__literal(L"Version Name"); + TL_IS_96 = Str__literal(L"Index Template"); + TL_IS_97 = Str__literal(L"Preform Language"); + TL_IS_98 = Str__literal(L"Declare Section Usage"); + TL_IS_99 = Str__literal(L"Off"); + TL_IS_100 = Str__literal(L"Namespaces"); + TL_IS_101 = Str__literal(L"Off"); + TL_IS_102 = Str__literal(L"Sequential Section Ranges"); TL_IS_103 = Str__literal(L"Off"); - TL_IS_104 = Str__literal(L"Namespaces"); + TL_IS_104 = Str__literal(L"Strict Usage Rules"); TL_IS_105 = Str__literal(L"Off"); - TL_IS_106 = Str__literal(L"Sequential Section Ranges"); - TL_IS_107 = Str__literal(L"Off"); - TL_IS_108 = Str__literal(L"Strict Usage Rules"); - TL_IS_109 = Str__literal(L"Off"); - TL_IS_110 = Str__literal(L"TeX Mathematics Notation"); - TL_IS_111 = Str__literal(L"$"); - TL_IS_112 = Str__literal(L"TeX Mathematics Displayed Notation"); - TL_IS_113 = Str__literal(L"$$"); - TL_IS_114 = Str__literal(L"Footnote Begins Notation"); - TL_IS_115 = Str__literal(L"["); - TL_IS_116 = Str__literal(L"Footnote Ends Notation"); - TL_IS_117 = Str__literal(L"]"); - TL_IS_118 = Str__literal(L"Code In Commentary Notation"); - TL_IS_119 = Str__literal(L"|"); - TL_IS_120 = Str__literal(L"Code In Code Comments Notation"); - TL_IS_121 = Str__literal(L"|"); - TL_IS_122 = Str__literal(L"Cross-References Notation"); - TL_IS_123 = Str__literal(L"//"); - TL_IS_124 = Str__literal(L"Web Syntax Version"); - TL_IS_125 = Str__literal(L"Paragraph Numbers Visibility"); - TL_IS_126 = Str__literal(L"On"); - TL_IS_127 = Str__literal(L"Capitalized Title"); - TL_IS_128 = Str__literal(L"miscellaneous"); - TL_IS_129 = Str__literal(L"(main)"); - TL_IS_130 = Str__literal(L"build.txt"); - TL_IS_131 = Str__literal(L"build.txt"); - TL_IS_132 = Str__literal(L"Prerelease"); - TL_IS_133 = Str__literal(L"Build Number"); - TL_IS_134 = Str__literal(L"Build Date"); + TL_IS_106 = Str__literal(L"TeX Mathematics Notation"); + TL_IS_107 = Str__literal(L"$"); + TL_IS_108 = Str__literal(L"TeX Mathematics Displayed Notation"); + TL_IS_109 = Str__literal(L"$$"); + TL_IS_110 = Str__literal(L"Footnote Begins Notation"); + TL_IS_111 = Str__literal(L"["); + TL_IS_112 = Str__literal(L"Footnote Ends Notation"); + TL_IS_113 = Str__literal(L"]"); + TL_IS_114 = Str__literal(L"Code In Commentary Notation"); + TL_IS_115 = Str__literal(L"|"); + TL_IS_116 = Str__literal(L"Code In Code Comments Notation"); + TL_IS_117 = Str__literal(L"|"); + TL_IS_118 = Str__literal(L"Cross-References Notation"); + TL_IS_119 = Str__literal(L"//"); + TL_IS_120 = Str__literal(L"Web Syntax Version"); + TL_IS_121 = Str__literal(L"Paragraph Numbers Visibility"); + TL_IS_122 = Str__literal(L"On"); + TL_IS_123 = Str__literal(L"Capitalized Title"); + TL_IS_124 = Str__literal(L"miscellaneous"); + TL_IS_125 = Str__literal(L"(main)"); + TL_IS_126 = Str__literal(L"build.txt"); + TL_IS_127 = Str__literal(L"build.txt"); + TL_IS_128 = Str__literal(L"Prerelease"); + TL_IS_129 = Str__literal(L"Build Number"); + TL_IS_130 = Str__literal(L"Build Date"); + TL_IS_131 = Str__literal(L"Semantic Version Number"); + TL_IS_132 = Str__literal(L"Version Number"); + TL_IS_133 = Str__literal(L"Prerelease"); + TL_IS_134 = Str__literal(L"Build Number"); TL_IS_135 = Str__literal(L"Semantic Version Number"); - TL_IS_136 = Str__literal(L"Version Number"); - TL_IS_137 = Str__literal(L"Prerelease"); - TL_IS_138 = Str__literal(L"Build Number"); - TL_IS_139 = Str__literal(L"Semantic Version Number"); - TL_IS_140 = Str__literal(L"Sections"); - TL_IS_141 = Str__literal(L"inweb"); - TL_IS_142 = Str__literal(L"Patterns"); - TL_IS_143 = Str__literal(L"Materials"); - TL_IS_144 = Str__literal(L"script.mkscript"); - TL_IS_145 = Str__literal(L"script.giscript"); - TL_IS_146 = Str__literal(L"script.rmscript"); - TL_IS_147 = Str__literal(L"Short Title"); - TL_IS_148 = Str__literal(L"Short Title"); - TL_IS_149 = Str__literal(L"Title"); - TL_IS_150 = Str__literal(L"0"); - TL_IS_151 = Str__literal(L"for locating programming language definitions"); - TL_IS_152 = Str__literal(L"for analysing a web"); - TL_IS_153 = Str__literal(L"for weaving a web"); - TL_IS_154 = Str__literal(L"for tangling a web"); - TL_IS_155 = Str__literal(L"for dealing with colonies of webs together"); - TL_IS_156 = Str__literal(L".inweb"); - TL_IS_157 = Str__literal(L"0"); - TL_IS_158 = Str__literal(L"Title"); - TL_IS_159 = Str__literal(L"Booklet Title"); - TL_IS_160 = Str__literal(L"Colours"); - TL_IS_161 = Str__literal(L"Colours"); - TL_IS_162 = Str__literal(L""); - TL_IS_163 = Str__literal(L"Version Number"); - TL_IS_164 = Str__literal(L"Version Number"); - TL_IS_165 = Str__literal(L" "); - TL_IS_166 = Str__literal(L"template-index.html"); - TL_IS_167 = Str__literal(L"index.html"); - TL_IS_168 = Str__literal(L"Index"); - TL_IS_169 = Str__literal(L"index"); - TL_IS_170 = Str__literal(L"0"); - TL_IS_171 = Str__literal(L"pattern.txt"); - TL_IS_172 = Str__literal(L"Patterns"); - TL_IS_173 = Str__literal(L"pattern.txt"); - TL_IS_174 = Str__literal(L"pattern.txt"); - TL_IS_175 = Str__literal(L"name"); - TL_IS_176 = Str__literal(L"plugin"); - TL_IS_177 = Str__literal(L"format"); - TL_IS_178 = Str__literal(L"number sections"); - TL_IS_179 = Str__literal(L"default range"); - TL_IS_180 = Str__literal(L"initial extension"); - TL_IS_181 = Str__literal(L"mathematics plugin"); - TL_IS_182 = Str__literal(L"footnotes plugin"); - TL_IS_183 = Str__literal(L"block template"); - TL_IS_184 = Str__literal(L"command"); - TL_IS_185 = Str__literal(L"bibliographic data"); - TL_IS_186 = Str__literal(L"assets"); - TL_IS_187 = Str__literal(L"yes"); - TL_IS_188 = Str__literal(L"no"); - TL_IS_189 = Str__literal(L"none"); - TL_IS_190 = Str__literal(L"WOVENPATH"); - TL_IS_191 = Str__literal(L"WOVEN"); - TL_IS_192 = Str__literal(L"PROCESS "); - TL_IS_193 = Str__literal(L"Colouring"); - TL_IS_194 = Str__literal(L"Coloring"); - TL_IS_195 = Str__literal(L"Colouring"); - TL_IS_196 = Str__literal(L"Coloring"); - TL_IS_197 = Str__literal(L""); - TL_IS_198 = Str__literal(L"copy"); - TL_IS_199 = Str__literal(L"copy"); - TL_IS_200 = Str__literal(L"private copy"); - TL_IS_201 = Str__literal(L"embed"); - TL_IS_202 = Str__literal(L"collate"); - TL_IS_203 = Str__literal(L"prefix"); - TL_IS_204 = Str__literal(L"suffix"); - TL_IS_205 = Str__literal(L"transform names"); - TL_IS_206 = Str__literal(L""); - TL_IS_207 = Str__literal(L"URL"); - TL_IS_208 = Str__literal(L"URL"); - TL_IS_209 = Str__literal(L"Inweb Version"); - TL_IS_210 = Str__literal(L"Language"); - TL_IS_211 = Str__literal(L"Purpose"); - TL_IS_212 = Str__literal(L"Woven"); - TL_IS_213 = Str__literal(L"Tangled"); - TL_IS_214 = Str__literal(L"Title"); - TL_IS_215 = Str__literal(L""); - TL_IS_216 = Str__literal(L"="); - TL_IS_217 = Str__literal(L"@"); - TL_IS_218 = Str__literal(L"Figures"); - TL_IS_219 = Str__literal(L"unknown [[command]]"); - TL_IS_220 = Str__literal(L"<...> definition begins outside of a paragraph"); - TL_IS_221 = Str__literal(L"(very early code)"); - TL_IS_222 = Str__literal(L"(early code)"); - TL_IS_223 = Str__literal(L"Extracts"); - TL_IS_224 = Str__literal(L"Figures"); - TL_IS_225 = Str__literal(L"HTML"); - TL_IS_226 = Str__literal(L"Audio"); - TL_IS_227 = Str__literal(L"Video"); - TL_IS_228 = Str__literal(L"Download"); - TL_IS_229 = Str__literal(L"Download"); + TL_IS_136 = Str__literal(L"Sections"); + TL_IS_137 = Str__literal(L"inweb"); + TL_IS_138 = Str__literal(L"Patterns"); + TL_IS_139 = Str__literal(L"Materials"); + TL_IS_140 = Str__literal(L"script.mkscript"); + TL_IS_141 = Str__literal(L"script.giscript"); + TL_IS_142 = Str__literal(L"script.rmscript"); + TL_IS_143 = Str__literal(L"Short Title"); + TL_IS_144 = Str__literal(L"Short Title"); + TL_IS_145 = Str__literal(L"Title"); + TL_IS_146 = Str__literal(L"0"); + TL_IS_147 = Str__literal(L"for locating programming language definitions"); + TL_IS_148 = Str__literal(L"for analysing a web"); + TL_IS_149 = Str__literal(L"for weaving a web"); + TL_IS_150 = Str__literal(L"for tangling a web"); + TL_IS_151 = Str__literal(L"for dealing with colonies of webs together"); + TL_IS_152 = Str__literal(L".inweb"); + TL_IS_153 = Str__literal(L"0"); + TL_IS_154 = Str__literal(L"Title"); + TL_IS_155 = Str__literal(L"Booklet Title"); + TL_IS_156 = Str__literal(L"Colours"); + TL_IS_157 = Str__literal(L"Colours"); + TL_IS_158 = Str__literal(L""); + TL_IS_159 = Str__literal(L"Version Number"); + TL_IS_160 = Str__literal(L"Version Number"); + TL_IS_161 = Str__literal(L" "); + TL_IS_162 = Str__literal(L"template-index.html"); + TL_IS_163 = Str__literal(L"index.html"); + TL_IS_164 = Str__literal(L"Index"); + TL_IS_165 = Str__literal(L"index"); + TL_IS_166 = Str__literal(L"0"); + TL_IS_167 = Str__literal(L"pattern.txt"); + TL_IS_168 = Str__literal(L"Patterns"); + TL_IS_169 = Str__literal(L"pattern.txt"); + TL_IS_170 = Str__literal(L"pattern.txt"); + TL_IS_171 = Str__literal(L"name"); + TL_IS_172 = Str__literal(L"plugin"); + TL_IS_173 = Str__literal(L"format"); + TL_IS_174 = Str__literal(L"number sections"); + TL_IS_175 = Str__literal(L"default range"); + TL_IS_176 = Str__literal(L"initial extension"); + TL_IS_177 = Str__literal(L"mathematics plugin"); + TL_IS_178 = Str__literal(L"footnotes plugin"); + TL_IS_179 = Str__literal(L"block template"); + TL_IS_180 = Str__literal(L"command"); + TL_IS_181 = Str__literal(L"bibliographic data"); + TL_IS_182 = Str__literal(L"assets"); + TL_IS_183 = Str__literal(L"yes"); + TL_IS_184 = Str__literal(L"no"); + TL_IS_185 = Str__literal(L"none"); + TL_IS_186 = Str__literal(L"WOVENPATH"); + TL_IS_187 = Str__literal(L"WOVEN"); + TL_IS_188 = Str__literal(L"PROCESS "); + TL_IS_189 = Str__literal(L"Colouring"); + TL_IS_190 = Str__literal(L"Coloring"); + TL_IS_191 = Str__literal(L"Colouring"); + TL_IS_192 = Str__literal(L"Coloring"); + TL_IS_193 = Str__literal(L""); + TL_IS_194 = Str__literal(L"copy"); + TL_IS_195 = Str__literal(L"copy"); + TL_IS_196 = Str__literal(L"private copy"); + TL_IS_197 = Str__literal(L"embed"); + TL_IS_198 = Str__literal(L"collate"); + TL_IS_199 = Str__literal(L"prefix"); + TL_IS_200 = Str__literal(L"suffix"); + TL_IS_201 = Str__literal(L"transform names"); + TL_IS_202 = Str__literal(L""); + TL_IS_203 = Str__literal(L"URL"); + TL_IS_204 = Str__literal(L"URL"); + TL_IS_205 = Str__literal(L"Inweb Version"); + TL_IS_206 = Str__literal(L"Language"); + TL_IS_207 = Str__literal(L"Purpose"); + TL_IS_208 = Str__literal(L"Woven"); + TL_IS_209 = Str__literal(L"Tangled"); + TL_IS_210 = Str__literal(L"Title"); + TL_IS_211 = Str__literal(L""); + TL_IS_212 = Str__literal(L"="); + TL_IS_213 = Str__literal(L"@"); + TL_IS_214 = Str__literal(L"Figures"); + TL_IS_215 = Str__literal(L"unknown [[command]]"); + TL_IS_216 = Str__literal(L"<...> definition begins outside of a paragraph"); + TL_IS_217 = Str__literal(L"(very early code)"); + TL_IS_218 = Str__literal(L"(early code)"); + TL_IS_219 = Str__literal(L"Extracts"); + TL_IS_220 = Str__literal(L"Figures"); + TL_IS_221 = Str__literal(L"HTML"); + TL_IS_222 = Str__literal(L"Audio"); + TL_IS_223 = Str__literal(L"Video"); + TL_IS_224 = Str__literal(L"Download"); + TL_IS_225 = Str__literal(L"Download"); + TL_IS_226 = Str__literal(L"Carousels"); + TL_IS_227 = Str__literal(L"Carousels"); + TL_IS_228 = Str__literal(L"Carousels"); + TL_IS_229 = Str__literal(L"Carousels"); TL_IS_230 = Str__literal(L"Carousels"); - TL_IS_231 = Str__literal(L"Carousels"); - TL_IS_232 = Str__literal(L"Carousels"); - TL_IS_233 = Str__literal(L"Carousels"); - TL_IS_234 = Str__literal(L"Carousels"); - TL_IS_235 = Str__literal(L"Videos"); - TL_IS_236 = Str__literal(L"unknown bracketed annotation"); - TL_IS_237 = Str__literal(L"unknown material after '='"); - TL_IS_238 = Str__literal(L"undisplayed"); - TL_IS_239 = Str__literal(L"hyperlinked"); - TL_IS_240 = Str__literal(L"only 'undisplayed' and/or 'hyperlinked' can precede 'text' here"); - TL_IS_241 = Str__literal(L"="); - TL_IS_242 = Str__literal(L"don't understand @command"); - TL_IS_243 = Str__literal(L"Purpose used after bar"); - TL_IS_244 = Str__literal(L"Interface used after bar"); - TL_IS_245 = Str__literal(L"Definitions used after bar"); - TL_IS_246 = Str__literal(L"second bar in the same section"); - TL_IS_247 = Str__literal(L"enumeration constants can't supply a value"); - TL_IS_248 = Str__literal(L"Paragraph Numbers Visibility"); - TL_IS_249 = Str__literal(L"Off"); - TL_IS_250 = Str__literal(L"P"); - TL_IS_251 = Str__literal(L"S"); - TL_IS_252 = Str__literal(L"Footnote Begins Notation"); - TL_IS_253 = Str__literal(L"Footnote Ends Notation"); - TL_IS_254 = Str__literal(L"Off"); - TL_IS_255 = Str__literal(L"ifdef-"); - TL_IS_256 = Str__literal(L"ifndef-"); - TL_IS_257 = Str__literal(L"."); - TL_IS_258 = Str__literal(L"This paragraph is used only if "); - TL_IS_259 = Str__literal(L" and if "); - TL_IS_260 = Str__literal(L" and "); - TL_IS_261 = Str__literal(L" is"); - TL_IS_262 = Str__literal(L" are"); - TL_IS_263 = Str__literal(L" defined"); - TL_IS_264 = Str__literal(L" undefined"); - TL_IS_265 = Str__literal(L"enumeration constants must belong to a _FAMILY"); - TL_IS_266 = Str__literal(L"this enumeration _FAMILY is unknown"); - TL_IS_267 = Str__literal(L"this enumeration _FAMILY already exists"); - TL_IS_268 = Str__literal(L"unrecognised interface line"); + TL_IS_231 = Str__literal(L"Videos"); + TL_IS_232 = Str__literal(L"unknown bracketed annotation"); + TL_IS_233 = Str__literal(L"unknown material after '='"); + TL_IS_234 = Str__literal(L"undisplayed"); + TL_IS_235 = Str__literal(L"hyperlinked"); + TL_IS_236 = Str__literal(L"only 'undisplayed' and/or 'hyperlinked' can precede 'text' here"); + TL_IS_237 = Str__literal(L"="); + TL_IS_238 = Str__literal(L"don't understand @command"); + TL_IS_239 = Str__literal(L"Purpose used after bar"); + TL_IS_240 = Str__literal(L"Interface used after bar"); + TL_IS_241 = Str__literal(L"Definitions used after bar"); + TL_IS_242 = Str__literal(L"second bar in the same section"); + TL_IS_243 = Str__literal(L"enumeration constants can't supply a value"); + TL_IS_244 = Str__literal(L"Paragraph Numbers Visibility"); + TL_IS_245 = Str__literal(L"Off"); + TL_IS_246 = Str__literal(L"P"); + TL_IS_247 = Str__literal(L"S"); + TL_IS_248 = Str__literal(L"Footnote Begins Notation"); + TL_IS_249 = Str__literal(L"Footnote Ends Notation"); + TL_IS_250 = Str__literal(L"Off"); + TL_IS_251 = Str__literal(L"ifdef-"); + TL_IS_252 = Str__literal(L"ifndef-"); + TL_IS_253 = Str__literal(L"."); + TL_IS_254 = Str__literal(L"This paragraph is used only if "); + TL_IS_255 = Str__literal(L" and if "); + TL_IS_256 = Str__literal(L" and "); + TL_IS_257 = Str__literal(L" is"); + TL_IS_258 = Str__literal(L" are"); + TL_IS_259 = Str__literal(L" defined"); + TL_IS_260 = Str__literal(L" undefined"); + TL_IS_261 = Str__literal(L"enumeration constants must belong to a _FAMILY"); + TL_IS_262 = Str__literal(L"this enumeration _FAMILY is unknown"); + TL_IS_263 = Str__literal(L"this enumeration _FAMILY already exists"); + TL_IS_264 = Str__literal(L"unrecognised interface line"); + TL_IS_265 = Str__literal(L"."); + TL_IS_266 = Str__literal(L".."); + TL_IS_267 = Str__literal(L"web"); + TL_IS_268 = Str__literal(L"default.mkscript"); TL_IS_269 = Str__literal(L"."); TL_IS_270 = Str__literal(L".."); TL_IS_271 = Str__literal(L"web"); - TL_IS_272 = Str__literal(L"default.mkscript"); - TL_IS_273 = Str__literal(L"."); - TL_IS_274 = Str__literal(L".."); - TL_IS_275 = Str__literal(L"web"); - TL_IS_276 = Str__literal(L"default.giscript"); - TL_IS_277 = Str__literal(L""); - TL_IS_278 = Str__literal(L"Chapters"); - TL_IS_279 = Str__literal(L"Modules"); - TL_IS_280 = Str__literal(L"Module Page"); - TL_IS_281 = Str__literal(L"Module Purpose"); - TL_IS_282 = Str__literal(L"Purpose"); - TL_IS_283 = Str__literal(L"Chapter Purpose"); - TL_IS_284 = Str__literal(L"Section Purpose"); - TL_IS_285 = Str__literal(L"Purpose"); - TL_IS_286 = Str__literal(L"index.html"); - TL_IS_287 = Str__literal(L"inweb"); - TL_IS_288 = Str__literal(L"inweb"); - TL_IS_289 = Str__literal(L"inweb"); - TL_IS_290 = Str__literal(L"End of weave"); - TL_IS_291 = Str__literal(L"Definitions"); - TL_IS_292 = Str__literal(L"bad start to paragraph"); - TL_IS_293 = Str__literal(L""); - TL_IS_294 = Str__literal(L""); - TL_IS_295 = Str__literal(L"footnote never cued"); - TL_IS_296 = Str__literal(L"Preform"); + TL_IS_272 = Str__literal(L"default.giscript"); + TL_IS_273 = Str__literal(L""); + TL_IS_274 = Str__literal(L"Chapters"); + TL_IS_275 = Str__literal(L"Modules"); + TL_IS_276 = Str__literal(L"Module Page"); + TL_IS_277 = Str__literal(L"Module Purpose"); + TL_IS_278 = Str__literal(L"Purpose"); + TL_IS_279 = Str__literal(L"Chapter Purpose"); + TL_IS_280 = Str__literal(L"Section Purpose"); + TL_IS_281 = Str__literal(L"Purpose"); + TL_IS_282 = Str__literal(L"index.html"); + TL_IS_283 = Str__literal(L"inweb"); + TL_IS_284 = Str__literal(L"inweb"); + TL_IS_285 = Str__literal(L"inweb"); + TL_IS_286 = Str__literal(L"End of weave"); + TL_IS_287 = Str__literal(L"Definitions"); + TL_IS_288 = Str__literal(L"bad start to paragraph"); + TL_IS_289 = Str__literal(L""); + TL_IS_290 = Str__literal(L""); + TL_IS_291 = Str__literal(L"footnote never cued"); + TL_IS_292 = Str__literal(L"Preform"); + TL_IS_293 = Str__literal(L"Preform"); + TL_IS_294 = Str__literal(L"define"); + TL_IS_295 = Str__literal(L"default"); + TL_IS_296 = Str__literal(L"enum"); TL_IS_297 = Str__literal(L"Preform"); - TL_IS_298 = Str__literal(L"define"); - TL_IS_299 = Str__literal(L"default"); - TL_IS_300 = Str__literal(L"enum"); - TL_IS_301 = Str__literal(L"Preform"); - TL_IS_302 = Str__literal(L"This is "); - TL_IS_303 = Str__literal(L"words: About Preform"); - TL_IS_304 = Str__literal(L"Preform grammar"); - TL_IS_305 = Str__literal(L"Preform grammar"); - TL_IS_306 = Str__literal(L", not regular C code."); - TL_IS_307 = Str__literal(L"This code is "); - TL_IS_308 = Str__literal(L"never used"); - TL_IS_309 = Str__literal(L", "); - TL_IS_310 = Str__literal(L" and "); - TL_IS_311 = Str__literal(L"used in "); - TL_IS_312 = Str__literal(L" (twice)"); - TL_IS_313 = Str__literal(L" (three times)"); - TL_IS_314 = Str__literal(L" (four times)"); - TL_IS_315 = Str__literal(L" (five times)"); - TL_IS_316 = Str__literal(L"."); - TL_IS_317 = Str__literal(L"The structure "); - TL_IS_318 = Str__literal(L" is private to this section"); - TL_IS_319 = Str__literal(L" is accessed in "); - TL_IS_320 = Str__literal(L", "); - TL_IS_321 = Str__literal(L" and here"); - TL_IS_322 = Str__literal(L"."); - TL_IS_323 = Str__literal(L"The function "); - TL_IS_324 = Str__literal(L" appears nowhere else"); - TL_IS_325 = Str__literal(L"none"); - TL_IS_326 = Str__literal(L")"); - TL_IS_327 = Str__literal(L"."); - TL_IS_328 = Str__literal(L" is used in "); - TL_IS_329 = Str__literal(L"), "); - TL_IS_330 = Str__literal(L", "); - TL_IS_331 = Str__literal(L" ("); - TL_IS_332 = Str__literal(L" - "); - TL_IS_333 = Str__literal(L", "); - TL_IS_334 = Str__literal(L"Code In Code Comments Notation"); - TL_IS_335 = Str__literal(L"Code In Commentary Notation"); + TL_IS_298 = Str__literal(L"This is "); + TL_IS_299 = Str__literal(L"words: About Preform"); + TL_IS_300 = Str__literal(L"Preform grammar"); + TL_IS_301 = Str__literal(L"Preform grammar"); + TL_IS_302 = Str__literal(L", not regular C code."); + TL_IS_303 = Str__literal(L"This code is "); + TL_IS_304 = Str__literal(L"never used"); + TL_IS_305 = Str__literal(L", "); + TL_IS_306 = Str__literal(L" and "); + TL_IS_307 = Str__literal(L"used in "); + TL_IS_308 = Str__literal(L" (twice)"); + TL_IS_309 = Str__literal(L" (three times)"); + TL_IS_310 = Str__literal(L" (four times)"); + TL_IS_311 = Str__literal(L" (five times)"); + TL_IS_312 = Str__literal(L"."); + TL_IS_313 = Str__literal(L"The structure "); + TL_IS_314 = Str__literal(L" is private to this section"); + TL_IS_315 = Str__literal(L" is accessed in "); + TL_IS_316 = Str__literal(L", "); + TL_IS_317 = Str__literal(L" and here"); + TL_IS_318 = Str__literal(L"."); + TL_IS_319 = Str__literal(L"The function "); + TL_IS_320 = Str__literal(L" appears nowhere else"); + TL_IS_321 = Str__literal(L"none"); + TL_IS_322 = Str__literal(L")"); + TL_IS_323 = Str__literal(L"."); + TL_IS_324 = Str__literal(L" is used in "); + TL_IS_325 = Str__literal(L"), "); + TL_IS_326 = Str__literal(L", "); + TL_IS_327 = Str__literal(L" ("); + TL_IS_328 = Str__literal(L" - "); + TL_IS_329 = Str__literal(L", "); + TL_IS_330 = Str__literal(L"Code In Code Comments Notation"); + TL_IS_331 = Str__literal(L"Code In Commentary Notation"); + TL_IS_332 = Str__literal(L"Off"); + TL_IS_333 = Str__literal(L"TeX Mathematics Displayed Notation"); + TL_IS_334 = Str__literal(L"Off"); + TL_IS_335 = Str__literal(L"TeX Mathematics Notation"); TL_IS_336 = Str__literal(L"Off"); - TL_IS_337 = Str__literal(L"TeX Mathematics Displayed Notation"); + TL_IS_337 = Str__literal(L"Cross-References Notation"); TL_IS_338 = Str__literal(L"Off"); - TL_IS_339 = Str__literal(L"TeX Mathematics Notation"); - TL_IS_340 = Str__literal(L"Off"); - TL_IS_341 = Str__literal(L"Cross-References Notation"); - TL_IS_342 = Str__literal(L"Off"); - TL_IS_343 = Str__literal(L"http://"); - TL_IS_344 = Str__literal(L"https://"); - TL_IS_345 = Str__literal(L"this is a cue for a missing note"); - TL_IS_346 = Str__literal(L"Cross-References Notation"); - TL_IS_347 = Str__literal(L"Off"); - TL_IS_348 = Str__literal(L"http://"); - TL_IS_349 = Str__literal(L"https://"); - TL_IS_350 = Str__literal(L"misplaced definition"); - TL_IS_351 = Str__literal(L"unknown macro"); - TL_IS_352 = Str__literal(L"Dialects"); - TL_IS_353 = Str__literal(L"C"); - TL_IS_354 = Str__literal(L"Languages"); - TL_IS_355 = Str__literal(L"InC"); - TL_IS_356 = Str__literal(L"Name"); - TL_IS_357 = Str__literal(L"Details"); - TL_IS_358 = Str__literal(L"Extension"); - TL_IS_359 = Str__literal(L"Line Comment"); - TL_IS_360 = Str__literal(L"Whole Line Comment"); - TL_IS_361 = Str__literal(L"Multiline Comment Open"); - TL_IS_362 = Str__literal(L"Multiline Comment Close"); - TL_IS_363 = Str__literal(L"String Literal"); - TL_IS_364 = Str__literal(L"String Literal Escape"); - TL_IS_365 = Str__literal(L"Character Literal"); - TL_IS_366 = Str__literal(L"Character Literal Escape"); - TL_IS_367 = Str__literal(L"Binary Literal Prefix"); - TL_IS_368 = Str__literal(L"Octal Literal Prefix"); - TL_IS_369 = Str__literal(L"Hexadecimal Literal Prefix"); - TL_IS_370 = Str__literal(L"Negative Literal Prefix"); - TL_IS_371 = Str__literal(L"Shebang"); - TL_IS_372 = Str__literal(L"Line Marker"); - TL_IS_373 = Str__literal(L"Before Named Paragraph Expansion"); - TL_IS_374 = Str__literal(L"After Named Paragraph Expansion"); - TL_IS_375 = Str__literal(L"Start Definition"); - TL_IS_376 = Str__literal(L"Prolong Definition"); - TL_IS_377 = Str__literal(L"End Definition"); - TL_IS_378 = Str__literal(L"Start Ifdef"); - TL_IS_379 = Str__literal(L"Start Ifndef"); - TL_IS_380 = Str__literal(L"End Ifdef"); - TL_IS_381 = Str__literal(L"End Ifndef"); - TL_IS_382 = Str__literal(L"C-Like"); - TL_IS_383 = Str__literal(L"Suppress Disclaimer"); - TL_IS_384 = Str__literal(L"Supports Namespaces"); - TL_IS_385 = Str__literal(L"Function Declaration Notation"); - TL_IS_386 = Str__literal(L"Type Declaration Notation"); - TL_IS_387 = Str__literal(L"}"); - TL_IS_388 = Str__literal(L"unquoted"); - TL_IS_389 = Str__literal(L"{"); - TL_IS_390 = Str__literal(L"debug"); - TL_IS_391 = Str__literal(L"!string"); - TL_IS_392 = Str__literal(L"!function"); - TL_IS_393 = Str__literal(L"!definition"); - TL_IS_394 = Str__literal(L"!reserved"); - TL_IS_395 = Str__literal(L"!element"); - TL_IS_396 = Str__literal(L"!identifier"); - TL_IS_397 = Str__literal(L"!character"); - TL_IS_398 = Str__literal(L"!constant"); - TL_IS_399 = Str__literal(L"!plain"); - TL_IS_400 = Str__literal(L"!extract"); - TL_IS_401 = Str__literal(L"!comment"); - TL_IS_402 = Str__literal(L"true"); - TL_IS_403 = Str__literal(L"false"); - TL_IS_404 = Str__literal(L"both"); - TL_IS_405 = Str__literal(L"brackets"); - TL_IS_406 = Str__literal(L"characters"); - TL_IS_407 = Str__literal(L"coloured"); - TL_IS_408 = Str__literal(L"colouring"); - TL_IS_409 = Str__literal(L"debug"); - TL_IS_410 = Str__literal(L"false"); - TL_IS_411 = Str__literal(L"in"); - TL_IS_412 = Str__literal(L"instances"); - TL_IS_413 = Str__literal(L"keyword"); - TL_IS_414 = Str__literal(L"matches"); - TL_IS_415 = Str__literal(L"matching"); - TL_IS_416 = Str__literal(L"not"); - TL_IS_417 = Str__literal(L"of"); - TL_IS_418 = Str__literal(L"on"); - TL_IS_419 = Str__literal(L"optionally"); - TL_IS_420 = Str__literal(L"prefix"); - TL_IS_421 = Str__literal(L"runs"); - TL_IS_422 = Str__literal(L"spaced"); - TL_IS_423 = Str__literal(L"suffix"); - TL_IS_424 = Str__literal(L"true"); - TL_IS_425 = Str__literal(L"unquoted"); - TL_IS_426 = Str__literal(L"Structures"); - TL_IS_427 = Str__literal(L"Main::"); - TL_IS_428 = Str__literal(L"Tangled output generated by inweb: do not edit"); - TL_IS_429 = Str__literal(L"this programming language does not support @d"); - TL_IS_430 = Str__literal(L"this programming language does not support multiline @d"); - TL_IS_431 = Str__literal(L"Preform"); - TL_IS_432 = Str__literal(L"Preform"); - TL_IS_433 = Str__literal(L"Namespaces"); - TL_IS_434 = Str__literal(L"Being internally called, this function mustn't belong to a :: namespace"); - TL_IS_435 = Str__literal(L"Being externally called, this function must belong to a :: namespace"); - TL_IS_436 = Str__literal(L"Structures"); - TL_IS_437 = Str__literal(L"program ended with conditional compilation open"); - TL_IS_438 = Str__literal(L"conditional compilation too deeply nested"); - TL_IS_439 = Str__literal(L"found #endif without #ifdef or #ifndef"); - TL_IS_440 = Str__literal(L"Preform"); - TL_IS_441 = Str__literal(L"'WR[...]' notation unavailable"); - TL_IS_442 = Str__literal(L"malformed '{ , }' formula"); - TL_IS_443 = Str__literal(L"fail"); - TL_IS_444 = Str__literal(L"fail production"); - TL_IS_445 = Str__literal(L"fail nonterminal"); - TL_IS_446 = Str__literal(L"advance "); - TL_IS_447 = Str__literal(L"pass "); - TL_IS_448 = Str__literal(L"lookahead"); - TL_IS_449 = Str__literal(L"-"); - TL_IS_450 = Str__literal(L"-"); - TL_IS_451 = Str__literal(L"most_recent_result"); - TL_IS_452 = Str__literal(L"most_recent_result_p"); - TL_IS_453 = Str__literal(L"Syntax.preform"); - TL_IS_454 = Str__literal(L"Preform Language"); - TL_IS_455 = Str__literal(L"Preform Language"); - TL_IS_456 = Str__literal(L"weave tree"); - TL_IS_457 = Str__literal(L"document"); - TL_IS_458 = Str__literal(L"head"); - TL_IS_459 = Str__literal(L"body"); - TL_IS_460 = Str__literal(L"tail"); - TL_IS_461 = Str__literal(L"chapter footer"); - TL_IS_462 = Str__literal(L"chapter header"); - TL_IS_463 = Str__literal(L"section footer"); - TL_IS_464 = Str__literal(L"section header"); - TL_IS_465 = Str__literal(L"section purpose"); - TL_IS_466 = Str__literal(L"subheading"); - TL_IS_467 = Str__literal(L"bar"); - TL_IS_468 = Str__literal(L"pagebreak"); - TL_IS_469 = Str__literal(L"linebreak"); - TL_IS_470 = Str__literal(L"paragraph"); - TL_IS_471 = Str__literal(L"endnote"); - TL_IS_472 = Str__literal(L"figure"); - TL_IS_473 = Str__literal(L"extract"); - TL_IS_474 = Str__literal(L"audio"); - TL_IS_475 = Str__literal(L"video"); - TL_IS_476 = Str__literal(L"download"); - TL_IS_477 = Str__literal(L"material"); - TL_IS_478 = Str__literal(L"embed"); - TL_IS_479 = Str__literal(L"pmac"); - TL_IS_480 = Str__literal(L"vskip"); - TL_IS_481 = Str__literal(L"chapter"); - TL_IS_482 = Str__literal(L"section"); - TL_IS_483 = Str__literal(L"code line"); - TL_IS_484 = Str__literal(L"function usage"); - TL_IS_485 = Str__literal(L"commentary"); - TL_IS_486 = Str__literal(L"carousel slide"); - TL_IS_487 = Str__literal(L"toc"); - TL_IS_488 = Str__literal(L"toc line"); - TL_IS_489 = Str__literal(L"chapter_title_page"); - TL_IS_490 = Str__literal(L"defn"); - TL_IS_491 = Str__literal(L"source_code"); - TL_IS_492 = Str__literal(L"url"); - TL_IS_493 = Str__literal(L"footnote_cue"); - TL_IS_494 = Str__literal(L"footnote"); - TL_IS_495 = Str__literal(L"display line"); - TL_IS_496 = Str__literal(L"function defn"); - TL_IS_497 = Str__literal(L"item"); - TL_IS_498 = Str__literal(L"grammar index"); - TL_IS_499 = Str__literal(L"inline"); - TL_IS_500 = Str__literal(L"locale"); - TL_IS_501 = Str__literal(L"mathematics"); - TL_IS_502 = Str__literal(L"verbatim"); - TL_IS_503 = Str__literal(L"Weave Content"); - TL_IS_504 = Str__literal(L"plain"); - TL_IS_505 = Str__literal(L".txt"); - TL_IS_506 = Str__literal(L"TeX"); - TL_IS_507 = Str__literal(L".tex"); - TL_IS_508 = Str__literal(L"S"); - TL_IS_509 = Str__literal(L""); - TL_IS_510 = Str__literal(L"Figures"); - TL_IS_511 = Str__literal(L"weavesection"); - TL_IS_512 = Str__literal(L"weavesections"); - TL_IS_513 = Str__literal(L"weavesectionss"); - TL_IS_514 = Str__literal(L"weavesectionsss"); - TL_IS_515 = Str__literal(L"tweavesection"); - TL_IS_516 = Str__literal(L"tweavesections"); - TL_IS_517 = Str__literal(L"tweavesectionss"); - TL_IS_518 = Str__literal(L"tweavesectionsss"); - TL_IS_519 = Str__literal(L"nsweavesection"); - TL_IS_520 = Str__literal(L"nsweavesections"); - TL_IS_521 = Str__literal(L"HTML"); - TL_IS_522 = Str__literal(L".html"); - TL_IS_523 = Str__literal(L"ePub"); - TL_IS_524 = Str__literal(L".html"); + TL_IS_339 = Str__literal(L"http://"); + TL_IS_340 = Str__literal(L"https://"); + TL_IS_341 = Str__literal(L"this is a cue for a missing note"); + TL_IS_342 = Str__literal(L"Cross-References Notation"); + TL_IS_343 = Str__literal(L"Off"); + TL_IS_344 = Str__literal(L"http://"); + TL_IS_345 = Str__literal(L"https://"); + TL_IS_346 = Str__literal(L"misplaced definition"); + TL_IS_347 = Str__literal(L"unknown macro"); + TL_IS_348 = Str__literal(L"Dialects"); + TL_IS_349 = Str__literal(L"C"); + TL_IS_350 = Str__literal(L"Languages"); + TL_IS_351 = Str__literal(L"InC"); + TL_IS_352 = Str__literal(L"Name"); + TL_IS_353 = Str__literal(L"Details"); + TL_IS_354 = Str__literal(L"Extension"); + TL_IS_355 = Str__literal(L"Line Comment"); + TL_IS_356 = Str__literal(L"Whole Line Comment"); + TL_IS_357 = Str__literal(L"Multiline Comment Open"); + TL_IS_358 = Str__literal(L"Multiline Comment Close"); + TL_IS_359 = Str__literal(L"String Literal"); + TL_IS_360 = Str__literal(L"String Literal Escape"); + TL_IS_361 = Str__literal(L"Character Literal"); + TL_IS_362 = Str__literal(L"Character Literal Escape"); + TL_IS_363 = Str__literal(L"Binary Literal Prefix"); + TL_IS_364 = Str__literal(L"Octal Literal Prefix"); + TL_IS_365 = Str__literal(L"Hexadecimal Literal Prefix"); + TL_IS_366 = Str__literal(L"Negative Literal Prefix"); + TL_IS_367 = Str__literal(L"Shebang"); + TL_IS_368 = Str__literal(L"Line Marker"); + TL_IS_369 = Str__literal(L"Before Named Paragraph Expansion"); + TL_IS_370 = Str__literal(L"After Named Paragraph Expansion"); + TL_IS_371 = Str__literal(L"Start Definition"); + TL_IS_372 = Str__literal(L"Prolong Definition"); + TL_IS_373 = Str__literal(L"End Definition"); + TL_IS_374 = Str__literal(L"Start Ifdef"); + TL_IS_375 = Str__literal(L"Start Ifndef"); + TL_IS_376 = Str__literal(L"End Ifdef"); + TL_IS_377 = Str__literal(L"End Ifndef"); + TL_IS_378 = Str__literal(L"C-Like"); + TL_IS_379 = Str__literal(L"Suppress Disclaimer"); + TL_IS_380 = Str__literal(L"Supports Namespaces"); + TL_IS_381 = Str__literal(L"Function Declaration Notation"); + TL_IS_382 = Str__literal(L"Type Declaration Notation"); + TL_IS_383 = Str__literal(L"}"); + TL_IS_384 = Str__literal(L"unquoted"); + TL_IS_385 = Str__literal(L"{"); + TL_IS_386 = Str__literal(L"debug"); + TL_IS_387 = Str__literal(L"!string"); + TL_IS_388 = Str__literal(L"!function"); + TL_IS_389 = Str__literal(L"!definition"); + TL_IS_390 = Str__literal(L"!reserved"); + TL_IS_391 = Str__literal(L"!element"); + TL_IS_392 = Str__literal(L"!identifier"); + TL_IS_393 = Str__literal(L"!character"); + TL_IS_394 = Str__literal(L"!constant"); + TL_IS_395 = Str__literal(L"!plain"); + TL_IS_396 = Str__literal(L"!extract"); + TL_IS_397 = Str__literal(L"!comment"); + TL_IS_398 = Str__literal(L"true"); + TL_IS_399 = Str__literal(L"false"); + TL_IS_400 = Str__literal(L"both"); + TL_IS_401 = Str__literal(L"brackets"); + TL_IS_402 = Str__literal(L"characters"); + TL_IS_403 = Str__literal(L"coloured"); + TL_IS_404 = Str__literal(L"colouring"); + TL_IS_405 = Str__literal(L"debug"); + TL_IS_406 = Str__literal(L"false"); + TL_IS_407 = Str__literal(L"in"); + TL_IS_408 = Str__literal(L"instances"); + TL_IS_409 = Str__literal(L"keyword"); + TL_IS_410 = Str__literal(L"matches"); + TL_IS_411 = Str__literal(L"matching"); + TL_IS_412 = Str__literal(L"not"); + TL_IS_413 = Str__literal(L"of"); + TL_IS_414 = Str__literal(L"on"); + TL_IS_415 = Str__literal(L"optionally"); + TL_IS_416 = Str__literal(L"prefix"); + TL_IS_417 = Str__literal(L"runs"); + TL_IS_418 = Str__literal(L"spaced"); + TL_IS_419 = Str__literal(L"suffix"); + TL_IS_420 = Str__literal(L"true"); + TL_IS_421 = Str__literal(L"unquoted"); + TL_IS_422 = Str__literal(L"Structures"); + TL_IS_423 = Str__literal(L"Main::"); + TL_IS_424 = Str__literal(L"Tangled output generated by inweb: do not edit"); + TL_IS_425 = Str__literal(L"this programming language does not support @d"); + TL_IS_426 = Str__literal(L"this programming language does not support multiline @d"); + TL_IS_427 = Str__literal(L"Preform"); + TL_IS_428 = Str__literal(L"Preform"); + TL_IS_429 = Str__literal(L"Namespaces"); + TL_IS_430 = Str__literal(L"Being internally called, this function mustn't belong to a :: namespace"); + TL_IS_431 = Str__literal(L"Being externally called, this function must belong to a :: namespace"); + TL_IS_432 = Str__literal(L"Structures"); + TL_IS_433 = Str__literal(L"program ended with conditional compilation open"); + TL_IS_434 = Str__literal(L"conditional compilation too deeply nested"); + TL_IS_435 = Str__literal(L"found #endif without #ifdef or #ifndef"); + TL_IS_436 = Str__literal(L"Preform"); + TL_IS_437 = Str__literal(L"'WR[...]' notation unavailable"); + TL_IS_438 = Str__literal(L"malformed '{ , }' formula"); + TL_IS_439 = Str__literal(L"fail"); + TL_IS_440 = Str__literal(L"fail production"); + TL_IS_441 = Str__literal(L"fail nonterminal"); + TL_IS_442 = Str__literal(L"advance "); + TL_IS_443 = Str__literal(L"pass "); + TL_IS_444 = Str__literal(L"lookahead"); + TL_IS_445 = Str__literal(L"-"); + TL_IS_446 = Str__literal(L"-"); + TL_IS_447 = Str__literal(L"most_recent_result"); + TL_IS_448 = Str__literal(L"most_recent_result_p"); + TL_IS_449 = Str__literal(L"Syntax.preform"); + TL_IS_450 = Str__literal(L"Preform Language"); + TL_IS_451 = Str__literal(L"Preform Language"); + TL_IS_452 = Str__literal(L"weave tree"); + TL_IS_453 = Str__literal(L"document"); + TL_IS_454 = Str__literal(L"head"); + TL_IS_455 = Str__literal(L"body"); + TL_IS_456 = Str__literal(L"tail"); + TL_IS_457 = Str__literal(L"chapter footer"); + TL_IS_458 = Str__literal(L"chapter header"); + TL_IS_459 = Str__literal(L"section footer"); + TL_IS_460 = Str__literal(L"section header"); + TL_IS_461 = Str__literal(L"section purpose"); + TL_IS_462 = Str__literal(L"subheading"); + TL_IS_463 = Str__literal(L"bar"); + TL_IS_464 = Str__literal(L"pagebreak"); + TL_IS_465 = Str__literal(L"linebreak"); + TL_IS_466 = Str__literal(L"paragraph"); + TL_IS_467 = Str__literal(L"endnote"); + TL_IS_468 = Str__literal(L"figure"); + TL_IS_469 = Str__literal(L"extract"); + TL_IS_470 = Str__literal(L"audio"); + TL_IS_471 = Str__literal(L"video"); + TL_IS_472 = Str__literal(L"download"); + TL_IS_473 = Str__literal(L"material"); + TL_IS_474 = Str__literal(L"embed"); + TL_IS_475 = Str__literal(L"pmac"); + TL_IS_476 = Str__literal(L"vskip"); + TL_IS_477 = Str__literal(L"chapter"); + TL_IS_478 = Str__literal(L"section"); + TL_IS_479 = Str__literal(L"code line"); + TL_IS_480 = Str__literal(L"function usage"); + TL_IS_481 = Str__literal(L"commentary"); + TL_IS_482 = Str__literal(L"carousel slide"); + TL_IS_483 = Str__literal(L"toc"); + TL_IS_484 = Str__literal(L"toc line"); + TL_IS_485 = Str__literal(L"chapter_title_page"); + TL_IS_486 = Str__literal(L"defn"); + TL_IS_487 = Str__literal(L"source_code"); + TL_IS_488 = Str__literal(L"url"); + TL_IS_489 = Str__literal(L"footnote_cue"); + TL_IS_490 = Str__literal(L"footnote"); + TL_IS_491 = Str__literal(L"display line"); + TL_IS_492 = Str__literal(L"function defn"); + TL_IS_493 = Str__literal(L"item"); + TL_IS_494 = Str__literal(L"grammar index"); + TL_IS_495 = Str__literal(L"inline"); + TL_IS_496 = Str__literal(L"locale"); + TL_IS_497 = Str__literal(L"mathematics"); + TL_IS_498 = Str__literal(L"verbatim"); + TL_IS_499 = Str__literal(L"Weave Content"); + TL_IS_500 = Str__literal(L"plain"); + TL_IS_501 = Str__literal(L".txt"); + TL_IS_502 = Str__literal(L"TeX"); + TL_IS_503 = Str__literal(L".tex"); + TL_IS_504 = Str__literal(L"S"); + TL_IS_505 = Str__literal(L""); + TL_IS_506 = Str__literal(L"Figures"); + TL_IS_507 = Str__literal(L"weavesection"); + TL_IS_508 = Str__literal(L"weavesections"); + TL_IS_509 = Str__literal(L"weavesectionss"); + TL_IS_510 = Str__literal(L"weavesectionsss"); + TL_IS_511 = Str__literal(L"tweavesection"); + TL_IS_512 = Str__literal(L"tweavesections"); + TL_IS_513 = Str__literal(L"tweavesectionss"); + TL_IS_514 = Str__literal(L"tweavesectionsss"); + TL_IS_515 = Str__literal(L"nsweavesection"); + TL_IS_516 = Str__literal(L"nsweavesections"); + TL_IS_517 = Str__literal(L"HTML"); + TL_IS_518 = Str__literal(L".html"); + TL_IS_519 = Str__literal(L"ePub"); + TL_IS_520 = Str__literal(L".html"); + TL_IS_521 = Str__literal(L""); + TL_IS_522 = Str__literal(L"private copy"); + TL_IS_523 = Str__literal(L"Base"); + TL_IS_524 = Str__literal(L"Colours"); TL_IS_525 = Str__literal(L""); - TL_IS_526 = Str__literal(L"private copy"); - TL_IS_527 = Str__literal(L"Base"); - TL_IS_528 = Str__literal(L"Colours"); - TL_IS_529 = Str__literal(L""); - TL_IS_530 = Str__literal(L""); - TL_IS_531 = Str__literal(L"Breadcrumbs"); - TL_IS_532 = Str__literal(L"Title"); - TL_IS_533 = Str__literal(L"Short Title"); - TL_IS_534 = Str__literal(L"Short Title"); - TL_IS_535 = Str__literal(L"index.html"); - TL_IS_536 = Str__literal(L"S"); - TL_IS_537 = Str__literal(L"Sequential Section Ranges"); - TL_IS_538 = Str__literal(L"On"); - TL_IS_539 = Str__literal(L"Figures"); - TL_IS_540 = Str__literal(L"HTML"); - TL_IS_541 = Str__literal(L"Unable to find this HTML extract"); - TL_IS_542 = Str__literal(L"Audio"); - TL_IS_543 = Str__literal(L"Video"); + TL_IS_526 = Str__literal(L""); + TL_IS_527 = Str__literal(L"Breadcrumbs"); + TL_IS_528 = Str__literal(L"Title"); + TL_IS_529 = Str__literal(L"Short Title"); + TL_IS_530 = Str__literal(L"Short Title"); + TL_IS_531 = Str__literal(L"index.html"); + TL_IS_532 = Str__literal(L"S"); + TL_IS_533 = Str__literal(L"Sequential Section Ranges"); + TL_IS_534 = Str__literal(L"On"); + TL_IS_535 = Str__literal(L"Figures"); + TL_IS_536 = Str__literal(L"HTML"); + TL_IS_537 = Str__literal(L"Unable to find this HTML extract"); + TL_IS_538 = Str__literal(L"Audio"); + TL_IS_539 = Str__literal(L"Video"); + TL_IS_540 = Str__literal(L"Downloads"); + TL_IS_541 = Str__literal(L"Embedding"); + TL_IS_542 = Str__literal(L"Download.html"); + TL_IS_543 = Str__literal(L"Downloads are not supported"); TL_IS_544 = Str__literal(L"Downloads"); - TL_IS_545 = Str__literal(L"Embedding"); - TL_IS_546 = Str__literal(L"Download.html"); - TL_IS_547 = Str__literal(L"Downloads are not supported"); - TL_IS_548 = Str__literal(L"Downloads"); - TL_IS_549 = Str__literal(L"Download file missing or empty"); - TL_IS_550 = Str__literal(L"File Name"); - TL_IS_551 = Str__literal(L"File URL"); - TL_IS_552 = Str__literal(L"File Details"); - TL_IS_553 = Str__literal(L" byte"); - TL_IS_554 = Str__literal(L" bytes"); - TL_IS_555 = Str__literal(L"kB"); - TL_IS_556 = Str__literal(L"MB"); - TL_IS_557 = Str__literal(L"GB"); - TL_IS_558 = Str__literal(L"405"); - TL_IS_559 = Str__literal(L"720"); - TL_IS_560 = Str__literal(L"Embedding"); - TL_IS_561 = Str__literal(L"This is not a supported service"); - TL_IS_562 = Str__literal(L"Content ID"); - TL_IS_563 = Str__literal(L"Content Width"); - TL_IS_564 = Str__literal(L"Content Height"); - TL_IS_565 = Str__literal(L"named-paragraph-link"); - TL_IS_566 = Str__literal(L"function-link"); - TL_IS_567 = Str__literal(L"Carousel"); - TL_IS_568 = Str__literal(L"carousel-number"); - TL_IS_569 = Str__literal(L"carousel-caption"); - TL_IS_570 = Str__literal(L"carousel-caption-above"); - TL_IS_571 = Str__literal(L"carousel-number-above"); - TL_IS_572 = Str__literal(L"carousel-caption-below"); - TL_IS_573 = Str__literal(L"carousel-number-below"); - TL_IS_574 = Str__literal(L"external"); - TL_IS_575 = Str__literal(L"internal"); - TL_IS_576 = Str__literal(L"Popups"); - TL_IS_577 = Str__literal(L"*"); - TL_IS_578 = Str__literal(L"paragraph-anchor"); - TL_IS_579 = Str__literal(L"Title"); - TL_IS_580 = Str__literal(L"Base"); - TL_IS_581 = Str__literal(L"Base.css"); - TL_IS_582 = Str__literal(L"TestingInweb"); - TL_IS_583 = Str__literal(L".txt"); - TL_IS_584 = Str__literal(L".pdf"); - TL_IS_585 = Str__literal(L"not"); - TL_IS_586 = Str__literal(L"leq"); - TL_IS_587 = Str__literal(L"geq"); - TL_IS_588 = Str__literal(L"sim"); - TL_IS_589 = Str__literal(L"hbox"); - TL_IS_590 = Str__literal(L"left"); - TL_IS_591 = Str__literal(L"right"); - TL_IS_592 = Str__literal(L"Rightarrow"); - TL_IS_593 = Str__literal(L"Leftrightarrow"); - TL_IS_594 = Str__literal(L"to"); - TL_IS_595 = Str__literal(L"rightarrow"); - TL_IS_596 = Str__literal(L"longrightarrow"); - TL_IS_597 = Str__literal(L"leftarrow"); - TL_IS_598 = Str__literal(L"longleftarrow"); - TL_IS_599 = Str__literal(L"lbrace"); - TL_IS_600 = Str__literal(L"mid"); - TL_IS_601 = Str__literal(L"rbrace"); - TL_IS_602 = Str__literal(L"cdot"); - TL_IS_603 = Str__literal(L"cdots"); - TL_IS_604 = Str__literal(L"dots"); - TL_IS_605 = Str__literal(L"times"); - TL_IS_606 = Str__literal(L"quad"); - TL_IS_607 = Str__literal(L"qquad"); - TL_IS_608 = Str__literal(L"TeX"); - TL_IS_609 = Str__literal(L"neq"); - TL_IS_610 = Str__literal(L"noteq"); - TL_IS_611 = Str__literal(L"ell"); - TL_IS_612 = Str__literal(L"log"); - TL_IS_613 = Str__literal(L"exp"); - TL_IS_614 = Str__literal(L"sin"); - TL_IS_615 = Str__literal(L"cos"); - TL_IS_616 = Str__literal(L"tan"); - TL_IS_617 = Str__literal(L"top"); - TL_IS_618 = Str__literal(L"Alpha"); - TL_IS_619 = Str__literal(L"Beta"); - TL_IS_620 = Str__literal(L"Gamma"); - TL_IS_621 = Str__literal(L"Delta"); - TL_IS_622 = Str__literal(L"Epsilon"); - TL_IS_623 = Str__literal(L"Zeta"); - TL_IS_624 = Str__literal(L"Eta"); - TL_IS_625 = Str__literal(L"Theta"); - TL_IS_626 = Str__literal(L"Iota"); - TL_IS_627 = Str__literal(L"Kappa"); - TL_IS_628 = Str__literal(L"Lambda"); - TL_IS_629 = Str__literal(L"Mu"); - TL_IS_630 = Str__literal(L"Nu"); - TL_IS_631 = Str__literal(L"Xi"); - TL_IS_632 = Str__literal(L"Omicron"); - TL_IS_633 = Str__literal(L"Pi"); - TL_IS_634 = Str__literal(L"Rho"); - TL_IS_635 = Str__literal(L"Varsigma"); - TL_IS_636 = Str__literal(L"Sigma"); - TL_IS_637 = Str__literal(L"Tau"); - TL_IS_638 = Str__literal(L"Upsilon"); - TL_IS_639 = Str__literal(L"Phi"); - TL_IS_640 = Str__literal(L"Chi"); - TL_IS_641 = Str__literal(L"Psi"); - TL_IS_642 = Str__literal(L"Omega"); - TL_IS_643 = Str__literal(L"alpha"); - TL_IS_644 = Str__literal(L"beta"); - TL_IS_645 = Str__literal(L"gamma"); - TL_IS_646 = Str__literal(L"delta"); - TL_IS_647 = Str__literal(L"epsilon"); - TL_IS_648 = Str__literal(L"zeta"); - TL_IS_649 = Str__literal(L"eta"); - TL_IS_650 = Str__literal(L"theta"); - TL_IS_651 = Str__literal(L"iota"); - TL_IS_652 = Str__literal(L"kappa"); - TL_IS_653 = Str__literal(L"lambda"); - TL_IS_654 = Str__literal(L"mu"); - TL_IS_655 = Str__literal(L"nu"); - TL_IS_656 = Str__literal(L"xi"); - TL_IS_657 = Str__literal(L"omicron"); - TL_IS_658 = Str__literal(L"pi"); - TL_IS_659 = Str__literal(L"rho"); - TL_IS_660 = Str__literal(L"varsigma"); - TL_IS_661 = Str__literal(L"sigma"); - TL_IS_662 = Str__literal(L"tau"); - TL_IS_663 = Str__literal(L"upsilon"); - TL_IS_664 = Str__literal(L"phi"); - TL_IS_665 = Str__literal(L"chi"); - TL_IS_666 = Str__literal(L"psi"); - TL_IS_667 = Str__literal(L"omega"); - TL_IS_668 = Str__literal(L"exists"); - TL_IS_669 = Str__literal(L"in"); - TL_IS_670 = Str__literal(L"forall"); - TL_IS_671 = Str__literal(L"cap"); - TL_IS_672 = Str__literal(L"emptyset"); - TL_IS_673 = Str__literal(L"subseteq"); - TL_IS_674 = Str__literal(L"land"); - TL_IS_675 = Str__literal(L"lor"); - TL_IS_676 = Str__literal(L"lnot"); - TL_IS_677 = Str__literal(L"sum"); - TL_IS_678 = Str__literal(L"prod"); - TL_IS_679 = Str__literal(L"n"); - TL_IS_680 = Str__literal(L"t"); - TL_IS_681 = Str__literal(L"exists"); - TL_IS_682 = Str__literal(L"forall"); - TL_IS_683 = Str__literal(L"platform-settings"); - TL_IS_684 = Str__literal(L"identity-settings"); - TL_IS_685 = Str__literal(L"modify-filenames"); - TL_IS_686 = Str__literal(L"original: ORIGINAL ?suffix: SUFFIX ?prefix: PREFIX"); - TL_IS_687 = Str__literal(L"component"); - TL_IS_688 = Str__literal(L"symbol: SYMBOL webname: WEBNAME path: PATH set: SET type: TYPE"); - TL_IS_689 = Str__literal(L"dependent-files"); - TL_IS_690 = Str__literal(L"?tool: TOOL ?module: MODULES ?tool-and-modules: BOTH"); - TL_IS_691 = Str__literal(L"components"); - TL_IS_692 = Str__literal(L"type: TYPE ?set: SET"); - TL_IS_693 = Str__literal(L"intest"); - TL_IS_694 = Str__literal(L"platform-settings.mk"); - TL_IS_695 = Str__literal(L"Materials"); - TL_IS_696 = Str__literal(L"platforms"); - TL_IS_697 = Str__literal(L"tool"); - TL_IS_698 = Str__literal(L"web"); - TL_IS_699 = Str__literal(L"module"); - TL_IS_700 = Str__literal(L"SYMBOL"); + TL_IS_545 = Str__literal(L"Download file missing or empty"); + TL_IS_546 = Str__literal(L"File Name"); + TL_IS_547 = Str__literal(L"File URL"); + TL_IS_548 = Str__literal(L"File Details"); + TL_IS_549 = Str__literal(L" byte"); + TL_IS_550 = Str__literal(L" bytes"); + TL_IS_551 = Str__literal(L"kB"); + TL_IS_552 = Str__literal(L"MB"); + TL_IS_553 = Str__literal(L"GB"); + TL_IS_554 = Str__literal(L"405"); + TL_IS_555 = Str__literal(L"720"); + TL_IS_556 = Str__literal(L"Embedding"); + TL_IS_557 = Str__literal(L"This is not a supported service"); + TL_IS_558 = Str__literal(L"Content ID"); + TL_IS_559 = Str__literal(L"Content Width"); + TL_IS_560 = Str__literal(L"Content Height"); + TL_IS_561 = Str__literal(L"named-paragraph-link"); + TL_IS_562 = Str__literal(L"function-link"); + TL_IS_563 = Str__literal(L"Carousel"); + TL_IS_564 = Str__literal(L"carousel-number"); + TL_IS_565 = Str__literal(L"carousel-caption"); + TL_IS_566 = Str__literal(L"carousel-caption-above"); + TL_IS_567 = Str__literal(L"carousel-number-above"); + TL_IS_568 = Str__literal(L"carousel-caption-below"); + TL_IS_569 = Str__literal(L"carousel-number-below"); + TL_IS_570 = Str__literal(L"external"); + TL_IS_571 = Str__literal(L"internal"); + TL_IS_572 = Str__literal(L"Popups"); + TL_IS_573 = Str__literal(L"*"); + TL_IS_574 = Str__literal(L"paragraph-anchor"); + TL_IS_575 = Str__literal(L"Title"); + TL_IS_576 = Str__literal(L"Base"); + TL_IS_577 = Str__literal(L"Base.css"); + TL_IS_578 = Str__literal(L"TestingInweb"); + TL_IS_579 = Str__literal(L".txt"); + TL_IS_580 = Str__literal(L".pdf"); + TL_IS_581 = Str__literal(L"not"); + TL_IS_582 = Str__literal(L"leq"); + TL_IS_583 = Str__literal(L"geq"); + TL_IS_584 = Str__literal(L"sim"); + TL_IS_585 = Str__literal(L"hbox"); + TL_IS_586 = Str__literal(L"left"); + TL_IS_587 = Str__literal(L"right"); + TL_IS_588 = Str__literal(L"Rightarrow"); + TL_IS_589 = Str__literal(L"Leftrightarrow"); + TL_IS_590 = Str__literal(L"to"); + TL_IS_591 = Str__literal(L"rightarrow"); + TL_IS_592 = Str__literal(L"longrightarrow"); + TL_IS_593 = Str__literal(L"leftarrow"); + TL_IS_594 = Str__literal(L"longleftarrow"); + TL_IS_595 = Str__literal(L"lbrace"); + TL_IS_596 = Str__literal(L"mid"); + TL_IS_597 = Str__literal(L"rbrace"); + TL_IS_598 = Str__literal(L"cdot"); + TL_IS_599 = Str__literal(L"cdots"); + TL_IS_600 = Str__literal(L"dots"); + TL_IS_601 = Str__literal(L"times"); + TL_IS_602 = Str__literal(L"quad"); + TL_IS_603 = Str__literal(L"qquad"); + TL_IS_604 = Str__literal(L"TeX"); + TL_IS_605 = Str__literal(L"neq"); + TL_IS_606 = Str__literal(L"noteq"); + TL_IS_607 = Str__literal(L"ell"); + TL_IS_608 = Str__literal(L"log"); + TL_IS_609 = Str__literal(L"exp"); + TL_IS_610 = Str__literal(L"sin"); + TL_IS_611 = Str__literal(L"cos"); + TL_IS_612 = Str__literal(L"tan"); + TL_IS_613 = Str__literal(L"top"); + TL_IS_614 = Str__literal(L"Alpha"); + TL_IS_615 = Str__literal(L"Beta"); + TL_IS_616 = Str__literal(L"Gamma"); + TL_IS_617 = Str__literal(L"Delta"); + TL_IS_618 = Str__literal(L"Epsilon"); + TL_IS_619 = Str__literal(L"Zeta"); + TL_IS_620 = Str__literal(L"Eta"); + TL_IS_621 = Str__literal(L"Theta"); + TL_IS_622 = Str__literal(L"Iota"); + TL_IS_623 = Str__literal(L"Kappa"); + TL_IS_624 = Str__literal(L"Lambda"); + TL_IS_625 = Str__literal(L"Mu"); + TL_IS_626 = Str__literal(L"Nu"); + TL_IS_627 = Str__literal(L"Xi"); + TL_IS_628 = Str__literal(L"Omicron"); + TL_IS_629 = Str__literal(L"Pi"); + TL_IS_630 = Str__literal(L"Rho"); + TL_IS_631 = Str__literal(L"Varsigma"); + TL_IS_632 = Str__literal(L"Sigma"); + TL_IS_633 = Str__literal(L"Tau"); + TL_IS_634 = Str__literal(L"Upsilon"); + TL_IS_635 = Str__literal(L"Phi"); + TL_IS_636 = Str__literal(L"Chi"); + TL_IS_637 = Str__literal(L"Psi"); + TL_IS_638 = Str__literal(L"Omega"); + TL_IS_639 = Str__literal(L"alpha"); + TL_IS_640 = Str__literal(L"beta"); + TL_IS_641 = Str__literal(L"gamma"); + TL_IS_642 = Str__literal(L"delta"); + TL_IS_643 = Str__literal(L"epsilon"); + TL_IS_644 = Str__literal(L"zeta"); + TL_IS_645 = Str__literal(L"eta"); + TL_IS_646 = Str__literal(L"theta"); + TL_IS_647 = Str__literal(L"iota"); + TL_IS_648 = Str__literal(L"kappa"); + TL_IS_649 = Str__literal(L"lambda"); + TL_IS_650 = Str__literal(L"mu"); + TL_IS_651 = Str__literal(L"nu"); + TL_IS_652 = Str__literal(L"xi"); + TL_IS_653 = Str__literal(L"omicron"); + TL_IS_654 = Str__literal(L"pi"); + TL_IS_655 = Str__literal(L"rho"); + TL_IS_656 = Str__literal(L"varsigma"); + TL_IS_657 = Str__literal(L"sigma"); + TL_IS_658 = Str__literal(L"tau"); + TL_IS_659 = Str__literal(L"upsilon"); + TL_IS_660 = Str__literal(L"phi"); + TL_IS_661 = Str__literal(L"chi"); + TL_IS_662 = Str__literal(L"psi"); + TL_IS_663 = Str__literal(L"omega"); + TL_IS_664 = Str__literal(L"exists"); + TL_IS_665 = Str__literal(L"in"); + TL_IS_666 = Str__literal(L"forall"); + TL_IS_667 = Str__literal(L"cap"); + TL_IS_668 = Str__literal(L"emptyset"); + TL_IS_669 = Str__literal(L"subseteq"); + TL_IS_670 = Str__literal(L"land"); + TL_IS_671 = Str__literal(L"lor"); + TL_IS_672 = Str__literal(L"lnot"); + TL_IS_673 = Str__literal(L"sum"); + TL_IS_674 = Str__literal(L"prod"); + TL_IS_675 = Str__literal(L"n"); + TL_IS_676 = Str__literal(L"t"); + TL_IS_677 = Str__literal(L"exists"); + TL_IS_678 = Str__literal(L"forall"); + TL_IS_679 = Str__literal(L"platform-settings"); + TL_IS_680 = Str__literal(L"identity-settings"); + TL_IS_681 = Str__literal(L"modify-filenames"); + TL_IS_682 = Str__literal(L"original: ORIGINAL ?suffix: SUFFIX ?prefix: PREFIX"); + TL_IS_683 = Str__literal(L"component"); + TL_IS_684 = Str__literal(L"symbol: SYMBOL webname: WEBNAME path: PATH set: SET type: TYPE"); + TL_IS_685 = Str__literal(L"dependent-files"); + TL_IS_686 = Str__literal(L"?tool: TOOL ?module: MODULES ?tool-and-modules: BOTH"); + TL_IS_687 = Str__literal(L"components"); + TL_IS_688 = Str__literal(L"type: TYPE ?set: SET"); + TL_IS_689 = Str__literal(L"intest"); + TL_IS_690 = Str__literal(L"platform-settings.mk"); + TL_IS_691 = Str__literal(L"Materials"); + TL_IS_692 = Str__literal(L"platforms"); + TL_IS_693 = Str__literal(L"tool"); + TL_IS_694 = Str__literal(L"web"); + TL_IS_695 = Str__literal(L"module"); + TL_IS_696 = Str__literal(L"SYMBOL"); + TL_IS_697 = Str__literal(L"all"); + TL_IS_698 = Str__literal(L"tool"); + TL_IS_699 = Str__literal(L"web"); + TL_IS_700 = Str__literal(L"module"); TL_IS_701 = Str__literal(L"all"); - TL_IS_702 = Str__literal(L"tool"); - TL_IS_703 = Str__literal(L"web"); - TL_IS_704 = Str__literal(L"module"); - TL_IS_705 = Str__literal(L"all"); - TL_IS_706 = Str__literal(L"basics"); - TL_IS_707 = Str__literal(L"default.giscript"); - TL_IS_708 = Str__literal(L"tags"); - TL_IS_709 = Str__literal(L"bibliographic"); - TL_IS_710 = Str__literal(L"datum: DATUM of: ASSET"); - TL_IS_711 = Str__literal(L"Build Date"); - TL_IS_712 = Str__literal(L"Version Number"); - TL_IS_713 = Str__literal(L"Build Date"); - TL_IS_714 = Str__literal(L"Version Number"); - TL_IS_715 = Str__literal(L"inform6"); - TL_IS_716 = Str__literal(L"header.h"); - TL_IS_717 = Str__literal(L"(manifest).txt"); - TL_IS_718 = Str__literal(L"README.txt"); - TL_IS_719 = Str__literal(L"README.md"); - TL_IS_720 = Str__literal(L"docs"); - TL_IS_721 = Str__literal(L"web"); - TL_IS_722 = Str__literal(L"module"); - TL_IS_723 = Str__literal(L".inweb"); - TL_IS_724 = Str__literal(L".inweb"); - TL_IS_725 = Str__literal(L"docs"); - TL_IS_726 = Str__literal(L"Multiple cross-references might be meant here"); - TL_IS_727 = Str__literal(L"(main)"); + TL_IS_702 = Str__literal(L"basics"); + TL_IS_703 = Str__literal(L"default.giscript"); + TL_IS_704 = Str__literal(L"tags"); + TL_IS_705 = Str__literal(L"bibliographic"); + TL_IS_706 = Str__literal(L"datum: DATUM of: ASSET"); + TL_IS_707 = Str__literal(L"Build Date"); + TL_IS_708 = Str__literal(L"Version Number"); + TL_IS_709 = Str__literal(L"Build Date"); + TL_IS_710 = Str__literal(L"Version Number"); + TL_IS_711 = Str__literal(L"inform6"); + TL_IS_712 = Str__literal(L"header.h"); + TL_IS_713 = Str__literal(L"(manifest).txt"); + TL_IS_714 = Str__literal(L"README.txt"); + TL_IS_715 = Str__literal(L"README.md"); + TL_IS_716 = Str__literal(L"docs"); + TL_IS_717 = Str__literal(L"web"); + TL_IS_718 = Str__literal(L"module"); + TL_IS_719 = Str__literal(L".inweb"); + TL_IS_720 = Str__literal(L".inweb"); + TL_IS_721 = Str__literal(L"docs"); + TL_IS_722 = Str__literal(L"Multiple cross-references might be meant here"); + TL_IS_723 = Str__literal(L"(main)"); } diff --git a/build.txt b/build.txt index b13cdb7..71d1215 100644 --- a/build.txt +++ b/build.txt @@ -1,3 +1,3 @@ Prerelease: beta -Build Date: 16 June 2022 -Build Number: 1B11 +Build Date: 25 July 2022 +Build Number: 1B12 diff --git a/docs/foundation-module/3-em.html b/docs/foundation-module/3-em.html index f986a05..691d22d 100644 --- a/docs/foundation-module/3-em.html +++ b/docs/foundation-module/3-em.html @@ -179,7 +179,7 @@ specify this at three levels of abstraction: Errors::in_text_file(message, NULL); } -void Errors::in_text_file(char *message, text_file_position *here) { +void Errors::in_text_file(char *message, text_file_position *here) { if (here) Errors::at_position(message, here->text_file_filename, here->line_count); else diff --git a/docs/foundation-module/4-chr.html b/docs/foundation-module/4-chr.html index df90729..91733ad 100644 --- a/docs/foundation-module/4-chr.html +++ b/docs/foundation-module/4-chr.html @@ -76,6 +76,10 @@ function togglePopup(material_id) { int Characters::isalnum(wchar_t c) { return isalnum((int) c); } +int Characters::iscntrl(wchar_t c) { + int i = c; + return ((i >= 0) && (i < 32)); +} int Characters::vowel(wchar_t c) { if ((c == 'a') || (c == 'e') || (c == 'i') || (c == 'o') || (c == 'u')) return TRUE; return FALSE; @@ -85,11 +89,11 @@ function togglePopup(material_id) {

-int Characters::is_space_or_tab(int c) {
+int Characters::is_space_or_tab(int c) {
     if ((c == ' ') || (c == '\t')) return TRUE;
     return FALSE;
 }
-int Characters::is_whitespace(int c) {
+int Characters::is_whitespace(int c) {
     if ((c == ' ') || (c == '\t') || (c == '\n')) return TRUE;
     return FALSE;
 }
@@ -100,7 +104,7 @@ iFiction records.
 

-int Characters::is_babel_whitespace(int c) {
+int Characters::is_babel_whitespace(int c) {
     if ((c == ' ') || (c == '\t') || (c == '\x0a')
         || (c == '\x0d') || (c == NEWLINE_IN_STRING)) return TRUE;
     return FALSE;
@@ -111,7 +115,7 @@ sufficient correctly to handle all characters in the ZSCII set.
 

-int Characters::combine_accent(int accent, int letter) {
+int Characters::combine_accent(int accent, int letter) {
     switch(accent) {
         case 0x0300:  Unicode combining grave
             switch(letter) {
@@ -181,7 +185,7 @@ the more obvious accents from it.
 

-int Characters::remove_accent(int charcode) {
+int Characters::remove_accent(int charcode) {
     switch (charcode) {
         case 0xC0: case 0xC1: case 0xC2: case 0xC3:
         case 0xC4: case 0xC5: charcode = 'A'; break;
@@ -208,7 +212,7 @@ the more obvious accents from it.
     return charcode;
 }
 
-wchar_t Characters::remove_wchar_t_accent(wchar_t charcode) {
+wchar_t Characters::remove_wchar_t_accent(wchar_t charcode) {
     return (wchar_t) Characters::remove_accent((int) charcode);
 }
 
diff --git a/docs/foundation-module/4-jsn.html b/docs/foundation-module/4-jsn.html index 87e6dc0..b2b3663 100644 --- a/docs/foundation-module/4-jsn.html +++ b/docs/foundation-module/4-jsn.html @@ -322,7 +322,8 @@ the JSON standard), and the special cases JSON_value *JSON::decode_range(text_stream *T, int from, int to, text_file_position *tfp) { - int first_nws = -1, last_nws = -1, first_c = 0, last_c = 0; + int first_nws = -1, last_nws = -1; + wchar_t first_c = 0, last_c = 0; Find the first and last non-whitespace character11.1; switch (first_c) { case '[': @@ -386,7 +387,8 @@ comma before the ] switch (c) { case '"': quoted = (quoted)?FALSE:TRUE; break; case '\\': if (quoted) i++; break; - case ',': if ((first_comma < 0) && (bl == 0)) first_comma = i; break; + case ',': if ((quoted == FALSE) && ((first_comma < 0) && (bl == 0))) + first_comma = i; break; case '[': case '{': if (quoted == FALSE) bl++; break; case ']': case '}': if (quoted == FALSE) bl--; break; } @@ -423,7 +425,8 @@ comma before the ] switch (c) { case '"': quoted = (quoted)?FALSE:TRUE; break; case '\\': if (quoted) i++; break; - case ',': if ((first_comma < 0) && (bl == 0)) first_comma = i; break; + case ',': if ((quoted == FALSE) && ((first_comma < 0) && (bl == 0))) + first_comma = i; break; case '[': case '{': if (quoted == FALSE) bl++; break; case ']': case '}': if (quoted == FALSE) bl--; break; } @@ -530,7 +533,7 @@ to allow the escaping of forward slash, but the standard requires it. if (c == '\\') { i++; c = Str::get_at(T, i); - if ((c >= 0) && (c < 32)) return JSON::decode_error(I"unescaped control character", tfp); + if (Characters::iscntrl(c)) return JSON::decode_error(I"unescaped control character", tfp); switch (c) { case 'b': c = 8; break; case 't': c = 9; break; @@ -651,7 +654,7 @@ points above 32. case 12: WRITE("\\f"); break; case 13: WRITE("\\r"); break; default: - if ((c >= 0) && (c < 32)) WRITE("\\u%04x", c); + if (Characters::iscntrl(c)) WRITE("\\u%04x", (int)c); else PUT(c); break; } @@ -1124,7 +1127,8 @@ JSON requirement.
 JSON_requirement *JSON::decode_req_range(text_stream *T, int from, int to,
     dictionary *known_names) {
-    int first_nws = -1, last_nws = -1, first_c = 0, last_c = 0;
+    int first_nws = -1, last_nws = -1;
+    wchar_t first_c = 0, last_c = 0;
     Find the first and last non-whitespace character in requirement32.2;
     if (first_c == '(') {
         if (last_c != ')')
@@ -1169,7 +1173,8 @@ for what it's worth, we opt for the value.
 
 JSON_single_requirement *JSON::decode_sreq_range(text_stream *T, int from, int to,
     dictionary *known_names) {
-    int first_nws = -1, last_nws = -1, first_c = 0, last_c = 0;
+    int first_nws = -1, last_nws = -1;
+    wchar_t first_c = 0, last_c = 0;
     Find the first and last non-whitespace character in requirement32.2;
     if (first_nws < 0) return JSON::error_sr(I"whitespace where requirement expected");
     switch (first_c) {
@@ -1277,7 +1282,8 @@ for what it's worth, we opt for the value.
         switch (c) {
             case '"': quoted = (quoted)?FALSE:TRUE; break;
             case '\\': if (quoted) i++; break;
-            case ',': if ((first_comma < 0) && (bl == 0)) first_comma = i; break;
+            case ',': if ((quoted == FALSE) && ((first_comma < 0) && (bl == 0)))
+                first_comma = i; break;
             case '[': case '{': case '(': if (quoted == FALSE) bl++; break;
             case ']': case '}': case ')': if (quoted == FALSE) bl--; break;
         }
@@ -1315,7 +1321,8 @@ for what it's worth, we opt for the value.
         switch (c) {
             case '"': quoted = (quoted)?FALSE:TRUE; break;
             case '\\': if (quoted) i++; break;
-            case ',': if ((first_comma < 0) && (bl == 0)) first_comma = i; break;
+            case ',': if ((quoted == FALSE) && ((first_comma < 0) && (bl == 0)))
+                first_comma = i; break;
             case '[': case '{': case '(': if (quoted == FALSE) bl++; break;
             case ']': case '}': case ')': if (quoted == FALSE) bl--; break;
         }
diff --git a/docs/foundation-module/4-pm.html b/docs/foundation-module/4-pm.html
index 4316b47..a44efd1 100644
--- a/docs/foundation-module/4-pm.html
+++ b/docs/foundation-module/4-pm.html
@@ -204,7 +204,7 @@ deallocate.
 

-match_results Regexp::create_mr(void) {
+match_results Regexp::create_mr(void) {
     match_results mr;
     mr.no_matched_texts = 0;
     for (int i=0; i<MAX_BRACKETED_SUBEXPRESSIONS; i++) {
@@ -214,7 +214,7 @@ deallocate.
     return mr;
 }
 
-void Regexp::dispose_of(match_results *mr) {
+void Regexp::dispose_of(match_results *mr) {
     if (mr) {
         for (int i=0; i<MAX_BRACKETED_SUBEXPRESSIONS; i++)
             if (mr->exp[i]) {
@@ -229,7 +229,7 @@ deallocate.
 

-int Regexp::match(match_results *mr, text_stream *text, wchar_t *pattern) {
+int Regexp::match(match_results *mr, text_stream *text, wchar_t *pattern) {
     if (mr) Regexp::prepare(mr);
     int rv = (Regexp::match_r(mr, text, pattern, NULL, FALSE) >= 0)?TRUE:FALSE;
     if ((mr) && (rv == FALSE)) Regexp::dispose_of(mr);
diff --git a/docs/foundation-module/4-prp.html b/docs/foundation-module/4-prp.html
index ee685fa..14a1aa4 100644
--- a/docs/foundation-module/4-prp.html
+++ b/docs/foundation-module/4-prp.html
@@ -64,19 +64,25 @@ saves us having to have dependencies on behemoths like the mighty 
-Preprocessor::preprocess(from, to, header, special_macros, specifics)
+Preprocessor::preprocess(from, to, header, special_macros, specifics, encoding)
 

where from and to are filenames, header is text to place at the top of the file (if any), special_macros is a linked_list of preprocessor_macros set up with special meanings to the situation, and specifics is a general -pointer to any data those special meanings need to use. +pointer to any data those special meanings need to use. encoding should be +one of UTF8_ENC or ISO_ENC.

+
define PROTECTED_OPEN_BRACE_PPCHAR 0x25A0
+define PROTECTED_CLOSE_BRACE_PPCHAR 0x25A1
+define PROTECTED_BLANK_PPCHAR 0x25A2
+
 void Preprocessor::preprocess(filename *prototype, filename *F, text_stream *header,
-    linked_list *special_macros, general_pointer specifics, wchar_t comment_char) {
+    linked_list *special_macros, general_pointer specifics, wchar_t comment_char,
+    int encoding) {
     struct text_stream processed_file;
-    if (STREAM_OPEN_TO_FILE(&processed_file, F, ISO_ENC) == FALSE)
+    if (STREAM_OPEN_TO_FILE(&processed_file, F, encoding) == FALSE)
         Errors::fatal_with_file("unable to write tangled file", F);
     text_stream *OUT = &processed_file;
     WRITE("%S", header);
@@ -85,6 +91,12 @@ pointer to any data those special meanings need to use.
     Initialise the preprocessor state1.2;
     TextFiles::read(prototype, FALSE, "can't open prototype file",
         TRUE, Preprocessor::scan_line, NULL, &PPS);
+    for (int i=0; i<Str::len(PPS.dest); i++) {
+        wchar_t c = Str::get_at(PPS.dest, i);
+        if (c == PROTECTED_OPEN_BRACE_PPCHAR) PUT('{');
+        else if (c == PROTECTED_CLOSE_BRACE_PPCHAR) PUT('}');
+        else if (c != PROTECTED_BLANK_PPCHAR) PUT(c);
+    }
     STREAM_CLOSE(OUT);
 }
 
@@ -122,7 +134,7 @@ the prototype file line-by-line:

-    PPS.dest = OUT;
+    PPS.dest = Str::new();
     PPS.suppress_newline = FALSE;
     PPS.last_line_was_blank = TRUE;
     PPS.defining = NULL;
@@ -160,9 +172,10 @@ parametrised names: but then, nor should you.
 void Preprocessor::scan_line(text_stream *line, text_file_position *tfp, void *X) {
     preprocessor_state *PPS = (preprocessor_state *) X;
     Skip comments3.1;
-    Deal with textual definitions of new macros3.2;
+    Make backslash literals safe3.2;
+    Deal with textual definitions of new macros3.3;
     Preprocessor::expand(line, tfp, PPS);
-    Sometimes, but only sometimes, output a newline3.3;
+    Sometimes, but only sometimes, output a newline3.4;
 }
 

§3.1. A line is a comment to the preprocessor if its first non-whitespace character @@ -180,19 +193,47 @@ is the special comment character: often }

  • This code is used in §3.
-

§3.2. Deal with textual definitions of new macros3.2 = +

§3.2. Make backslash literals safe3.2 = +

+ +
+    for (int i = 0; i < Str::len(line); i++) {
+        wchar_t c = Str::get_at(line, i);
+        if (c == '\\') {
+            wchar_t d = Str::get_at(line, i+1);
+            switch (d) {
+                case '{':
+                    Str::put_at(line, i, PROTECTED_OPEN_BRACE_PPCHAR);
+                    Str::put_at(line, i+1, PROTECTED_BLANK_PPCHAR);
+                    break;
+                case '}':
+                    Str::put_at(line, i, PROTECTED_CLOSE_BRACE_PPCHAR);
+                    Str::put_at(line, i+1, PROTECTED_BLANK_PPCHAR);
+                    break;
+                case '\\':
+                    Str::put_at(line, i+1, PROTECTED_BLANK_PPCHAR);
+                    break;
+                default:
+                    Errors::in_text_file("backslash '\\' must be followed by '{', '}' or '\\'", tfp);
+                    break;
+            }
+        }
+    }
+
+
  • This code is used in §3.
+

§3.3. Deal with textual definitions of new macros3.3 =

     match_results mr = Regexp::create_mr();
-    if (Regexp::match(&mr, line, L" *{define: *(%C+) *} *")) Begin a bare definition3.2.1;
-    if (Regexp::match(&mr, line, L" *{define: *(%C+) (%c*)} *")) Begin a definition3.2.2;
-    if (Regexp::match(&mr, line, L" *{end-define} *")) End a definition3.2.4;
-    if (PPS->defining) Continue a definition3.2.3;
+    if (Regexp::match(&mr, line, L" *{define: *(%C+) *} *")) Begin a bare definition3.3.1;
+    if (Regexp::match(&mr, line, L" *{define: *(%C+) (%c*)} *")) Begin a definition3.3.2;
+    if (Regexp::match(&mr, line, L" *{end-define} *")) End a definition3.3.4;
+    if (PPS->defining) Continue a definition3.3.3;
     Regexp::dispose_of(&mr);
 
  • This code is used in §3.
-

§3.2.1. Begin a bare definition3.2.1 = +

§3.3.1. Begin a bare definition3.3.1 =

@@ -205,8 +246,8 @@ is the special comment character: often     Regexp::dispose_of(&mr);
     return;
 
-
  • This code is used in §3.2.
-

§3.2.2. Begin a definition3.2.2 = +

  • This code is used in §3.3.
+

§3.3.2. Begin a definition3.3.2 =

@@ -219,8 +260,8 @@ is the special comment character: often     Regexp::dispose_of(&mr);
     return;
 
-
  • This code is used in §3.2.
-

§3.2.3. Continue a definition3.2.3 = +

  • This code is used in §3.3.
+

§3.3.3. Continue a definition3.3.3 =

@@ -228,8 +269,8 @@ is the special comment character: often     Regexp::dispose_of(&mr);
     return;
 
-
  • This code is used in §3.2.
-

§3.2.4. End a definition3.2.4 = +

  • This code is used in §3.3.
+

§3.3.4. End a definition3.3.4 =

@@ -239,8 +280,8 @@ is the special comment character: often     Regexp::dispose_of(&mr);
     return;
 
-
  • This code is used in §3.2.
-

§3.3. Sometimes, but only sometimes, output a newline3.3 = +

  • This code is used in §3.3.
+

§3.4. Sometimes, but only sometimes, output a newline3.4 =

@@ -264,7 +305,7 @@ is the special comment character: often { ... } used in nested pairs (unless there is a syntax
 error in the prototype, in which case we must complain).
 
-

The idea is the pass everything straight through except any braced matter, +

The idea is to pass everything straight through except any braced matter, which needs special attention.

@@ -710,7 +751,7 @@ fact we expect more like 10.

-preprocessor_macro *Preprocessor::new_macro(linked_list *L, text_stream *name,
+preprocessor_macro *Preprocessor::new_macro(linked_list *L, text_stream *name,
     text_stream *parameter_specification,
     void (*expander)(preprocessor_macro *, preprocessor_state *, text_stream **, preprocessor_loop *, text_file_position *),
     text_file_position *tfp) {
@@ -783,7 +824,7 @@ expander function is Preprocessor::de
 

-void Preprocessor::add_line_to_macro(preprocessor_macro *mm, text_stream *line,
+void Preprocessor::add_line_to_macro(preprocessor_macro *mm, text_stream *line,
     text_file_position *tfp) {
     if (mm->no_lines >= MAX_PP_MACRO_LINES) {
         Errors::in_text_file("too many lines in this definition", tfp);
@@ -875,7 +916,7 @@ frame again.
 

-void Preprocessor::default_expander(preprocessor_macro *mm, preprocessor_state *PPS,
+void Preprocessor::default_expander(preprocessor_macro *mm, preprocessor_state *PPS,
     text_stream **parameter_values, preprocessor_loop *loop, text_file_position *tfp) {
     PPS->stack_frame = Preprocessor::new_variable_set(PPS->stack_frame);
     for (int i=0; i<mm->no_parameters; i++) {
diff --git a/docs/foundation-module/4-sm.html b/docs/foundation-module/4-sm.html
index 9c78d0d..0af2727 100644
--- a/docs/foundation-module/4-sm.html
+++ b/docs/foundation-module/4-sm.html
@@ -88,7 +88,7 @@ access.
 

-text_stream *Str::new(void) {
+text_stream *Str::new(void) {
     return Str::new_with_capacity(32);
 }
 
@@ -198,7 +198,7 @@ thing plus a little extra, for efficiency's sake.
 

-int Str::len(text_stream *S) {
+int Str::len(text_stream *S) {
     return Streams::get_position(S);
 }
 
@@ -282,7 +282,7 @@ at those positions may well not be, of course.) return Streams::get_char_at_index(P.S, P.index); } -wchar_t Str::get_at(text_stream *S, int index) { +wchar_t Str::get_at(text_stream *S, int index) { if ((S == NULL) || (index < 0)) return 0; return Streams::get_char_at_index(S, index); } @@ -312,7 +312,7 @@ at those positions may well not be, of course.) Streams::put_char_at_index(P.S, P.index, C); } -void Str::put_at(text_stream *S, int index, wchar_t C) { +void Str::put_at(text_stream *S, int index, wchar_t C) { Str::put(Str::at(S, index), C); }
diff --git a/docs/foundation-module/5-htm.html b/docs/foundation-module/5-htm.html index 4cfa942..5d1a3d0 100644 --- a/docs/foundation-module/5-htm.html +++ b/docs/foundation-module/5-htm.html @@ -719,38 +719,14 @@ can be removed. None of that removal happens here; we're just the bookkeeper.
 void HTML::open_coloured_box(OUTPUT_STREAM, text_stream *classname, int rounding) {
     HTML_OPEN_WITH("table",
-        "width=\"100%%\" cellpadding=\"0\" cellspacing=\"0\" border=\"0\" "
+        "width=\"100%%\" cellpadding=\"6\" cellspacing=\"0\" border=\"0\" "
         "class=\"%S\"", classname);
     HTML_OPEN("tr");
-    HTML_OPEN_WITH("td", "width=\"%d\"", CORNER_SIZE);
-    if (rounding & ROUND_BOX_TOP) HTML::box_corner(OUT, classname, I"tl");
-    HTML_CLOSE("td");
-    HTML_OPEN("td");
-    HTML_CLOSE("td");
-    HTML_OPEN_WITH("td", "width=\"%d\"", CORNER_SIZE);
-    if (rounding & ROUND_BOX_TOP) HTML::box_corner(OUT, classname, I"tr");
-    HTML_CLOSE("td");
-    HTML_CLOSE("tr");
-    HTML_OPEN("tr");
-    HTML_OPEN_WITH("td", "width=\"%d\"", CORNER_SIZE);
-    HTML_CLOSE("td");
     HTML_OPEN("td");
 }
 
 void HTML::close_coloured_box(OUTPUT_STREAM, text_stream *classname, int rounding) {
     HTML_CLOSE("td");
-    HTML_OPEN_WITH("td", "width=\"%d\"", CORNER_SIZE);
-    HTML_CLOSE("td");
-    HTML_CLOSE("tr");
-    HTML_OPEN("tr");
-    HTML_OPEN_WITH("td", "width=\"%d\"", CORNER_SIZE);
-    if (rounding & ROUND_BOX_BOTTOM) HTML::box_corner(OUT, classname, I"bl");
-    HTML_CLOSE("td");
-    HTML_OPEN("td");
-    HTML_CLOSE("td");
-    HTML_OPEN_WITH("td", "width=\"%d\"", CORNER_SIZE);
-    if (rounding & ROUND_BOX_BOTTOM) HTML::box_corner(OUT, classname, I"br");
-    HTML_CLOSE("td");
     HTML_CLOSE("tr");
     HTML::end_html_table(OUT);
 }
diff --git a/docs/goldbach/goldbach.pdf b/docs/goldbach/goldbach.pdf
index 3c48d45..9f3b377 100644
Binary files a/docs/goldbach/goldbach.pdf and b/docs/goldbach/goldbach.pdf differ
diff --git a/docs/inweb/6-gs.html b/docs/inweb/6-gs.html
index 2c6acf9..4deaa57 100644
--- a/docs/inweb/6-gs.html
+++ b/docs/inweb/6-gs.html
@@ -61,7 +61,7 @@ function togglePopup(material_id) {
     WRITE_TO(header, "# This gitignore was automatically written by inweb -gitignore\n");
     WRITE_TO(header, "# and is not intended for human editing\n\n");
     WRITE_TO(STDOUT, "(Read script from %f)\n", prototype);
-    Preprocessor::preprocess(prototype, F, header, L, NULL_GENERAL_POINTER, '#');
+    Preprocessor::preprocess(prototype, F, header, L, NULL_GENERAL_POINTER, '#', ISO_ENC);
 }
 

§2. Our one non-standard macro simply includes a file of standing material which diff --git a/docs/inweb/6-mkf.html b/docs/inweb/6-mkf.html index ef1b43f..b2bfc04 100644 --- a/docs/inweb/6-mkf.html +++ b/docs/inweb/6-mkf.html @@ -92,7 +92,7 @@ special loop construct. WRITE_TO(STDOUT, "(Read script from %f)\n", prototype); Preprocessor::preprocess(prototype, F, header, L, - STORE_POINTER_makefile_specifics(specifics), '#'); + STORE_POINTER_makefile_specifics(specifics), '#', ISO_ENC); }

§1.1. We will allow a makescript to declare "components" (webs, really), so we need diff --git a/docs/inweb/6-rw.html b/docs/inweb/6-rw.html index 48797a5..7ac810d 100644 --- a/docs/inweb/6-rw.html +++ b/docs/inweb/6-rw.html @@ -63,7 +63,7 @@ colliding with Markdown's heading syntax. Readme::bibliographic_expander, NULL); Preprocessor::do_not_suppress_whitespace(mm); WRITE_TO(STDOUT, "(Read script from %f)\n", prototype); - Preprocessor::preprocess(prototype, F, NULL, L, NULL_GENERAL_POINTER, '/'); + Preprocessor::preprocess(prototype, F, NULL, L, NULL_GENERAL_POINTER, '/', ISO_ENC); }

§2. And this is the one domain-specific macro: diff --git a/docs/inweb/M-wtaw.html b/docs/inweb/M-wtaw.html index 5852e59..cf446ef 100644 --- a/docs/inweb/M-wtaw.html +++ b/docs/inweb/M-wtaw.html @@ -638,6 +638,10 @@ elaborate makefiles for multi-web projects.

  • ● Comment lines, those beginning with #, are stripped out.
  • ● Material in balanced braces { ... } is expanded into something more interesting. +
  • ● Literal braces can be written with a backslash, \{ and \}, which +expand just into { and }. Literal backslashes are written \\, which +"expands" to \. A backslash is not allowed to precede any other character, +so something like \fish produces an error message.

§20. Makescripts support variables, whose names have to be in capital letters, perhaps with underscores and digits added. For example: diff --git a/foundation-module/Chapter 4/JSON.w b/foundation-module/Chapter 4/JSON.w index 60aeb30..472dc7a 100755 --- a/foundation-module/Chapter 4/JSON.w +++ b/foundation-module/Chapter 4/JSON.w @@ -318,7 +318,8 @@ JSON_value *JSON::decode_array(JSON_value *array, text_stream *T, int from, int switch (c) { case '"': quoted = (quoted)?FALSE:TRUE; break; case '\\': if (quoted) i++; break; - case ',': if ((first_comma < 0) && (bl == 0)) first_comma = i; break; + case ',': if ((quoted == FALSE) && ((first_comma < 0) && (bl == 0))) + first_comma = i; break; case '[': case '{': if (quoted == FALSE) bl++; break; case ']': case '}': if (quoted == FALSE) bl--; break; } @@ -354,7 +355,8 @@ JSON_value *JSON::decode_object(JSON_value *obj, text_stream *T, int from, int t switch (c) { case '"': quoted = (quoted)?FALSE:TRUE; break; case '\\': if (quoted) i++; break; - case ',': if ((first_comma < 0) && (bl == 0)) first_comma = i; break; + case ',': if ((quoted == FALSE) && ((first_comma < 0) && (bl == 0))) + first_comma = i; break; case '[': case '{': if (quoted == FALSE) bl++; break; case ']': case '}': if (quoted == FALSE) bl--; break; } @@ -1141,7 +1143,8 @@ JSON_single_requirement *JSON::decode_req_array(JSON_single_requirement *array_s switch (c) { case '"': quoted = (quoted)?FALSE:TRUE; break; case '\\': if (quoted) i++; break; - case ',': if ((first_comma < 0) && (bl == 0)) first_comma = i; break; + case ',': if ((quoted == FALSE) && ((first_comma < 0) && (bl == 0))) + first_comma = i; break; case '[': case '{': case '(': if (quoted == FALSE) bl++; break; case ']': case '}': case ')': if (quoted == FALSE) bl--; break; } @@ -1178,7 +1181,8 @@ JSON_single_requirement *JSON::decode_req_object(JSON_single_requirement *obj, switch (c) { case '"': quoted = (quoted)?FALSE:TRUE; break; case '\\': if (quoted) i++; break; - case ',': if ((first_comma < 0) && (bl == 0)) first_comma = i; break; + case ',': if ((quoted == FALSE) && ((first_comma < 0) && (bl == 0))) + first_comma = i; break; case '[': case '{': case '(': if (quoted == FALSE) bl++; break; case ']': case '}': case ')': if (quoted == FALSE) bl--; break; } diff --git a/foundation-module/Chapter 4/Preprocessor.w b/foundation-module/Chapter 4/Preprocessor.w index 6454108..25dc93e 100644 --- a/foundation-module/Chapter 4/Preprocessor.w +++ b/foundation-module/Chapter 4/Preprocessor.w @@ -12,18 +12,24 @@ For documentation on the markup notation, see //inweb: Webs, Tangling and Weavin To use the preprocessor, call: = (text as InC) -Preprocessor::preprocess(from, to, header, special_macros, specifics) +Preprocessor::preprocess(from, to, header, special_macros, specifics, encoding) = where |from| and |to| are filenames, |header| is text to place at the top of the file (if any), |special_macros| is a |linked_list| of |preprocessor_macro|s set up with special meanings to the situation, and |specifics| is a general -pointer to any data those special meanings need to use. +pointer to any data those special meanings need to use. |encoding| should be +one of |UTF8_ENC| or |ISO_ENC|. + +@d PROTECTED_OPEN_BRACE_PPCHAR 0x25A0 +@d PROTECTED_CLOSE_BRACE_PPCHAR 0x25A1 +@d PROTECTED_BLANK_PPCHAR 0x25A2 = void Preprocessor::preprocess(filename *prototype, filename *F, text_stream *header, - linked_list *special_macros, general_pointer specifics, wchar_t comment_char) { + linked_list *special_macros, general_pointer specifics, wchar_t comment_char, + int encoding) { struct text_stream processed_file; - if (STREAM_OPEN_TO_FILE(&processed_file, F, ISO_ENC) == FALSE) + if (STREAM_OPEN_TO_FILE(&processed_file, F, encoding) == FALSE) Errors::fatal_with_file("unable to write tangled file", F); text_stream *OUT = &processed_file; WRITE("%S", header); @@ -32,6 +38,12 @@ void Preprocessor::preprocess(filename *prototype, filename *F, text_stream *hea @; TextFiles::read(prototype, FALSE, "can't open prototype file", TRUE, Preprocessor::scan_line, NULL, &PPS); + for (int i=0; i = - PPS.dest = OUT; + PPS.dest = Str::new(); PPS.suppress_newline = FALSE; PPS.last_line_was_blank = TRUE; PPS.defining = NULL; @@ -98,6 +110,7 @@ parametrised names: but then, nor should you. void Preprocessor::scan_line(text_stream *line, text_file_position *tfp, void *X) { preprocessor_state *PPS = (preprocessor_state *) X; @; + @; @; Preprocessor::expand(line, tfp, PPS); @; @@ -112,7 +125,31 @@ is the special comment character: often |#|, but not necessarily. if (c == PPS->comment_character) return; if (Characters::is_whitespace(c) == FALSE) break; } - + +@ = + for (int i = 0; i < Str::len(line); i++) { + wchar_t c = Str::get_at(line, i); + if (c == '\\') { + wchar_t d = Str::get_at(line, i+1); + switch (d) { + case '{': + Str::put_at(line, i, PROTECTED_OPEN_BRACE_PPCHAR); + Str::put_at(line, i+1, PROTECTED_BLANK_PPCHAR); + break; + case '}': + Str::put_at(line, i, PROTECTED_CLOSE_BRACE_PPCHAR); + Str::put_at(line, i+1, PROTECTED_BLANK_PPCHAR); + break; + case '\\': + Str::put_at(line, i+1, PROTECTED_BLANK_PPCHAR); + break; + default: + Errors::in_text_file("backslash '\\' must be followed by '{', '}' or '\\'", tfp); + break; + } + } + } + @ = match_results mr = Regexp::create_mr(); if (Regexp::match(&mr, line, L" *{define: *(%C+) *} *")) @; @@ -173,7 +210,7 @@ is the special comment character: often |#|, but not necessarily. (ii) Contains braces |{ ... }| used in nested pairs (unless there is a syntax error in the prototype, in which case we must complain). -The idea is the pass everything straight through except any braced matter, +The idea is to pass everything straight through except any braced matter, which needs special attention. =