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:
parent
2592971ec3
commit
2445e3d16b
|
@ -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
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: alpha.1
|
||||
Build Date: 29 June 2021
|
||||
Build Number: 6S56
|
||||
Build Date: 1 July 2021
|
||||
Build Number: 6S57
|
||||
|
|
|
@ -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">§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>
|
||||
|
|
|
@ -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>§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">❮</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">❯</a></li></ul></div>
|
||||
|
|
|
@ -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">§1</a>, <a href="2-ii.html#SP2">§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">§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>
|
||||
|
|
|
@ -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>§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">§2</a>, <a href="2-ii.html#SP2_2">§2.2</a>.</li></ul>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -38,3 +38,8 @@ element Gz
|
|||
|
||||
page BOGUS 111111
|
||||
element Bg
|
||||
|
||||
%THIS = This is the example
|
||||
%THAT = And
|
||||
so is
|
||||
...this
|
|
@ -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(
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue