zwischenspeicherung
This commit is contained in:
parent
494d9822ba
commit
e97b65c856
|
|
@ -279,7 +279,7 @@ module mod_vtm
|
|||
if (! partie.figur.ist_schlicht())
|
||||
{
|
||||
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);
|
||||
partie.figur = (
|
||||
new klasse_schlicht<mod_figur.typ_figur>
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ module mod_vtm
|
|||
*/
|
||||
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);
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ module mod_vtm
|
|||
)
|
||||
.concat
|
||||
(
|
||||
mod_vtm_helfer.sequenz(erweitert ? 4 : 2).map
|
||||
mod_vtm.mod_helfer.sequenz(erweitert ? 4 : 2).map
|
||||
(
|
||||
symbol => (
|
||||
{
|
||||
|
|
@ -125,7 +125,7 @@ module mod_vtm
|
|||
)
|
||||
.concat
|
||||
(
|
||||
mod_vtm_helfer.sequenz(erweitert ? 2 : 1).map
|
||||
mod_vtm.mod_helfer.sequenz(erweitert ? 2 : 1).map
|
||||
(
|
||||
index =>
|
||||
{
|
||||
|
|
@ -204,7 +204,7 @@ module mod_vtm
|
|||
}
|
||||
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();
|
||||
feld_setzen(welt, stelle, aktor_neu);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -42,8 +42,8 @@ module mod_vtm
|
|||
{
|
||||
let praefix : string = (
|
||||
{
|
||||
"akzeptor": mod_vtm_helfer.uebersetzung_holen("aufbau.aufgaben.arten.akzeptor.kuerzel"),
|
||||
"transduktor": mod_vtm_helfer.uebersetzung_holen("aufbau.aufgaben.arten.transduktor.kuerzel"),
|
||||
"akzeptor": mod_vtm.mod_helfer.mod_uebersetzung.holen("aufbau.aufgaben.arten.akzeptor.kuerzel"),
|
||||
"transduktor": mod_vtm.mod_helfer.mod_uebersetzung.holen("aufbau.aufgaben.arten.transduktor.kuerzel"),
|
||||
}[aufgabe_roh["art"]]
|
||||
);
|
||||
let titel : string = ("[" + praefix + "]" + " " + aufgabe_roh["parameter"]["titel"]);
|
||||
|
|
@ -87,15 +87,15 @@ module mod_vtm
|
|||
let sprache_nativ : string = "de";
|
||||
if (! sprachen[""+"includes"](sprache_nativ))
|
||||
sprachen.push(sprache_nativ);
|
||||
mod_vtm_helfer.uebersetzung_einrichten(sprachen);
|
||||
mod_vtm_helfer.uebersetzung_anwenden(document);
|
||||
mod_vtm.mod_helfer.mod_uebersetzung.einrichten(sprachen);
|
||||
mod_vtm.mod_helfer.mod_uebersetzung.anwenden(document);
|
||||
}
|
||||
// Hilfe
|
||||
{
|
||||
// Einleitung
|
||||
{
|
||||
document.querySelector("#hilfe_einleitung").innerHTML = (
|
||||
mod_vtm_helfer.uebersetzung_holen
|
||||
mod_vtm.mod_helfer.mod_uebersetzung.holen
|
||||
(
|
||||
"hilfe.einleitung",
|
||||
{
|
||||
|
|
|
|||
|
|
@ -16,25 +16,33 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
module mod_vtm_helfer
|
||||
module mod_vtm
|
||||
{
|
||||
|
||||
/**
|
||||
* @author kcf <vidofnir@folksprak.org>
|
||||
*/
|
||||
export function div(x : int, y : int) : int
|
||||
export module mod_helfer
|
||||
{
|
||||
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)));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -16,156 +16,166 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
module mod_vtm_helfer
|
||||
module mod_vtm
|
||||
{
|
||||
|
||||
/**
|
||||
* @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
|
||||
export module mod_helfer
|
||||
{
|
||||
_uebersetzung_sprachstapel = [];
|
||||
sprachen.forEach
|
||||
(
|
||||
sprache =>
|
||||
|
||||
export module mod_uebersetzung
|
||||
{
|
||||
|
||||
/**
|
||||
* @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);
|
||||
if (zeichenketten_roh_.ist_schlicht())
|
||||
{
|
||||
let zeichenketten_roh : {[schluessel : string] : string} = (<{[schluessel : string] : string}>(zeichenketten_roh_.lesen()));
|
||||
_uebersetzung_daten[sprache] = {};
|
||||
for (let schluessel in zeichenketten_roh)
|
||||
_sprachstapel = [];
|
||||
sprachen.forEach
|
||||
(
|
||||
sprache =>
|
||||
{
|
||||
_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");
|
||||
console.warn(meldung);
|
||||
}
|
||||
}
|
||||
)
|
||||
;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @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 satz : {[schluessel : string] : string} = _daten[sprache];
|
||||
if (schluessel in satz)
|
||||
{
|
||||
let schluessel : string = fund[1];
|
||||
let inhalt_ : string = uebersetzung_holen(schluessel);
|
||||
element.textContent = inhalt_;
|
||||
return (new klasse_schlicht<string>(satz[schluessel]));
|
||||
}
|
||||
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
|
||||
{
|
||||
// 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
|
||||
}
|
||||
}
|
||||
)
|
||||
;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -16,34 +16,39 @@
|
|||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
module mod_vtm_helfer
|
||||
module mod_vtm
|
||||
{
|
||||
|
||||
/**
|
||||
* @author kcf <vidofnir@folksprak.org>
|
||||
*/
|
||||
export function sequenz(laenge : int) : Array<int>
|
||||
export module mod_helfer
|
||||
{
|
||||
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>
|
||||
*/
|
||||
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> = [];
|
||||
liste.forEach
|
||||
(
|
||||
element =>
|
||||
{
|
||||
let element_ : type_element = element_kopieren(element);
|
||||
liste_.push(element);
|
||||
}
|
||||
)
|
||||
;
|
||||
return liste_;
|
||||
/**
|
||||
* @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>
|
||||
{
|
||||
let liste_ : Array<type_element> = [];
|
||||
liste.forEach
|
||||
(
|
||||
element =>
|
||||
{
|
||||
let element_ : type_element = element_kopieren(element);
|
||||
liste_.push(element);
|
||||
}
|
||||
)
|
||||
;
|
||||
return liste_;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,14 +28,14 @@ module mod_vtm
|
|||
/**
|
||||
* @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>
|
||||
*/
|
||||
var basis1 : typ_position = mod_vtm_helfer.vektor_polar((0/6) * (2*Math.PI));
|
||||
var basis2 : typ_position = mod_vtm_helfer.vektor_polar((2/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.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
|
||||
{
|
||||
return (
|
||||
mod_vtm_helfer.vektor_addieren
|
||||
mod_vtm.mod_helfer.mod_vektor.addieren
|
||||
(
|
||||
mod_vtm_helfer.vektor_skalieren(basis1, stelle.u),
|
||||
mod_vtm_helfer.vektor_skalieren(basis2, stelle.v)
|
||||
mod_vtm.mod_helfer.mod_vektor.skalieren(basis1, stelle.u),
|
||||
mod_vtm.mod_helfer.mod_vektor.skalieren(basis2, stelle.v)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -84,7 +84,7 @@ module mod_vtm
|
|||
return (
|
||||
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,
|
||||
{
|
||||
"class": "rahmen"
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ module mod_vtm
|
|||
*/
|
||||
export function pfad
|
||||
(
|
||||
vertices : Array<mod_vtm_helfer.typ_vektor>,
|
||||
vertices : Array<mod_vtm.mod_helfer.mod_vektor.typ_vektor>,
|
||||
schliessen : boolean = true,
|
||||
attribute : {[schlussel : string] : string} = {},
|
||||
)
|
||||
|
|
|
|||
3
werkzeuge/anpassen.sed
Normal file
3
werkzeuge/anpassen.sed
Normal 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
|
||||
|
||||
Loading…
Reference in a new issue