From 2ccc89a93e857dc7d66aa3475400656e8e575401 Mon Sep 17 00:00:00 2001
From: Graham Nelson
-void Copies::attach_error(inbuild_copy *C, copy_error *CE) { +void Copies::attach_error(inbuild_copy *C, copy_error *CE) { if (C == NULL) internal_error("no copy to attach to"); CopyErrors::supply_attached_copy(CE, C); ADD_TO_LINKED_LIST(CE, copy_error, C->errors_reading_source_text); @@ -177,7 +177,7 @@ for later reporting. These are stored in a list. return C->source_text_read; } -wording Copies::get_source_text(inbuild_copy *C) { +wording Copies::get_source_text(inbuild_copy *C) { if (C->source_text_read == FALSE) { C->source_text_read = TRUE; if (LinkedLists::len(C->errors_reading_source_text) > 0) { diff --git a/docs/supervisor-module/2-rqr.html b/docs/supervisor-module/2-rqr.html index a60675d87..758537b3c 100644 --- a/docs/supervisor-module/2-rqr.html +++ b/docs/supervisor-module/2-rqr.html @@ -243,7 +243,7 @@ a requirement, then so will all other copies of it.-int Requirements::meets(inbuild_edition *edition, inbuild_requirement *req) { +int Requirements::meets(inbuild_edition *edition, inbuild_requirement *req) { if (req == NULL) return TRUE; if (req->work) { if (req->work->genre) diff --git a/docs/supervisor-module/4-ebm.html b/docs/supervisor-module/4-ebm.html index 5ac2fba59..2c51bf20f 100644 --- a/docs/supervisor-module/4-ebm.html +++ b/docs/supervisor-module/4-ebm.html @@ -134,7 +134,7 @@ which stores data about extensions used by the Inform compiler. if (Str::get(pos) == '.') Str::put(pos, '_'); WRITE_TO(new_name, "%S-v%S.i7xd", C->edition->work->title, new_version); - if (Extensions::rename_directory(P, new_name)) { + if (Extensions::rename_directory(P, new_name)) { Str::clear(key); WRITE_TO(key, "%p", P); apparent_V = C->edition->version; diff --git a/docs/supervisor-module/5-es.html b/docs/supervisor-module/5-es.html index 727dec8be..4b79d6e7a 100644 --- a/docs/supervisor-module/5-es.html +++ b/docs/supervisor-module/5-es.html @@ -60,7 +60,7 @@ function togglePopup(material_id) {
Behaviour specific to copies of the extension genre.
-§1. Scanning metadata. An extension has a title and an author name, each of which is limited in
length to one character less than the following constants:
@@ -75,6 +75,7 @@ length to one character less than the following constants:
struct wording body_text; Body of source text supplied in extension, if any
int body_text_unbroken; Does this contain text waiting to be sentence-broken?
struct wording documentation_text; Documentation supplied in extension, if any
+ int documentation_sought; Has it yet been looked for?
int standard; the (or perhaps just a) Standard Rules extension
int authorial_modesty; Do not credit in the compiled game
struct text_stream *rubric_as_lexed; brief description found in opening lines
@@ -141,6 +142,7 @@ compatibility notes given (such as "for Glulx only").
E->body_text = EMPTY_WORDING;
E->body_text_unbroken = FALSE;
E->documentation_text = EMPTY_WORDING;
+ E->documentation_sought = FALSE;
E->standard = FALSE;
E->authorial_modesty = FALSE;
E->read_into_file = NULL;
@@ -197,7 +199,7 @@ alone, and the version number is returned.
if (Str::ne_insensitive(correct_leafname, Filenames::get_leafname(extension_source_filename))) {
int allow = FALSE;
if ((repair_mode) &&
- (Extensions::rename_file(extension_source_filename, correct_leafname)))
+ (Extensions::rename_file(extension_source_filename, correct_leafname)))
allow = TRUE;
if (allow == FALSE) {
TEMPORARY_TEXT(error_text)
@@ -688,7 +690,7 @@ in a minimal sort of way, with just an
-inform_extension *Extensions::from_copy(inbuild_copy *C) {
+inform_extension *Extensions::from_copy(inbuild_copy *C) {
inform_extension *ext = ExtensionBundleManager::from_copy(C);
if (ext == NULL) ext = ExtensionManager::from_copy(C);
return ext;
@@ -1007,13 +1009,47 @@ and no documentation.
E->body_text_unbroken = TRUE; mark this to be sentence-broken
§11. When the extension source text was read from its source_file, we
+ §11. In directory extensions, documentation can be stored separately:
+ §11.1. Fetch wording from stand-alone file11.1 =
+ §12. When the extension source text was read from its source_file, we
attached a reference to say which inform_extension it was, and here we
make use of that:
§13. Three pieces of information will be set later on, by other parts of Inform
+ §14. Three pieces of information will be set later on, by other parts of Inform
calling the routines below.
§14. The optional extra credit line is used to acknowledge I6 sources,
+ §15. The optional extra credit line is used to acknowledge I6 sources,
collaborators, translators and so on.
§15. The use option "authorial modesty" is unusual in applying to the extension
+ §16. The use option "authorial modesty" is unusual in applying to the extension
it is found in, not the whole source text. When we read it, we call one of
the following routines, depending on whether it was in an extension or in
the main source text:
@@ -1087,21 +1123,21 @@ the main source text:
general_authorial_modesty = TRUE;
}
- §16. The inclusion sentence for an extension is where it was Included in a
+ §17. The inclusion sentence for an extension is where it was Included in a
project's syntax tree (if it was). It isn't used in compilation, only for
problem messages and the index.
§17. An extension is "standard" if it's either the Standard Rules or Basic Inform.
+ §18. An extension is "standard" if it's either the Standard Rules or Basic Inform.
§18. Version requirements. When it's known that an extension must satisfy a given version requirement —
+ §19. Version requirements. When it's known that an extension must satisfy a given version requirement —
say, being version 7.2.1 or better — the following is called. Note that
if incompatible requirements are placed on it, the range in E->must_satisfy
becomes empty and stays that way.
§19. And it is certainly possible, if an extension is loaded for multiple
+ §20. And it is certainly possible, if an extension is loaded for multiple
reasons with different versioning needs, that the extension no longer meets
its requirements (even though it did when first loaded). This tests for that:
§19. Although Implied (0) headings do have text, contrary to the implication of
diff --git a/docs/supervisor-module/6-inc.html b/docs/supervisor-module/6-inc.html
index 40d50f55b..239eb76ad 100644
--- a/docs/supervisor-module/6-inc.html
+++ b/docs/supervisor-module/6-inc.html
@@ -325,7 +325,7 @@ Sausages by Mr Punch, and loaded it, but then read the sentence
LOOP_OVER(E, inform_extension)
if ((Requirements::meets(E->as_copy->edition, req)) &&
(Copies::source_text_has_been_read(E->as_copy))) {
- Extensions::must_satisfy(E, req);
+ Extensions::must_satisfy(E, req);
return E;
}
Read the extension file into the lexer, and break it into body and documentation6.1;
@@ -343,7 +343,7 @@ Sausages by Mr Punch, and loaded it, but then read the sentence
Nests::search_for_best(req, Projects::nest_list(for_project));
if (search_result) {
E = Extensions::from_copy(search_result->copy);
- Extensions::set_inclusion_sentence(E, at);
+ Extensions::set_inclusion_sentence(E, at);
Extensions::set_associated_project(E, for_project);
if (Nests::get_tag(search_result->nest) == INTERNAL_NEST_TAG)
E->loaded_from_built_in_area = TRUE;
@@ -378,7 +378,7 @@ report this problem at the inclusion line.
-
+wording Extensions::get_documentation_text(inform_extension *E) {
+ if (E == NULL) return EMPTY_WORDING;
+ Copies::get_source_text(E->as_copy); in the unlikely event this has not happened yet
+ if (E->documentation_sought == FALSE) {
+ if (E->as_copy->location_if_path) {
+ pathname *D = Pathnames::down(E->as_copy->location_if_path, I"Documentation");
+ filename *F = Filenames::in(D, I"Documentation.txt");
+ if (TextFiles::exists(F)) Fetch wording from stand-alone file11.1;
+ }
+ E->documentation_sought = TRUE;
+ }
+ return E->documentation_text;
+}
+
+
+ if (Wordings::nonempty(E->documentation_text)) {
+ TEMPORARY_TEXT(error_text)
+ WRITE_TO(error_text,
+ "this extension provides documentation both as a file and in its source");
+ Copies::attach_error(E->as_copy, CopyErrors::new_T(EXT_MISWORDED_CE, -1, error_text));
+ DISCARD_TEXT(error_text)
+ } else {
+ source_file *sf = SourceText::read_file(E->as_copy, F, NULL, TRUE, FALSE);
+ if (sf) E->documentation_text = sf->text_read;
+ }
+
+
+
-inform_extension *Extensions::corresponding_to(source_file *sf) {
+inform_extension *Extensions::corresponding_to(source_file *sf) {
if (sf == NULL) return NULL;
inbuild_copy *C = RETRIEVE_POINTER_inbuild_copy(sf->your_ref);
if (C == NULL) return NULL;
@@ -1021,7 +1057,7 @@ make use of that:
return Extensions::from_copy(C);
}
-
+
void Extensions::write(OUTPUT_STREAM, inform_extension *E) {
@@ -1037,7 +1073,7 @@ make use of that:
WRITE("%S", E->as_copy->edition->work->raw_author_name);
}
-
-void Extensions::set_inclusion_sentence(inform_extension *E, parse_node *N) {
+void Extensions::set_inclusion_sentence(inform_extension *E, parse_node *N) {
E->inclusion_sentence = N;
}
-parse_node *Extensions::get_inclusion_sentence(inform_extension *E) {
+parse_node *Extensions::get_inclusion_sentence(inform_extension *E) {
if (E == NULL) return NULL;
return E->inclusion_sentence;
}
-
@@ -1110,33 +1146,33 @@ problem messages and the index.
return E->standard;
}
-
-void Extensions::must_satisfy(inform_extension *E, inbuild_requirement *req) {
+void Extensions::must_satisfy(inform_extension *E, inbuild_requirement *req) {
if (E->must_satisfy == NULL) E->must_satisfy = req;
else VersionNumberRanges::intersect_range(E->must_satisfy->version_range, req->version_range);
}
-
-int Extensions::satisfies(inform_extension *E) {
+int Extensions::satisfies(inform_extension *E) {
if (E == NULL) return FALSE;
return Requirements::meets(E->as_copy->edition, E->must_satisfy);
}
-
+
-int Extensions::rename_directory(pathname *P, text_stream *new_name) {
+int Extensions::rename_directory(pathname *P, text_stream *new_name) {
TEMPORARY_TEXT(task)
WRITE_TO(task, "(Changing directory name '%p' to '%S')\n", P, new_name);
int rv = Directories::rename(P, new_name);
@@ -1144,7 +1180,7 @@ its requirements (even though it did when first loaded). This tests for that:
return rv;
}
-int Extensions::rename_file(filename *F, text_stream *new_name) {
+int Extensions::rename_file(filename *F, text_stream *new_name) {
TEMPORARY_TEXT(task)
WRITE_TO(task, "(Changing file name '%f' to '%S')\n", F, new_name);
int rv = Filenames::rename(F, new_name);
diff --git a/docs/supervisor-module/5-ps2.html b/docs/supervisor-module/5-ps2.html
index d14381be1..d35f26da6 100644
--- a/docs/supervisor-module/5-ps2.html
+++ b/docs/supervisor-module/5-ps2.html
@@ -1127,10 +1127,10 @@ each extension against the intersection of all requirements put on it:
void Projects::check_extension_versions_d(inform_project *proj, build_vertex *V) {
if ((V->as_copy) && (V->as_copy->edition->work->genre == extension_genre)) {
inform_extension *E = Extensions::from_copy(V->as_copy);
- if (Extensions::satisfies(E) == FALSE) {
+ if (Extensions::satisfies(E) == FALSE) {
copy_error *CE = CopyErrors::new_T(SYNTAX_CE, ExtVersionTooLow_SYNERROR,
I"two incompatible versions");
- CopyErrors::supply_node(CE, Extensions::get_inclusion_sentence(E));
+ CopyErrors::supply_node(CE, Extensions::get_inclusion_sentence(E));
Copies::attach_error(proj->as_copy, CE);
}
}
diff --git a/docs/supervisor-module/6-hdn.html b/docs/supervisor-module/6-hdn.html
index 67ea776ab..4ac1a549d 100644
--- a/docs/supervisor-module/6-hdn.html
+++ b/docs/supervisor-module/6-hdn.html
@@ -789,7 +789,7 @@ file and a line number of at least 1).
inform_extension *Headings::get_extension_containing(heading *h) {
if ((h == NULL) || (h->start_location.file_of_origin == NULL)) return NULL;
- return Extensions::corresponding_to(h->start_location.file_of_origin);
+ return Extensions::corresponding_to(h->start_location.file_of_origin);
}
copy_error *CE = CopyErrors::new_T(SYNTAX_CE, ExtInadequateVM_SYNERROR, C->parsed_from);
- CopyErrors::supply_node(CE, Extensions::get_inclusion_sentence(E));
+ CopyErrors::supply_node(CE, Extensions::get_inclusion_sentence(E));
Copies::attach_error(inclusions_errors_to, CE);
diff --git a/docs/supervisor-module/6-st.html b/docs/supervisor-module/6-st.html
index d03e12978..d2f29d38b 100644
--- a/docs/supervisor-module/6-st.html
+++ b/docs/supervisor-module/6-st.html
@@ -98,7 +98,7 @@ perhaps combining our feed with that of others.
-source_file *SourceText::read_file(inbuild_copy *C, filename *F, text_stream *synopsis, +source_file *SourceText::read_file(inbuild_copy *C, filename *F, text_stream *synopsis, int documentation_only, int primary) { currently_lexing_into = C; general_pointer ref = STORE_POINTER_inbuild_copy(NULL); @@ -157,7 +157,7 @@ source files. text_stream *SourceText::describe_source_file(text_stream *paraphrase, source_file *referred, text_stream *file) { paraphrase = I"source text"; - inform_extension *E = Extensions::corresponding_to(referred); + inform_extension *E = Extensions::corresponding_to(referred); if (E) { inbuild_work *work = E->as_copy->edition->work; if ((work) && (Works::is_standard_rules(work))) @@ -176,7 +176,7 @@ source files.
void SourceText::gloss_extension(text_stream *OUT, source_file *referred) { - inform_extension *E = Extensions::corresponding_to(referred); + inform_extension *E = Extensions::corresponding_to(referred); if (E) WRITE(" in the extension %X", E->as_copy->edition->work); }diff --git a/docs/supervisor-module/7-cns.html b/docs/supervisor-module/7-cns.html index c7fedcc6e..f2f0dbfae 100644 --- a/docs/supervisor-module/7-cns.html +++ b/docs/supervisor-module/7-cns.html @@ -128,7 +128,7 @@ since the inbuild_search_result fo
text_stream *ExtensionCensus::ecd_rubric(extension_census_datum *ecd) { - return Extensions::get_rubric(Extensions::from_copy(ecd->found_as->copy)); + return Extensions::get_rubric(Extensions::from_copy(ecd->found_as->copy)); } int ExtensionCensus::installation_region(extension_census_datum *ecd) { diff --git a/docs/supervisor-module/7-ip2.html b/docs/supervisor-module/7-ip2.html index 725105c72..9a5459b04 100644 --- a/docs/supervisor-module/7-ip2.html +++ b/docs/supervisor-module/7-ip2.html @@ -252,9 +252,10 @@ easily be scrolled down off screen when the user first visits the page.- if (Wordings::nonempty(E->documentation_text)) { + wording DW = Extensions::get_documentation_text(E); + if (Wordings::nonempty(DW)) { HTML_OPEN("p"); - DocumentationRenderer::table_of_contents(E->documentation_text, OUT, leaf); + DocumentationRenderer::table_of_contents(DW, OUT, leaf); HTML_CLOSE("p"); }@@ -263,9 +264,9 @@ easily be scrolled down off screen when the user first visits the page.- if (Wordings::nonempty(E->documentation_text)) - no_egs = DocumentationRenderer::set_body_text(E->documentation_text, OUT, - eg_number, leaf); + wording DW = Extensions::get_documentation_text(E); + if (Wordings::nonempty(DW)) + no_egs = DocumentationRenderer::set_body_text(DW, OUT, eg_number, leaf); else { HTML_OPEN("p"); WRITE("The extension provides no documentation."); diff --git a/inbuild/supervisor-module/Chapter 5/Extension Services.w b/inbuild/supervisor-module/Chapter 5/Extension Services.w index d87b88f2f..88bfb0f25 100644 --- a/inbuild/supervisor-module/Chapter 5/Extension Services.w +++ b/inbuild/supervisor-module/Chapter 5/Extension Services.w @@ -15,6 +15,7 @@ typedef struct inform_extension { struct wording body_text; /* Body of source text supplied in extension, if any */ int body_text_unbroken; /* Does this contain text waiting to be sentence-broken? */ struct wording documentation_text; /* Documentation supplied in extension, if any */ + int documentation_sought; /* Has it yet been looked for? */ int standard; /* the (or perhaps just a) Standard Rules extension */ int authorial_modesty; /* Do not credit in the compiled game */ struct text_stream *rubric_as_lexed; /* brief description found in opening lines */ @@ -76,6 +77,7 @@ void Extensions::scan(inbuild_copy *C) { E->body_text = EMPTY_WORDING; E->body_text_unbroken = FALSE; E->documentation_text = EMPTY_WORDING; + E->documentation_sought = FALSE; E->standard = FALSE; E->authorial_modesty = FALSE; E->read_into_file = NULL; @@ -810,6 +812,35 @@ and no documentation. if (<>) E->documentation_text = GET_RW( , 2); E->body_text_unbroken = TRUE; /* mark this to be sentence-broken */ +@ In directory extensions, documentation can be stored separately: + += +wording Extensions::get_documentation_text(inform_extension *E) { + if (E == NULL) return EMPTY_WORDING; + Copies::get_source_text(E->as_copy); /* in the unlikely event this has not happened yet */ + if (E->documentation_sought == FALSE) { + if (E->as_copy->location_if_path) { + pathname *D = Pathnames::down(E->as_copy->location_if_path, I"Documentation"); + filename *F = Filenames::in(D, I"Documentation.txt"); + if (TextFiles::exists(F)) @ ; + } + E->documentation_sought = TRUE; + } + return E->documentation_text; +} + +@ = + if (Wordings::nonempty(E->documentation_text)) { + TEMPORARY_TEXT(error_text) + WRITE_TO(error_text, + "this extension provides documentation both as a file and in its source"); + Copies::attach_error(E->as_copy, CopyErrors::new_T(EXT_MISWORDED_CE, -1, error_text)); + DISCARD_TEXT(error_text) + } else { + source_file *sf = SourceText::read_file(E->as_copy, F, NULL, TRUE, FALSE); + if (sf) E->documentation_text = sf->text_read; + } + @ When the extension source text was read from its |source_file|, we attached a reference to say which |inform_extension| it was, and here we make use of that: diff --git a/inbuild/supervisor-module/Chapter 7/Individual Pages.w b/inbuild/supervisor-module/Chapter 7/Individual Pages.w index 773e15d36..34e74afff 100644 --- a/inbuild/supervisor-module/Chapter 7/Individual Pages.w +++ b/inbuild/supervisor-module/Chapter 7/Individual Pages.w @@ -159,16 +159,17 @@ If the TOC were directly at the top of the supplied documentation, it might easily be scrolled down off screen when the user first visits the page. @ = - if (Wordings::nonempty(E->documentation_text)) { + wording DW = Extensions::get_documentation_text(E); + if (Wordings::nonempty(DW)) { HTML_OPEN("p"); - DocumentationRenderer::table_of_contents(E->documentation_text, OUT, leaf); + DocumentationRenderer::table_of_contents(DW, OUT, leaf); HTML_CLOSE("p"); } @ = - if (Wordings::nonempty(E->documentation_text)) - no_egs = DocumentationRenderer::set_body_text(E->documentation_text, OUT, - eg_number, leaf); + wording DW = Extensions::get_documentation_text(E); + if (Wordings::nonempty(DW)) + no_egs = DocumentationRenderer::set_body_text(DW, OUT, eg_number, leaf); else { HTML_OPEN("p"); WRITE("The extension provides no documentation."); diff --git a/inform7/Figures/timings-diagnostics.txt b/inform7/Figures/timings-diagnostics.txt index 8f6ba8ce4..39c48207d 100644 --- a/inform7/Figures/timings-diagnostics.txt +++ b/inform7/Figures/timings-diagnostics.txt @@ -1,29 +1,29 @@ 100.0% in inform7 run - 67.7% in compilation to Inter - 46.1% in //Sequence::undertake_queued_tasks// - 4.5% in //MajorNodes::pre_pass// - 3.4% in //MajorNodes::pass_1// - 1.7% in //ImperativeDefinitions::assess_all// - 1.3% in //RTKindConstructors::compile// - 1.3% in //RTPhrasebook::compile_entries// + 66.9% in compilation to Inter + 45.0% in //Sequence::undertake_queued_tasks// + 4.7% in //MajorNodes::pre_pass// + 3.6% in //MajorNodes::pass_1// + 1.8% in //ImperativeDefinitions::assess_all// + 1.4% in //RTKindConstructors::compile// + 1.4% in //RTPhrasebook::compile_entries// 1.0% in //Sequence::lint_inter// - 0.6% in //MajorNodes::pass_2// - 0.6% in //Sequence::undertake_queued_tasks// - 0.6% in //World::stage_V// + 0.7% in //MajorNodes::pass_2// 0.3% in //CompletionModule::compile// 0.3% in //ImperativeDefinitions::compile_first_block// 0.3% in //Sequence::undertake_queued_tasks// - 4.9% not specifically accounted for - 28.1% in running Inter pipeline - 8.6% in step 5/15: load-binary-kits + 0.3% in //Sequence::undertake_queued_tasks// + 0.3% in //World::stage_V// + 5.1% not specifically accounted for + 28.7% in running Inter pipeline + 9.0% in step 5/15: load-binary-kits 8.3% in step 14/15: generate inform6 -> auto.inf - 5.5% in step 6/15: make-synoptic-module - 2.0% in step 9/15: make-identifiers-unique + 5.8% in step 6/15: make-synoptic-module + 1.8% in step 9/15: make-identifiers-unique 0.3% in step 11/15: eliminate-redundant-labels 0.3% in step 12/15: eliminate-redundant-operations 0.3% in step 4/15: compile-splats 0.3% in step 7/15: shorten-wiring 0.3% in step 8/15: detect-indirect-calls 1.8% not specifically accounted for - 3.1% in supervisor - 1.1% not specifically accounted for + 3.6% in supervisor + 0.8% not specifically accounted for diff --git a/inform7/Internal/Inter/BasicInformExtrasKit/kit_metadata.json b/inform7/Internal/Inter/BasicInformExtrasKit/kit_metadata.json index a59da28ca..1e83d22f5 100644 --- a/inform7/Internal/Inter/BasicInformExtrasKit/kit_metadata.json +++ b/inform7/Internal/Inter/BasicInformExtrasKit/kit_metadata.json @@ -2,7 +2,7 @@ "is": { "type": "kit", "title": "BasicInformExtrasKit", - "version": "10.2.0-beta+6W25" + "version": "10.2.0-beta+6W26" }, "kit-details": { "has-priority": 1 diff --git a/inform7/Internal/Inter/BasicInformKit/kit_metadata.json b/inform7/Internal/Inter/BasicInformKit/kit_metadata.json index acf560f29..a165a6dbf 100644 --- a/inform7/Internal/Inter/BasicInformKit/kit_metadata.json +++ b/inform7/Internal/Inter/BasicInformKit/kit_metadata.json @@ -2,7 +2,7 @@ "is": { "type": "kit", "title": "BasicInformKit", - "version": "10.2.0-beta+6W25" + "version": "10.2.0-beta+6W26" }, "needs": [ { "unless": { diff --git a/inform7/Internal/Inter/CommandParserKit/kit_metadata.json b/inform7/Internal/Inter/CommandParserKit/kit_metadata.json index 696a3115a..0df5b3316 100644 --- a/inform7/Internal/Inter/CommandParserKit/kit_metadata.json +++ b/inform7/Internal/Inter/CommandParserKit/kit_metadata.json @@ -2,7 +2,7 @@ "is": { "type": "kit", "title": "CommandParserKit", - "version": "10.2.0-beta+6W25" + "version": "10.2.0-beta+6W26" }, "needs": [ { "need": { diff --git a/inform7/Internal/Inter/EnglishLanguageKit/kit_metadata.json b/inform7/Internal/Inter/EnglishLanguageKit/kit_metadata.json index 7d0e35032..e7420258c 100644 --- a/inform7/Internal/Inter/EnglishLanguageKit/kit_metadata.json +++ b/inform7/Internal/Inter/EnglishLanguageKit/kit_metadata.json @@ -2,7 +2,7 @@ "is": { "type": "kit", "title": "EnglishLanguageKit", - "version": "10.2.0-beta+6W25" + "version": "10.2.0-beta+6W26" }, "needs": [ { "need": { diff --git a/inform7/Internal/Inter/WorldModelKit/kit_metadata.json b/inform7/Internal/Inter/WorldModelKit/kit_metadata.json index c635c0835..814250150 100644 --- a/inform7/Internal/Inter/WorldModelKit/kit_metadata.json +++ b/inform7/Internal/Inter/WorldModelKit/kit_metadata.json @@ -2,7 +2,7 @@ "is": { "type": "kit", "title": "WorldModelKit", - "version": "10.2.0-beta+6W25" + "version": "10.2.0-beta+6W26" }, "needs": [ { "need": {