zwischenspeicherung

This commit is contained in:
Christian Fraß 2018-03-26 22:14:10 +02:00
parent 494d9822ba
commit e97b65c856
11 changed files with 218 additions and 192 deletions

View file

@ -279,7 +279,7 @@ module mod_vtm
if (! partie.figur.ist_schlicht()) if (! partie.figur.ist_schlicht())
{ {
let test : mod_test.typ_test = mod_aufgabe.tests(partie.aufgabe)[partie.testindex.lesen()]; let test : mod_test.typ_test = mod_aufgabe.tests(partie.aufgabe)[partie.testindex.lesen()];
let band : Array<mod_symbol.typ_symbol> = mod_vtm_helfer.liste_kopieren<mod_symbol.typ_symbol>(mod_test.eingabe(test)); let band : Array<mod_symbol.typ_symbol> = mod_vtm.mod_helfer.liste_kopieren<mod_symbol.typ_symbol>(mod_test.eingabe(test));
let stelle : mod_stelle.typ_stelle = mod_welt.erzeuger_finden(partie.welt); let stelle : mod_stelle.typ_stelle = mod_welt.erzeuger_finden(partie.welt);
partie.figur = ( partie.figur = (
new klasse_schlicht<mod_figur.typ_figur> new klasse_schlicht<mod_figur.typ_figur>

View file

@ -36,7 +36,7 @@ module mod_vtm
*/ */
export function addieren(richtung1 : typ_richtung, richtung2 : typ_richtung) : typ_richtung export function addieren(richtung1 : typ_richtung, richtung2 : typ_richtung) : typ_richtung
{ {
return mod_vtm_helfer.mod(richtung1 + richtung2, 6); return mod_vtm.mod_helfer.mod_mathematik.mod(richtung1 + richtung2, 6);
} }

View file

@ -102,7 +102,7 @@ module mod_vtm
) )
.concat .concat
( (
mod_vtm_helfer.sequenz(erweitert ? 4 : 2).map mod_vtm.mod_helfer.sequenz(erweitert ? 4 : 2).map
( (
symbol => ( symbol => (
{ {
@ -125,7 +125,7 @@ module mod_vtm
) )
.concat .concat
( (
mod_vtm_helfer.sequenz(erweitert ? 2 : 1).map mod_vtm.mod_helfer.sequenz(erweitert ? 2 : 1).map
( (
index => index =>
{ {
@ -204,7 +204,7 @@ module mod_vtm
} }
if (index_alt.ist_schlicht()) if (index_alt.ist_schlicht())
{ {
let index_neu : int = mod_vtm_helfer.mod(index_alt.lesen() + (umgekehrt ? -1 : +1), liste.length); let index_neu : int = mod_vtm.mod_helfer.mod_mathematik.mod(index_alt.lesen() + (umgekehrt ? -1 : +1), liste.length);
let aktor_neu : mod_aktor.typ_aktor = liste[index_neu].ersteller(); let aktor_neu : mod_aktor.typ_aktor = liste[index_neu].ersteller();
feld_setzen(welt, stelle, aktor_neu); feld_setzen(welt, stelle, aktor_neu);
} }

View file

@ -42,8 +42,8 @@ module mod_vtm
{ {
let praefix : string = ( let praefix : string = (
{ {
"akzeptor": mod_vtm_helfer.uebersetzung_holen("aufbau.aufgaben.arten.akzeptor.kuerzel"), "akzeptor": mod_vtm.mod_helfer.mod_uebersetzung.holen("aufbau.aufgaben.arten.akzeptor.kuerzel"),
"transduktor": mod_vtm_helfer.uebersetzung_holen("aufbau.aufgaben.arten.transduktor.kuerzel"), "transduktor": mod_vtm.mod_helfer.mod_uebersetzung.holen("aufbau.aufgaben.arten.transduktor.kuerzel"),
}[aufgabe_roh["art"]] }[aufgabe_roh["art"]]
); );
let titel : string = ("[" + praefix + "]" + " " + aufgabe_roh["parameter"]["titel"]); let titel : string = ("[" + praefix + "]" + " " + aufgabe_roh["parameter"]["titel"]);
@ -87,15 +87,15 @@ module mod_vtm
let sprache_nativ : string = "de"; let sprache_nativ : string = "de";
if (! sprachen[""+"includes"](sprache_nativ)) if (! sprachen[""+"includes"](sprache_nativ))
sprachen.push(sprache_nativ); sprachen.push(sprache_nativ);
mod_vtm_helfer.uebersetzung_einrichten(sprachen); mod_vtm.mod_helfer.mod_uebersetzung.einrichten(sprachen);
mod_vtm_helfer.uebersetzung_anwenden(document); mod_vtm.mod_helfer.mod_uebersetzung.anwenden(document);
} }
// Hilfe // Hilfe
{ {
// Einleitung // Einleitung
{ {
document.querySelector("#hilfe_einleitung").innerHTML = ( document.querySelector("#hilfe_einleitung").innerHTML = (
mod_vtm_helfer.uebersetzung_holen mod_vtm.mod_helfer.mod_uebersetzung.holen
( (
"hilfe.einleitung", "hilfe.einleitung",
{ {

View file

@ -16,25 +16,33 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_helfer module mod_vtm
{ {
/** export module mod_helfer
* @author kcf <vidofnir@folksprak.org>
*/
export function div(x : int, y : int) : int
{ {
return Math.floor(x/y);
export module mod_mathematik
{
/**
* @author kcf <vidofnir@folksprak.org>
*/
export function div(x : int, y : int) : int
{
return Math.floor(x/y);
}
/**
* @author kcf <vidofnir@folksprak.org>
*/
export function mod(x : int, y : int) : int
{
return (x - (y * div(x, y)));
}
}
} }
/**
* @author kcf <vidofnir@folksprak.org>
*/
export function mod(x : int, y : int) : int
{
return (x - (y * div(x, y)));
}
} }

View file

@ -16,156 +16,166 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_helfer module mod_vtm
{ {
/** export module mod_helfer
* @author kcf <vidofnir@folksprak.org>
*/
var _uebersetzung_sprachstapel : Array<string>;
/**
* @author kcf <vidofnir@folksprak.org>
*/
export var _uebersetzung_daten : {[sprache : string] : {[schluessel : string] : string}} = {};
/**
* @author kcf <vidofnir@folksprak.org>
*/
export function uebersetzung_einrichten(sprachen : Array<string>) : void
{ {
_uebersetzung_sprachstapel = [];
sprachen.forEach export module mod_uebersetzung
( {
sprache =>
/**
* @author kcf <vidofnir@folksprak.org>
*/
var _sprachstapel : Array<string>;
/**
* @author kcf <vidofnir@folksprak.org>
*/
var _daten : {[sprache : string] : {[schluessel : string] : string}} = {};
/**
* @author kcf <vidofnir@folksprak.org>
*/
export function einrichten(sprachen : Array<string>) : void
{ {
let zeichenketten_roh_ : schnittstelle_fehlermonade<any> = mod_vtm_daten.lesen("zeichenketten-" + sprache); _sprachstapel = [];
if (zeichenketten_roh_.ist_schlicht()) sprachen.forEach
{ (
let zeichenketten_roh : {[schluessel : string] : string} = (<{[schluessel : string] : string}>(zeichenketten_roh_.lesen())); sprache =>
_uebersetzung_daten[sprache] = {};
for (let schluessel in zeichenketten_roh)
{ {
_uebersetzung_daten[sprache][schluessel] = (<string>(zeichenketten_roh[schluessel])); let zeichenketten_roh_ : schnittstelle_fehlermonade<any> = mod_vtm_daten.lesen("zeichenketten-" + sprache);
if (zeichenketten_roh_.ist_schlicht())
{
let zeichenketten_roh : {[schluessel : string] : string} = (<{[schluessel : string] : string}>(zeichenketten_roh_.lesen()));
_daten[sprache] = {};
for (let schluessel in zeichenketten_roh)
{
_daten[sprache][schluessel] = (<string>(zeichenketten_roh[schluessel]));
}
_sprachstapel.push(sprache);
}
else
{
let meldung : string = ("Zeichenketten für Sprache '" + sprache + "' konnten nicht geladen werden");
console.warn(meldung);
}
} }
_uebersetzung_sprachstapel.push(sprache); )
} ;
else }
/**
* @author kcf <vidofnir@folksprak.org>
*/
function lesen(sprache : string, schluessel : string) : schnittstelle_fehlermonade<string>
{
if (sprache in _daten)
{ {
let meldung : string = ("Zeichenketten für Sprache '" + sprache + "' konnten nicht geladen werden"); let satz : {[schluessel : string] : string} = _daten[sprache];
console.warn(meldung); if (schluessel in satz)
}
}
)
;
}
/**
* @author kcf <vidofnir@folksprak.org>
*/
function uebersetzung_lesen(sprache : string, schluessel : string) : schnittstelle_fehlermonade<string>
{
if (sprache in _uebersetzung_daten)
{
let satz : {[schluessel : string] : string} = _uebersetzung_daten[sprache];
if (schluessel in satz)
{
return (new klasse_schlicht<string>(satz[schluessel]));
}
else
{
let meldung : string = ("keine Zeichenketten für Schlüssel '" + schluessel + "' in Sprache '" + sprache + "'");
console.warn(meldung);
return (new klasse_nichts<string>());
}
}
else
{
let meldung : string = ("keine Zeichenketten für Sprache '" + sprache + "'");
console.warn(meldung);
return (new klasse_nichts<string>());
}
}
/**
* @author kcf <vidofnir@folksprak.org>
*/
export function uebersetzung_holen(schluessel : string, vars : {[name : string] : string} = {}) : string
{
let ergebnis : schnittstelle_fehlermonade<string> = (new klasse_nichts<string>());
let gefunden : boolean = (
_uebersetzung_sprachstapel
.some
(
sprache =>
{
let ergebnis_ : schnittstelle_fehlermonade<string> = uebersetzung_lesen(sprache, schluessel);
if (ergebnis_.ist_schlicht())
{
ergebnis = ergebnis_;
return true;
}
else
{
return false;
}
}
)
);
if (gefunden)
{
let str : string = ergebnis.lesen();
for (let name in vars)
{
let muster : RegExp = (new RegExp("!var:" + name));
let wert : string = vars[name];
str = str.replace(muster, wert);
}
return str;
}
else
{
return ("{" + schluessel + "}");
}
}
/**
* @author kcf <vidofnir@folksprak.org>
*/
export function uebersetzung_anwenden(kontext : DocumentFragment) : void
{
let muster : RegExp = (new RegExp("^!translate:([a-z0-9\.]*)$"));
document.querySelectorAll("*")[""+"forEach"]
(
element =>
{
if (element.childElementCount === 0)
{
let inhalt : string = element.textContent;
let fund : any = muster.exec(inhalt);
if (fund != null)
{ {
let schluessel : string = fund[1]; return (new klasse_schlicht<string>(satz[schluessel]));
let inhalt_ : string = uebersetzung_holen(schluessel);
element.textContent = inhalt_;
} }
else else
{ {
// nichts tun let meldung : string = ("keine Zeichenketten für Schlüssel '" + schluessel + "' in Sprache '" + sprache + "'");
console.warn(meldung);
return (new klasse_nichts<string>());
} }
} }
else else
{ {
// nichts tun let meldung : string = ("keine Zeichenketten für Sprache '" + sprache + "'");
console.warn(meldung);
return (new klasse_nichts<string>());
} }
} }
)
;
/**
* @author kcf <vidofnir@folksprak.org>
*/
export function holen(schluessel : string, vars : {[name : string] : string} = {}) : string
{
let ergebnis : schnittstelle_fehlermonade<string> = (new klasse_nichts<string>());
let gefunden : boolean = (
_sprachstapel
.some
(
sprache =>
{
let ergebnis_ : schnittstelle_fehlermonade<string> = lesen(sprache, schluessel);
if (ergebnis_.ist_schlicht())
{
ergebnis = ergebnis_;
return true;
}
else
{
return false;
}
}
)
);
if (gefunden)
{
let str : string = ergebnis.lesen();
for (let name in vars)
{
let muster : RegExp = (new RegExp("!var:" + name));
let wert : string = vars[name];
str = str.replace(muster, wert);
}
return str;
}
else
{
return ("{" + schluessel + "}");
}
}
/**
* @author kcf <vidofnir@folksprak.org>
*/
export function anwenden(kontext : DocumentFragment) : void
{
let muster : RegExp = (new RegExp("^!translate:([a-z0-9\.]*)$"));
document.querySelectorAll("*")[""+"forEach"]
(
element =>
{
if (element.childElementCount === 0)
{
let inhalt : string = element.textContent;
let fund : any = muster.exec(inhalt);
if (fund != null)
{
let schluessel : string = fund[1];
let inhalt_ : string = holen(schluessel);
element.textContent = inhalt_;
}
else
{
// nichts tun
}
}
else
{
// nichts tun
}
}
)
;
}
}
} }
} }

View file

@ -16,34 +16,39 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>. * along with this program. If not, see <https://www.gnu.org/licenses/>.
*/ */
module mod_vtm_helfer module mod_vtm
{ {
/** export module mod_helfer
* @author kcf <vidofnir@folksprak.org>
*/
export function sequenz(laenge : int) : Array<int>
{ {
return ((laenge <= 0) ? [] : sequenz(laenge-1).concat([laenge-1]));
} /**
* @author kcf <vidofnir@folksprak.org>
*/
export function sequenz(laenge : int) : Array<int>
{
return ((laenge <= 0) ? [] : sequenz(laenge-1).concat([laenge-1]));
}
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export function liste_kopieren<type_element>(liste : Array<type_element>, element_kopieren : (element : type_element)=>type_element = (x => x)) : Array<type_element> export function liste_kopieren<type_element>(liste : Array<type_element>, element_kopieren : (element : type_element)=>type_element = (x => x)) : Array<type_element>
{ {
let liste_ : Array<type_element> = []; let liste_ : Array<type_element> = [];
liste.forEach liste.forEach
( (
element => element =>
{ {
let element_ : type_element = element_kopieren(element); let element_ : type_element = element_kopieren(element);
liste_.push(element); liste_.push(element);
} }
) )
; ;
return liste_; return liste_;
}
} }
} }

View file

@ -28,14 +28,14 @@ module mod_vtm
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
export type typ_position = mod_vtm_helfer.typ_vektor; export type typ_position = mod_vtm.mod_helfer.mod_vektor.typ_vektor;
/** /**
* @author kcf <vidofnir@folksprak.org> * @author kcf <vidofnir@folksprak.org>
*/ */
var basis1 : typ_position = mod_vtm_helfer.vektor_polar((0/6) * (2*Math.PI)); var basis1 : typ_position = mod_vtm.mod_helfer.mod_vektor.polar((0/6) * (2*Math.PI));
var basis2 : typ_position = mod_vtm_helfer.vektor_polar((2/6) * (2*Math.PI)); var basis2 : typ_position = mod_vtm.mod_helfer.mod_vektor.polar((2/6) * (2*Math.PI));
/** /**
@ -44,10 +44,10 @@ module mod_vtm
export function von_stelle(stelle : mod_vtm.mod_aufbau.mod_stelle.typ_stelle) : typ_position export function von_stelle(stelle : mod_vtm.mod_aufbau.mod_stelle.typ_stelle) : typ_position
{ {
return ( return (
mod_vtm_helfer.vektor_addieren mod_vtm.mod_helfer.mod_vektor.addieren
( (
mod_vtm_helfer.vektor_skalieren(basis1, stelle.u), mod_vtm.mod_helfer.mod_vektor.skalieren(basis1, stelle.u),
mod_vtm_helfer.vektor_skalieren(basis2, stelle.v) mod_vtm.mod_helfer.mod_vektor.skalieren(basis2, stelle.v)
) )
); );
} }

View file

@ -84,7 +84,7 @@ module mod_vtm
return ( return (
pfad pfad
( (
mod_vtm_helfer.sequenz(6).map(i => mod_vtm_helfer.vektor_polar(((i+0.5)/6) * (2*Math.PI), 0.5)), mod_vtm.mod_helfer.sequenz(6).map(i => mod_vtm.mod_helfer.mod_vektor.polar(((i+0.5)/6) * (2*Math.PI), 0.5)),
true, true,
{ {
"class": "rahmen" "class": "rahmen"

View file

@ -42,7 +42,7 @@ module mod_vtm
*/ */
export function pfad export function pfad
( (
vertices : Array<mod_vtm_helfer.typ_vektor>, vertices : Array<mod_vtm.mod_helfer.mod_vektor.typ_vektor>,
schliessen : boolean = true, schliessen : boolean = true,
attribute : {[schlussel : string] : string} = {}, attribute : {[schlussel : string] : string} = {},
) )

3
werkzeuge/anpassen.sed Normal file
View file

@ -0,0 +1,3 @@
s:mod_vtm_helfer.sequenz:mod_vtm.mod_helfer.sequenz:g
s:mod_vtm_helfer.liste_kopieren:mod_vtm.mod_helfer.liste_kopieren:g