From e97b65c8563bc5fb8c1d9f5aeb564731e95549df Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Fra=C3=9F?= Date: Mon, 26 Mar 2018 22:14:10 +0200 Subject: [PATCH] zwischenspeicherung --- quelldatein/aufbau/partie.ts | 2 +- quelldatein/aufbau/richtung.ts | 2 +- quelldatein/aufbau/welt.ts | 6 +- quelldatein/haupt.ts | 10 +- quelldatein/helfer/mathematik.ts | 40 ++-- quelldatein/helfer/uebersetzung.ts | 276 +++++++++++++------------ quelldatein/helfer/verschiedenes.ts | 55 ++--- quelldatein/manifestation/position.ts | 12 +- quelldatein/manifestation/svg/aktor.ts | 2 +- quelldatein/manifestation/svg/svg.ts | 2 +- werkzeuge/anpassen.sed | 3 + 11 files changed, 218 insertions(+), 192 deletions(-) create mode 100644 werkzeuge/anpassen.sed diff --git a/quelldatein/aufbau/partie.ts b/quelldatein/aufbau/partie.ts index 27ba7ec..84eaafd 100644 --- a/quelldatein/aufbau/partie.ts +++ b/quelldatein/aufbau/partie.ts @@ -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_vtm_helfer.liste_kopieren(mod_test.eingabe(test)); + let band : Array = mod_vtm.mod_helfer.liste_kopieren(mod_test.eingabe(test)); let stelle : mod_stelle.typ_stelle = mod_welt.erzeuger_finden(partie.welt); partie.figur = ( new klasse_schlicht diff --git a/quelldatein/aufbau/richtung.ts b/quelldatein/aufbau/richtung.ts index 27c2d81..41910fc 100644 --- a/quelldatein/aufbau/richtung.ts +++ b/quelldatein/aufbau/richtung.ts @@ -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); } diff --git a/quelldatein/aufbau/welt.ts b/quelldatein/aufbau/welt.ts index 564fa2b..dfbb050 100644 --- a/quelldatein/aufbau/welt.ts +++ b/quelldatein/aufbau/welt.ts @@ -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); } diff --git a/quelldatein/haupt.ts b/quelldatein/haupt.ts index 88f821b..2ef7f5a 100644 --- a/quelldatein/haupt.ts +++ b/quelldatein/haupt.ts @@ -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", { diff --git a/quelldatein/helfer/mathematik.ts b/quelldatein/helfer/mathematik.ts index fb688bb..f6843dd 100644 --- a/quelldatein/helfer/mathematik.ts +++ b/quelldatein/helfer/mathematik.ts @@ -16,25 +16,33 @@ * along with this program. If not, see . */ -module mod_vtm_helfer +module mod_vtm { - /** - * @author kcf - */ - export function div(x : int, y : int) : int + export module mod_helfer { - return Math.floor(x/y); + + export module mod_mathematik + { + + /** + * @author kcf + */ + export function div(x : int, y : int) : int + { + return Math.floor(x/y); + } + + + /** + * @author kcf + */ + export function mod(x : int, y : int) : int + { + return (x - (y * div(x, y))); + } + + } } - - - /** - * @author kcf - */ - export function mod(x : int, y : int) : int - { - return (x - (y * div(x, y))); - } - } diff --git a/quelldatein/helfer/uebersetzung.ts b/quelldatein/helfer/uebersetzung.ts index 04ba40b..df80c14 100644 --- a/quelldatein/helfer/uebersetzung.ts +++ b/quelldatein/helfer/uebersetzung.ts @@ -16,156 +16,166 @@ * along with this program. If not, see . */ -module mod_vtm_helfer +module mod_vtm { - /** - * @author kcf - */ - var _uebersetzung_sprachstapel : Array; - - - /** - * @author kcf - */ - export var _uebersetzung_daten : {[sprache : string] : {[schluessel : string] : string}} = {}; - - - /** - * @author kcf - */ - export function uebersetzung_einrichten(sprachen : Array) : void + export module mod_helfer { - _uebersetzung_sprachstapel = []; - sprachen.forEach - ( - sprache => + + export module mod_uebersetzung + { + + /** + * @author kcf + */ + var _sprachstapel : Array; + + + /** + * @author kcf + */ + var _daten : {[sprache : string] : {[schluessel : string] : string}} = {}; + + + /** + * @author kcf + */ + export function einrichten(sprachen : Array) : void { - let zeichenketten_roh_ : schnittstelle_fehlermonade = 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] = ((zeichenketten_roh[schluessel])); + let zeichenketten_roh_ : schnittstelle_fehlermonade = 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] = ((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 + */ + function lesen(sprache : string, schluessel : string) : schnittstelle_fehlermonade + { + if (sprache in _daten) { - let meldung : string = ("Zeichenketten für Sprache '" + sprache + "' konnten nicht geladen werden"); - console.warn(meldung); - } - } - ) - ; - } - - - /** - * @author kcf - */ - function uebersetzung_lesen(sprache : string, schluessel : string) : schnittstelle_fehlermonade - { - if (sprache in _uebersetzung_daten) - { - let satz : {[schluessel : string] : string} = _uebersetzung_daten[sprache]; - if (schluessel in satz) - { - return (new klasse_schlicht(satz[schluessel])); - } - else - { - let meldung : string = ("keine Zeichenketten für Schlüssel '" + schluessel + "' in Sprache '" + sprache + "'"); - console.warn(meldung); - return (new klasse_nichts()); - } - } - else - { - let meldung : string = ("keine Zeichenketten für Sprache '" + sprache + "'"); - console.warn(meldung); - return (new klasse_nichts()); - } - } - - - /** - * @author kcf - */ - export function uebersetzung_holen(schluessel : string, vars : {[name : string] : string} = {}) : string - { - let ergebnis : schnittstelle_fehlermonade = (new klasse_nichts()); - let gefunden : boolean = ( - _uebersetzung_sprachstapel - .some - ( - sprache => - { - let ergebnis_ : schnittstelle_fehlermonade = 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 - */ - 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(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()); } } else { - // nichts tun + let meldung : string = ("keine Zeichenketten für Sprache '" + sprache + "'"); + console.warn(meldung); + return (new klasse_nichts()); } } - ) - ; + + + /** + * @author kcf + */ + export function holen(schluessel : string, vars : {[name : string] : string} = {}) : string + { + let ergebnis : schnittstelle_fehlermonade = (new klasse_nichts()); + let gefunden : boolean = ( + _sprachstapel + .some + ( + sprache => + { + let ergebnis_ : schnittstelle_fehlermonade = 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 + */ + 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 + } + } + ) + ; + } + + } + } } diff --git a/quelldatein/helfer/verschiedenes.ts b/quelldatein/helfer/verschiedenes.ts index 49f4cc1..45ad0d1 100644 --- a/quelldatein/helfer/verschiedenes.ts +++ b/quelldatein/helfer/verschiedenes.ts @@ -16,34 +16,39 @@ * along with this program. If not, see . */ -module mod_vtm_helfer +module mod_vtm { - /** - * @author kcf - */ - export function sequenz(laenge : int) : Array + export module mod_helfer { - return ((laenge <= 0) ? [] : sequenz(laenge-1).concat([laenge-1])); - } - - - /** - * @author kcf - */ - export function liste_kopieren(liste : Array, element_kopieren : (element : type_element)=>type_element = (x => x)) : Array - { - let liste_ : Array = []; - liste.forEach - ( - element => - { - let element_ : type_element = element_kopieren(element); - liste_.push(element); - } - ) - ; - return liste_; + + /** + * @author kcf + */ + export function sequenz(laenge : int) : Array + { + return ((laenge <= 0) ? [] : sequenz(laenge-1).concat([laenge-1])); + } + + + /** + * @author kcf + */ + export function liste_kopieren(liste : Array, element_kopieren : (element : type_element)=>type_element = (x => x)) : Array + { + let liste_ : Array = []; + liste.forEach + ( + element => + { + let element_ : type_element = element_kopieren(element); + liste_.push(element); + } + ) + ; + return liste_; + } + } } diff --git a/quelldatein/manifestation/position.ts b/quelldatein/manifestation/position.ts index 0b044be..0b07edf 100644 --- a/quelldatein/manifestation/position.ts +++ b/quelldatein/manifestation/position.ts @@ -28,14 +28,14 @@ module mod_vtm /** * @author kcf */ - export type typ_position = mod_vtm_helfer.typ_vektor; + export type typ_position = mod_vtm.mod_helfer.mod_vektor.typ_vektor; /** * @author kcf */ - 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) ) ); } diff --git a/quelldatein/manifestation/svg/aktor.ts b/quelldatein/manifestation/svg/aktor.ts index 328ca2d..1b3b573 100644 --- a/quelldatein/manifestation/svg/aktor.ts +++ b/quelldatein/manifestation/svg/aktor.ts @@ -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" diff --git a/quelldatein/manifestation/svg/svg.ts b/quelldatein/manifestation/svg/svg.ts index a396931..7982c6c 100644 --- a/quelldatein/manifestation/svg/svg.ts +++ b/quelldatein/manifestation/svg/svg.ts @@ -42,7 +42,7 @@ module mod_vtm */ export function pfad ( - vertices : Array, + vertices : Array, schliessen : boolean = true, attribute : {[schlussel : string] : string} = {}, ) diff --git a/werkzeuge/anpassen.sed b/werkzeuge/anpassen.sed new file mode 100644 index 0000000..d0a50ed --- /dev/null +++ b/werkzeuge/anpassen.sed @@ -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 +