1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-30 22:14:58 +03:00

Tested out the localisation dictionary-reader

This commit is contained in:
Graham Nelson 2021-07-01 00:33:52 +01:00
parent 2592971ec3
commit 2445e3d16b
12 changed files with 64 additions and 29 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
v10.1.0-alpha.1+6S56 'Krypton' (29 June 2021)
v10.1.0-alpha.1+6S57 'Krypton' (1 July 2021)
## About Inform 7

View file

@ -1,3 +1,3 @@
Prerelease: alpha.1
Build Date: 29 June 2021
Build Number: 6S56
Build Date: 1 July 2021
Build Number: 6S57

View file

@ -542,6 +542,12 @@ flag stays <span class="extract"><span class="extract-syntax">FALSE</span></span
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Task::produce_index</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Task::produce_index</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_15">&#167;2.15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">project</span><span class="plain-syntax"> = </span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::project</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">do_not_generate_index</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Dictionaries::new</span><span class="plain-syntax">(32, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InterpretIndex::read_into_dictionary</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InstalledFiles::index_structure_file</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Projects::index_structure</span><span class="plain-syntax">(</span><span class="identifier-syntax">project</span><span class="plain-syntax">)),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">D</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::log</span><span class="plain-syntax">(</span><span class="identifier-syntax">DL</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InterpretIndex::generate_from_structure_file</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Languages::path_to_bundle</span><span class="plain-syntax">(</span>

View file

@ -127,7 +127,17 @@ but they're just plain old files, and are not managed by Inbuild as "copies".
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unknown installation resource file"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>This directory also holds the <span class="extract"><span class="extract-syntax">Basic.indext</span></span> and <span class="extract"><span class="extract-syntax">Standard.indext</span></span> index
structure files, but in principle we allow a wider range of these to exist, so:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">InstalledFiles::index_structure_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">internal</span><span class="plain-syntax"> = </span><span class="identifier-syntax">INSTALLED_FILES_HTML_CALLBACK</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">misc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">internal</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Miscellany"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">misc</span><span class="plain-syntax">, </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-dr.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-hm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-sl.html">sl</a></li><li class="progresssection"><a href="2-pb.html">pb</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresscurrent">if</li><li class="progresssection"><a href="2-dr2.html">dr2</a></li><li class="progressnext"><a href="2-dr2.html">&#10095;</a></li></ul></div>

View file

@ -888,7 +888,7 @@ calling <span class="extract"><span class="extract-syntax">Index::complete</span
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::complete</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Index::complete</span></span>:<br/>Index Interpreter - <a href="2-ii.html#SP1">&#167;1</a>, <a href="2-ii.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::complete</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Index::complete</span></span>:<br/>Index Interpreter - <a href="2-ii.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ifl</span><span class="plain-syntax">) </span><a href="2-ifs.html#SP13" class="function-link"><span class="function-syntax">Index::close_index_file</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
<span class="plain-syntax"> </span><a href="3-ge2.html#SP1" class="function-link"><span class="function-syntax">GroupedElement::detail_pages</span></a><span class="plain-syntax">();</span>

View file

@ -241,7 +241,6 @@ this into a given dictionary of key-value pairs.
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Filename was %f\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">localisation_file</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unable to open localisation file for the index"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">col</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">cr</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">key</span><span class="plain-syntax">)</span>
@ -257,7 +256,6 @@ this into a given dictionary of key-value pairs.
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">key</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fclose</span><span class="plain-syntax">(</span><span class="identifier-syntax">Input_File</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ifs.html#SP13" class="function-link"><span class="function-syntax">Index::complete</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2_1" class="paragraph-anchor"></a><b>&#167;2.1. </b>Localisation files are encoded as ISO Latin-1, not as Unicode UTF-8, so
@ -291,8 +289,8 @@ harmless, we take no trouble over <span class="extract"><span class="extract-syn
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cr</span><span class="plain-syntax"> == </span><span class="character-syntax">'='</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-ii.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Read next character from localisation stream</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cr</span><span class="plain-syntax"> == </span><span class="identifier-syntax">EOF</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Characters::is_whitespace</span><span class="plain-syntax">(</span><span class="identifier-syntax">cr</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
</pre>
@ -302,6 +300,8 @@ harmless, we take no trouble over <span class="extract"><span class="extract-syn
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Dictionaries::create_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::trim_white_space</span><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::trim_all_white_space_at_end</span><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-ii.html#SP2">&#167;2</a>, <a href="2-ii.html#SP2_2">&#167;2.2</a>.</li></ul>

View file

@ -1,36 +1,36 @@
100.0% in inform7 run
55.6% in compilation to Inter
39.7% in //Sequence::undertake_queued_tasks//
3.6% in //MajorNodes::pre_pass//
55.8% in compilation to Inter
40.0% in //Sequence::undertake_queued_tasks//
3.5% in //MajorNodes::pre_pass//
2.5% in //MajorNodes::pass_1//
2.1% in //RTPhrasebook::compile_entries//
1.5% in //ImperativeDefinitions::assess_all//
1.2% in //RTKindConstructors::compile//
2.0% in //RTPhrasebook::compile_entries//
1.4% in //ImperativeDefinitions::assess_all//
1.1% in //RTKindConstructors::compile//
0.4% in //ImperativeDefinitions::compile_first_block//
0.4% in //MajorNodes::pass_2//
0.4% in //Sequence::undertake_queued_tasks//
0.4% in //Sequence::undertake_queued_tasks//
0.4% in //World::stage_V//
0.3% in //Sequence::undertake_queued_tasks//
0.1% in //CompletionModule::compile//
0.2% in //CompletionModule::compile//
0.1% in //InferenceSubjects::emit_all//
0.1% in //RTKindConstructors::compile_permissions//
0.1% in //Task::make_built_in_kind_constructors//
0.1% in //World::stages_II_and_III//
1.9% not specifically accounted for
1.8% not specifically accounted for
42.2% in running Inter pipeline
11.4% in step preparation
11.3% in step preparation
9.8% in inter step 7/14: consolidate-text
8.1% in inter step 2/14: link
7.1% in inter step 14/14: generate inform6 -> auto.inf
1.5% in inter step 10/14: make-identifiers-unique
8.2% in inter step 2/14: link
7.0% in inter step 14/14: generate inform6 -> auto.inf
1.6% in inter step 10/14: make-identifiers-unique
0.4% in inter step 11/14: reconcile-verbs
0.3% in inter step 13/14: eliminate-redundant-operations
0.3% in inter step 6/14: assimilate
0.3% in inter step 8/14: resolve-external-symbols
0.3% in inter step 9/14: inspect-plugs
0.2% in inter step 13/14: eliminate-redundant-operations
0.2% in inter step 6/14: assimilate
0.2% in inter step 8/14: resolve-external-symbols
0.2% in inter step 9/14: inspect-plugs
0.1% in inter step 12/14: eliminate-redundant-labels
0.1% in inter step 4/14: parse-linked-matter
0.1% in inter step 5/14: resolve-conditional-compilation
2.0% not specifically accounted for
2.1% not specifically accounted for
1.6% in supervisor
0.5% not specifically accounted for
0.3% not specifically accounted for

View file

@ -38,3 +38,8 @@ element Gz
page BOGUS 111111
element Bg
%THIS = This is the example
%THAT = And
so is
...this

View file

@ -444,6 +444,12 @@ void Task::disable_or_enable_census(int which) {
void Task::produce_index(void) {
inform_project *project = Task::project();
if (do_not_generate_index == FALSE) {
dictionary *D = Dictionaries::new(32, TRUE);
InterpretIndex::read_into_dictionary(
InstalledFiles::index_structure_file(
Projects::index_structure(project)),
D);
Dictionaries::log(DL, D);
InterpretIndex::generate_from_structure_file(
Filenames::in(
Languages::path_to_bundle(

View file

@ -157,7 +157,6 @@ void InterpretIndex::read_into_dictionary(filename *localisation_file, dictionar
LOG("Filename was %f\n", localisation_file);
internal_error("unable to open localisation file for the index");
}
int col = 1, cr;
TEMPORARY_TEXT(key)
@ -173,7 +172,6 @@ void InterpretIndex::read_into_dictionary(filename *localisation_file, dictionar
DISCARD_TEXT(key)
DISCARD_TEXT(value)
fclose(Input_File);
Index::complete();
}
@ Localisation files are encoded as ISO Latin-1, not as Unicode UTF-8, so
@ -199,11 +197,13 @@ harmless, we take no trouble over |0a0d| or |0d0a| combinations.)
if (cr == '=') {
while (TRUE) {
@<Read next character from localisation stream@>;
if (cr == EOF) break;
if (Characters::is_whitespace(cr)) continue;
break;
}
}
@<Write key-value pair@> =
text_stream *to = Dictionaries::create_text(D, key);
Str::trim_white_space(value);
Str::trim_all_white_space_at_end(value);
WRITE_TO(to, "%S", value);

View file

@ -57,4 +57,12 @@ filename *InstalledFiles::filename(int ires) {
return NULL;
}
@ This directory also holds the |Basic.indext| and |Standard.indext| index
structure files, but in principle we allow a wider range of these to exist, so:
=
filename *InstalledFiles::index_structure_file(text_stream *leaf) {
pathname *internal = INSTALLED_FILES_HTML_CALLBACK();
pathname *misc = Pathnames::down(internal, I"Miscellany");
return Filenames::in(misc, leaf);
}