Christian Fraß authored on02/07/2017 19:51:20
Showing17 changed files
1 1
deleted file mode 100644
... ...
@@ -1,4 +0,0 @@
1
-#!/bin/bash
2
-
3
-js tools/koralle.js > makefile && make $@ ; rm makefile
4
-
5 0
new file mode 100644
... ...
@@ -0,0 +1,77 @@
1
+# Project "fs-draft"
2
+# This makefile was generated by Koralle 0.2.0
3
+
4
+~root:  ~root_~logging ~dependencies ~core
5
+.PHONY: ~root
6
+
7
+~root_~logging: 
8
+	@ echo "[log] <fs-draft> ~root"
9
+.PHONY: ~root_~logging
10
+
11
+~dependencies:  ~dependencies_~logging
12
+.PHONY: ~dependencies
13
+
14
+~dependencies_~logging: 
15
+	@ echo "[log] <fs-draft> 	~dependencies"
16
+.PHONY: ~dependencies_~logging
17
+
18
+~core:  ~core_~logging build
19
+.PHONY: ~core
20
+
21
+~core_~logging: 
22
+	@ echo "[log] <fs-draft> 	~core"
23
+.PHONY: ~core_~logging
24
+
25
+build:  build_~logging structure logic style media
26
+.PHONY: build
27
+
28
+build_~logging: 
29
+	@ echo "[log] <fs-draft> 		build"
30
+.PHONY: build_~logging
31
+
32
+structure:  structure_~logging
33
+	@ mkdir --parents build/
34
+	@ php source/content/draft.html.php > build/draft.html
35
+.PHONY: structure
36
+
37
+structure_~logging: 
38
+	@ echo "[log] <fs-draft> 			structure"
39
+.PHONY: structure_~logging
40
+
41
+logic:  logic_~logging build/draft.js
42
+.PHONY: logic
43
+
44
+logic_~logging: 
45
+	@ echo "[log] <fs-draft> 			logic"
46
+.PHONY: logic_~logging
47
+
48
+build/draft.js:  source/logic/client/tools.js source/logic/client/table.js source/logic/client/toc.js source/logic/client/main.js
49
+	@ mkdir --parents build/
50
+	@ cat source/logic/client/tools.js source/logic/client/table.js source/logic/client/toc.js source/logic/client/main.js > build/draft.js
51
+
52
+style:  style_~logging
53
+	@ mkdir --parents build/
54
+	@ cat source/style/functions.less source/style/theme.less source/style/common.less source/style/concrete.less > /tmp/_.less
55
+	@ lessc /tmp/_.less > build/draft.css
56
+.PHONY: style
57
+
58
+style_~logging: 
59
+	@ echo "[log] <fs-draft> 			style"
60
+.PHONY: style_~logging
61
+
62
+media:  media_~logging logo
63
+.PHONY: media
64
+
65
+media_~logging: 
66
+	@ echo "[log] <fs-draft> 			media"
67
+.PHONY: media_~logging
68
+
69
+logo:  logo_~logging
70
+	@ mkdir --parents build/
71
+	@ cp source/media/logo.svg build/logo.svg
72
+.PHONY: logo
73
+
74
+logo_~logging: 
75
+	@ echo "[log] <fs-draft> 				logo"
76
+.PHONY: logo_~logging
77
+
0 78
similarity index 100%
1 79
rename from readme.txt
2 80
rename to readme.md
... ...
@@ -29,7 +29,7 @@
29 29
 			$data = sql_cross($data, $data_adpositions["references"]);
30 30
 			$data = sql_select($data, function ($row) {return ($row["reference_id"] == $row["id"]);});
31 31
 			$data = sql_delete($data, ["reference_id", "id"]);
32
-			$data = sql_rename($data, "name", "kind_name");
32
+			$data = sql_rename($data, "name", "reference_name");
33 33
 		}
34 34
 	}
35 35
 	
... ...
@@ -39,7 +39,7 @@
39 39
 			new class_column("Language", "language_id"),
40 40
 			new class_column("Situation", "situation_name"),
41 41
 			new class_column("Type", "type_name"),
42
-			new class_column("Kind", "kind_name"),
42
+			new class_column("Reference", "reference_name"),
43 43
 			new class_column("Words", "words", function ($x) {return json_encode($x);}),
44 44
 		],
45 45
 		$data
... ...
@@ -140,5 +140,5 @@
140 140
 		]
141 141
 	)->generate();
142 142
  ?>
143
-<p><?php echo(format_correlation("type_sentence")(["flk" => ["Vi kön see de huses vindöger"], "eng" => ["We can see the houses windows."]])); ?></p></section>
143
+<p><?php echo(format_correlation("type_sentence")(["flk" => ["Vi kan see de huses vindöger"], "eng" => ["We can see the houses windows."]])); ?></p></section>
144 144
 
... ...
@@ -7,10 +7,11 @@
7 7
 	$entries =
8 8
 	[
9 9
 		["flk" => ["mute"], "eng" => ["to must"]],
10
-		["flk" => ["köne"], "eng" => ["to can"]],
10
+		["flk" => ["kane"], "eng" => ["to can"]],
11 11
 		["flk" => ["vile"], "eng" => ["to will"]],
12 12
 		["flk" => ["skale"], "eng" => ["to shall"]],
13 13
 		// ["flk" => ["darfe"], "eng" => ["to be allowed to"]],
14
+		["flk" => ["vöre"], "eng" => ["(to have the contingent readiness to do something)"]],
14 15
 	];
15 16
 	foreach ($entries as $entry)
16 17
 	{
... ...
@@ -20,6 +21,7 @@
20 21
 	}
21 22
  ?>
22 23
 	</ul>
23
-	<p>Modal verbs in contrast to normal verbs never take an extended infinitive as object, e.g. <?php echo(format_correlation("type_sentence")(["flk" => ["Vi hop tu finde vater har."], "eng" => ["We hope to find water here."]])); ?>, but <?php echo(format_correlation("type_sentence")(["flk" => ["Vi kön finde vater har."], "eng" => ["We can find water here."]])); ?></p>
24
+	<p>Modal verbs in contrast to normal verbs never take an extended infinitive as object, e.g. <?php echo(format_correlation("type_sentence")(["flk" => ["Vi hop tu finde vater har."], "eng" => ["We hope to find water here."]])); ?>, but <?php echo(format_correlation("type_sentence")(["flk" => ["Vi kan finde vater har."], "eng" => ["We can find water here."]])); ?></p>
25
+	<p>The special modal verb <?php echo(mark("vöre", ["type_word", "lang_fs"])); ?> is used for expressing the subjunctive.</p>
24 26
 </section>
25 27
 
... ...
@@ -55,6 +55,6 @@
55 55
 ?>
56 56
 	<p>Since these forms are built with auxiliary verbs, they can be combined straightforward to form complex expressions, e.g. <?php echo(format_correlation("type_sentence")(["flk" => ["Ek skal have skrivt."], "eng" => ["I will have written."]])); ?><!-- or <?php echo(format_correlation("type_sentence")(["flk" => ["Ek hav skalt skrive."], "eng" => ["I was going to write."]])); ?> -->.</p>
57 57
 	<p>The <span class="grammarterm">imperative</span> only exists in the present (with future meaning) for the 2nd person singular and plural. It is formed by using the bare stem of the verb, optionally followed by the personal pronoun (i.e. either <?php echo(mark("du", ["type_word", "lang_fs"])); ?> or <?php echo(mark("je", ["type_word", "lang_fs"])); ?>) in order to specify or emphasize the numerus. Examples: <?php echo(mark("skriv!", ["type_sentence", "lang_fs"])); ?>, <?php echo(mark("skriv, je!", ["type_sentence", "lang_fs"])); ?>.</p>
58
-	<span class="todo">conjunctive</span>
58
+	<p>There are two ways to the <span class="grammarterm">subjunctive</span>. One is to use the special modal verb <?php echo(mark("vöre", ["type_word", "lang_fs"])); ?> which can be understood as a wrapper for regular verbs. The other possibility is to use the adverbial particle <?php echo(mark("maglik", ["type_word", "lang_fs"])); ?>.</p>
59 59
 </section>
60 60
 
... ...
@@ -12,8 +12,8 @@
12 12
 		{"id": "x09", "name": "between"}
13 13
 	],
14 14
 	"types": [
15
-		{"id": "pos", "name": "Positive"},
16
-		{"id": "dir", "name": "Directive"}
15
+		{"id": "dir", "name": "Directive"},
16
+		{"id": "pos", "name": "Positive"}
17 17
 	],
18 18
 	"references": [
19 19
 		{"id": "abs", "name": "Absolute"},
... ...
@@ -21,56 +21,56 @@
21 21
 		{"id": "att", "name": "Attributive"}
22 22
 	],
23 23
 	"words": [
24
-		{"language_id": "flk", "situation_id": "x00", "type_id": "pos", "reference_id": "abs", "words": ["for"]},
25
-		{"language_id": "flk", "situation_id": "x00", "type_id": "pos", "reference_id": "rel", "words": ["for (lut)"]},
26
-		{"language_id": "flk", "situation_id": "x00", "type_id": "pos", "reference_id": "att", "words": ["for arend"]},
27
-		{"language_id": "flk", "situation_id": "x00", "type_id": "dir", "reference_id": "abs", "words": ["to for"]},
28
-		{"language_id": "flk", "situation_id": "x00", "type_id": "dir", "reference_id": "rel", "words": ["to for (lut)"]},
29
-		{"language_id": "flk", "situation_id": "x01", "type_id": "pos", "reference_id": "abs", "words": ["bak"]},
30
-		{"language_id": "flk", "situation_id": "x01", "type_id": "pos", "reference_id": "rel", "words": ["bak (lut)"]},
31
-		{"language_id": "flk", "situation_id": "x01", "type_id": "pos", "reference_id": "att", "words": ["bak arend"]},
32
-		{"language_id": "flk", "situation_id": "x01", "type_id": "dir", "reference_id": "abs", "words": ["to bak"]},
33
-		{"language_id": "flk", "situation_id": "x01", "type_id": "dir", "reference_id": "rel", "words": ["to bak (lut)"]},
34
-		{"language_id": "flk", "situation_id": "x02", "type_id": "pos", "reference_id": "abs", "words": ["uver"]},
35
-		{"language_id": "flk", "situation_id": "x02", "type_id": "pos", "reference_id": "rel", "words": ["uver (lut)"]},
36
-		{"language_id": "flk", "situation_id": "x02", "type_id": "pos", "reference_id": "att", "words": ["uver arend"]},
37
-		{"language_id": "flk", "situation_id": "x02", "type_id": "dir", "reference_id": "abs", "words": ["to uver"]},
38
-		{"language_id": "flk", "situation_id": "x02", "type_id": "dir", "reference_id": "rel", "words": ["to uver (lut)"]},
39
-		{"language_id": "flk", "situation_id": "x03", "type_id": "pos", "reference_id": "abs", "words": ["neder"]},
40
-		{"language_id": "flk", "situation_id": "x03", "type_id": "pos", "reference_id": "rel", "words": ["neder (lut)"]},
41
-		{"language_id": "flk", "situation_id": "x03", "type_id": "pos", "reference_id": "att", "words": ["neder arend"]},
42
-		{"language_id": "flk", "situation_id": "x03", "type_id": "dir", "reference_id": "abs", "words": ["to neder"]},
43
-		{"language_id": "flk", "situation_id": "x03", "type_id": "dir", "reference_id": "rel", "words": ["to neder (lut)"]},
44
-		{"language_id": "flk", "situation_id": "x04", "type_id": "pos", "reference_id": "abs", "words": ["vinst"]},
45
-		{"language_id": "flk", "situation_id": "x04", "type_id": "pos", "reference_id": "rel", "words": ["vinst (lut)"]},
46
-		{"language_id": "flk", "situation_id": "x04", "type_id": "pos", "reference_id": "att", "words": ["vinst arend"]},
47
-		{"language_id": "flk", "situation_id": "x04", "type_id": "dir", "reference_id": "abs", "words": ["to vinst"]},
48
-		{"language_id": "flk", "situation_id": "x04", "type_id": "dir", "reference_id": "rel", "words": ["to vinst (lut)"]},
49
-		{"language_id": "flk", "situation_id": "x05", "type_id": "pos", "reference_id": "abs", "words": ["hög"]},
50
-		{"language_id": "flk", "situation_id": "x05", "type_id": "pos", "reference_id": "rel", "words": ["hög (lut)"]},
51
-		{"language_id": "flk", "situation_id": "x05", "type_id": "pos", "reference_id": "att", "words": ["hög arend"]},
52
-		{"language_id": "flk", "situation_id": "x05", "type_id": "dir", "reference_id": "abs", "words": ["to hög"]},
53
-		{"language_id": "flk", "situation_id": "x05", "type_id": "dir", "reference_id": "rel", "words": ["to hög (lut)"]},
54
-		{"language_id": "flk", "situation_id": "x06", "type_id": "pos", "reference_id": "abs", "words": ["ine"]},
55
-		{"language_id": "flk", "situation_id": "x06", "type_id": "pos", "reference_id": "rel", "words": ["ine (lut)"]},
56
-		{"language_id": "flk", "situation_id": "x06", "type_id": "pos", "reference_id": "att", "words": ["ine arend"]},
24
+		{"language_id": "flk", "situation_id": "x00", "type_id": "pos", "reference_id": "abs", "words": ["foran"]},
25
+		{"language_id": "flk", "situation_id": "x00", "type_id": "pos", "reference_id": "rel", "words": ["foran (av)"]},
26
+		{"language_id": "flk", "situation_id": "x00", "type_id": "pos", "reference_id": "att", "words": ["forer"]},
27
+		{"language_id": "flk", "situation_id": "x00", "type_id": "dir", "reference_id": "abs", "words": ["for"]},
28
+		{"language_id": "flk", "situation_id": "x00", "type_id": "dir", "reference_id": "rel", "words": ["for (av)"]},
29
+		{"language_id": "flk", "situation_id": "x01", "type_id": "pos", "reference_id": "abs", "words": ["bakan"]},
30
+		{"language_id": "flk", "situation_id": "x01", "type_id": "pos", "reference_id": "rel", "words": ["bakan (av)"]},
31
+		{"language_id": "flk", "situation_id": "x01", "type_id": "pos", "reference_id": "att", "words": ["baker"]},
32
+		{"language_id": "flk", "situation_id": "x01", "type_id": "dir", "reference_id": "abs", "words": ["bak"]},
33
+		{"language_id": "flk", "situation_id": "x01", "type_id": "dir", "reference_id": "rel", "words": ["bak (av)"]},
34
+		{"language_id": "flk", "situation_id": "x02", "type_id": "pos", "reference_id": "abs", "words": ["uveran"]},
35
+		{"language_id": "flk", "situation_id": "x02", "type_id": "pos", "reference_id": "rel", "words": ["uveran (av)"]},
36
+		{"language_id": "flk", "situation_id": "x02", "type_id": "pos", "reference_id": "att", "words": ["uverer"]},
37
+		{"language_id": "flk", "situation_id": "x02", "type_id": "dir", "reference_id": "abs", "words": ["uver"]},
38
+		{"language_id": "flk", "situation_id": "x02", "type_id": "dir", "reference_id": "rel", "words": ["uver (av)"]},
39
+		{"language_id": "flk", "situation_id": "x03", "type_id": "pos", "reference_id": "abs", "words": ["nederan"]},
40
+		{"language_id": "flk", "situation_id": "x03", "type_id": "pos", "reference_id": "rel", "words": ["nederan (av)"]},
41
+		{"language_id": "flk", "situation_id": "x03", "type_id": "pos", "reference_id": "att", "words": ["nederer"]},
42
+		{"language_id": "flk", "situation_id": "x03", "type_id": "dir", "reference_id": "abs", "words": ["neder"]},
43
+		{"language_id": "flk", "situation_id": "x03", "type_id": "dir", "reference_id": "rel", "words": ["neder (av)"]},
44
+		{"language_id": "flk", "situation_id": "x04", "type_id": "pos", "reference_id": "abs", "words": ["vinstan"]},
45
+		{"language_id": "flk", "situation_id": "x04", "type_id": "pos", "reference_id": "rel", "words": ["vinstan (av)"]},
46
+		{"language_id": "flk", "situation_id": "x04", "type_id": "pos", "reference_id": "att", "words": ["vinster"]},
47
+		{"language_id": "flk", "situation_id": "x04", "type_id": "dir", "reference_id": "abs", "words": ["vinst"]},
48
+		{"language_id": "flk", "situation_id": "x04", "type_id": "dir", "reference_id": "rel", "words": ["vinst (av)"]},
49
+		{"language_id": "flk", "situation_id": "x05", "type_id": "pos", "reference_id": "abs", "words": ["hegan"]},
50
+		{"language_id": "flk", "situation_id": "x05", "type_id": "pos", "reference_id": "rel", "words": ["hegan (av)"]},
51
+		{"language_id": "flk", "situation_id": "x05", "type_id": "pos", "reference_id": "att", "words": ["heger"]},
52
+		{"language_id": "flk", "situation_id": "x05", "type_id": "dir", "reference_id": "abs", "words": ["heg"]},
53
+		{"language_id": "flk", "situation_id": "x05", "type_id": "dir", "reference_id": "rel", "words": ["heg (av)"]},
54
+		{"language_id": "flk", "situation_id": "x06", "type_id": "pos", "reference_id": "abs", "words": ["inan"]},
55
+		{"language_id": "flk", "situation_id": "x06", "type_id": "pos", "reference_id": "rel", "words": ["inan (av)"]},
56
+		{"language_id": "flk", "situation_id": "x06", "type_id": "pos", "reference_id": "att", "words": ["iner"]},
57 57
 		{"language_id": "flk", "situation_id": "x06", "type_id": "dir", "reference_id": "abs", "words": ["in"]},
58
-		{"language_id": "flk", "situation_id": "x06", "type_id": "dir", "reference_id": "rel", "words": ["in (lut)"]},
59
-		{"language_id": "flk", "situation_id": "x07", "type_id": "pos", "reference_id": "abs", "words": ["ute"]},
60
-		{"language_id": "flk", "situation_id": "x07", "type_id": "pos", "reference_id": "rel", "words": ["ute (lut)"]},
61
-		{"language_id": "flk", "situation_id": "x07", "type_id": "pos", "reference_id": "att", "words": ["ute arend"]},
58
+		{"language_id": "flk", "situation_id": "x06", "type_id": "dir", "reference_id": "rel", "words": ["in (av)"]},
59
+		{"language_id": "flk", "situation_id": "x07", "type_id": "pos", "reference_id": "abs", "words": ["utan"]},
60
+		{"language_id": "flk", "situation_id": "x07", "type_id": "pos", "reference_id": "rel", "words": ["utan (av)"]},
61
+		{"language_id": "flk", "situation_id": "x07", "type_id": "pos", "reference_id": "att", "words": ["uter"]},
62 62
 		{"language_id": "flk", "situation_id": "x07", "type_id": "dir", "reference_id": "abs", "words": ["ut"]},
63
-		{"language_id": "flk", "situation_id": "x07", "type_id": "dir", "reference_id": "rel", "words": ["ut (lut)"]},
64
-		{"language_id": "flk", "situation_id": "x08", "type_id": "pos", "reference_id": "abs", "words": ["upe"]},
65
-		{"language_id": "flk", "situation_id": "x08", "type_id": "pos", "reference_id": "rel", "words": ["upe (lut)"]},
66
-		{"language_id": "flk", "situation_id": "x08", "type_id": "pos", "reference_id": "att", "words": ["upe arend"]},
63
+		{"language_id": "flk", "situation_id": "x07", "type_id": "dir", "reference_id": "rel", "words": ["ut (av)"]},
64
+		{"language_id": "flk", "situation_id": "x08", "type_id": "pos", "reference_id": "abs", "words": ["upan"]},
65
+		{"language_id": "flk", "situation_id": "x08", "type_id": "pos", "reference_id": "rel", "words": ["upan (av)"]},
66
+		{"language_id": "flk", "situation_id": "x08", "type_id": "pos", "reference_id": "att", "words": ["uper"]},
67 67
 		{"language_id": "flk", "situation_id": "x08", "type_id": "dir", "reference_id": "abs", "words": ["up"]},
68
-		{"language_id": "flk", "situation_id": "x08", "type_id": "dir", "reference_id": "rel", "words": ["up (lut)"]},
69
-		{"language_id": "flk", "situation_id": "x09", "type_id": "pos", "reference_id": "abs", "words": ["mel"]},
70
-		{"language_id": "flk", "situation_id": "x09", "type_id": "pos", "reference_id": "rel", "words": ["mel (lut)"]},
71
-		{"language_id": "flk", "situation_id": "x09", "type_id": "pos", "reference_id": "att", "words": ["mel arend"]},
72
-		{"language_id": "flk", "situation_id": "x09", "type_id": "dir", "reference_id": "abs", "words": ["to mel"]},
73
-		{"language_id": "flk", "situation_id": "x09", "type_id": "dir", "reference_id": "rel", "words": ["to mel (lut)"]},
68
+		{"language_id": "flk", "situation_id": "x08", "type_id": "dir", "reference_id": "rel", "words": ["up (av)"]},
69
+		{"language_id": "flk", "situation_id": "x09", "type_id": "pos", "reference_id": "abs", "words": ["melan"]},
70
+		{"language_id": "flk", "situation_id": "x09", "type_id": "pos", "reference_id": "rel", "words": ["melan (av)"]},
71
+		{"language_id": "flk", "situation_id": "x09", "type_id": "pos", "reference_id": "att", "words": ["meler"]},
72
+		{"language_id": "flk", "situation_id": "x09", "type_id": "dir", "reference_id": "abs", "words": ["mel"]},
73
+		{"language_id": "flk", "situation_id": "x09", "type_id": "dir", "reference_id": "rel", "words": ["mel (av)"]},
74 74
 		{"language_id": "eng", "situation_id": "x00", "type_id": "pos", "reference_id": "abs", "words": ["in front"]},
75 75
 		{"language_id": "eng", "situation_id": "x00", "type_id": "pos", "reference_id": "rel", "words": ["in front of"]},
76 76
 		{"language_id": "eng", "situation_id": "x00", "type_id": "pos", "reference_id": "att", "words": ["fore", "front"]},
... ...
@@ -27,77 +27,77 @@
27 27
 		{"language_id": "flk", "domain_id": "con", "type_id": "def", "words": ["jen"]},
28 28
 		{"language_id": "flk", "domain_id": "con", "type_id": "den", "words": ["dis"]},
29 29
 		{"language_id": "flk", "domain_id": "con", "type_id": "uni", "words": ["al"]},
30
-		{"language_id": "flk", "domain_id": "con", "type_id": "und", "words": ["et"]},
31
-		{"language_id": "flk", "domain_id": "con", "type_id": "neg", "words": ["ni","nit et"]},
30
+		{"language_id": "flk", "domain_id": "con", "type_id": "und", "words": ["ed"]},
31
+		{"language_id": "flk", "domain_id": "con", "type_id": "neg", "words": ["ni","nit ed"]},
32 32
 		{"language_id": "flk", "domain_id": "thi", "type_id": "int", "words": ["vilk ding", "vat"]},
33 33
 		{"language_id": "flk", "domain_id": "thi", "type_id": "rel", "words": ["vilk ding", "vat"]},
34 34
 		{"language_id": "flk", "domain_id": "thi", "type_id": "def", "words": ["jen ding", "dat"]},
35 35
 		{"language_id": "flk", "domain_id": "thi", "type_id": "den", "words": ["dis ding"]},
36 36
 		{"language_id": "flk", "domain_id": "thi", "type_id": "uni", "words": ["al ding", "alvat"]},
37
-		{"language_id": "flk", "domain_id": "thi", "type_id": "und", "words": ["et ding", "etvat"]},
37
+		{"language_id": "flk", "domain_id": "thi", "type_id": "und", "words": ["ed ding", "edvat"]},
38 38
 		{"language_id": "flk", "domain_id": "thi", "type_id": "neg", "words": ["ni ding", "nivat"]},
39 39
 		{"language_id": "flk", "domain_id": "per", "type_id": "int", "words": ["vilk man", "ve"]},
40 40
 		{"language_id": "flk", "domain_id": "per", "type_id": "rel", "words": ["vilk man", "ve"]},
41 41
 		{"language_id": "flk", "domain_id": "per", "type_id": "def", "words": ["jen man"]},
42 42
 		{"language_id": "flk", "domain_id": "per", "type_id": "den", "words": ["dis man"]},
43 43
 		{"language_id": "flk", "domain_id": "per", "type_id": "uni", "words": ["al man", "alve"]},
44
-		{"language_id": "flk", "domain_id": "per", "type_id": "und", "words": ["et man", "etve"]},
44
+		{"language_id": "flk", "domain_id": "per", "type_id": "und", "words": ["ed man", "edve"]},
45 45
 		{"language_id": "flk", "domain_id": "per", "type_id": "neg", "words": ["ni man", "nive"]},
46 46
 		{"language_id": "flk", "domain_id": "pos", "type_id": "int", "words": ["av vilk man", "ves"]},
47 47
 		{"language_id": "flk", "domain_id": "pos", "type_id": "rel", "words": ["av vilk man", "ves"]},
48 48
 		{"language_id": "flk", "domain_id": "pos", "type_id": "def", "words": ["av jen man"]},
49 49
 		{"language_id": "flk", "domain_id": "pos", "type_id": "den", "words": ["av dis man"]},
50 50
 		{"language_id": "flk", "domain_id": "pos", "type_id": "uni", "words": ["av al man", "alves"]},
51
-		{"language_id": "flk", "domain_id": "pos", "type_id": "und", "words": ["av et man", "etves"]},
51
+		{"language_id": "flk", "domain_id": "pos", "type_id": "und", "words": ["av ed man", "edves"]},
52 52
 		{"language_id": "flk", "domain_id": "pos", "type_id": "neg", "words": ["av ni man", "nives"]},
53 53
 		{"language_id": "flk", "domain_id": "tim", "type_id": "int", "words": ["vilk tid", "van"]},
54 54
 		{"language_id": "flk", "domain_id": "tim", "type_id": "rel", "words": ["vilk tid", "van"]},
55 55
 		{"language_id": "flk", "domain_id": "tim", "type_id": "def", "words": ["jen tid", "dan"]},
56 56
 		{"language_id": "flk", "domain_id": "tim", "type_id": "den", "words": ["dis tid", "no"]},
57 57
 		{"language_id": "flk", "domain_id": "tim", "type_id": "uni", "words": ["al tid", "alvan"]},
58
-		{"language_id": "flk", "domain_id": "tim", "type_id": "und", "words": ["et tid", "etvan"]},
58
+		{"language_id": "flk", "domain_id": "tim", "type_id": "und", "words": ["ed tid", "edvan"]},
59 59
 		{"language_id": "flk", "domain_id": "tim", "type_id": "neg", "words": ["ni tid", "nivan"]},
60 60
 		{"language_id": "flk", "domain_id": "loc", "type_id": "int", "words": ["vilk sted", "var"]},
61 61
 		{"language_id": "flk", "domain_id": "loc", "type_id": "rel", "words": ["vilk sted", "var"]},
62 62
 		{"language_id": "flk", "domain_id": "loc", "type_id": "def", "words": ["jen sted", "dar"]},
63 63
 		{"language_id": "flk", "domain_id": "loc", "type_id": "den", "words": ["dis sted", "har"]},
64 64
 		{"language_id": "flk", "domain_id": "loc", "type_id": "uni", "words": ["al sted", "alvar"]},
65
-		{"language_id": "flk", "domain_id": "loc", "type_id": "und", "words": ["et sted", "etvar"]},
65
+		{"language_id": "flk", "domain_id": "loc", "type_id": "und", "words": ["ed sted", "edvar"]},
66 66
 		{"language_id": "flk", "domain_id": "loc", "type_id": "neg", "words": ["ni sted", "nivar"]},
67 67
 		{"language_id": "flk", "domain_id": "dir", "type_id": "int", "words": ["to vilk sted", "varto"]},
68 68
 		{"language_id": "flk", "domain_id": "dir", "type_id": "rel", "words": ["to vilk sted", "varto"]},
69 69
 		{"language_id": "flk", "domain_id": "dir", "type_id": "def", "words": ["to jen sted", "darto"]},
70 70
 		{"language_id": "flk", "domain_id": "dir", "type_id": "den", "words": ["to dis sted", "harto"]},
71 71
 		{"language_id": "flk", "domain_id": "dir", "type_id": "uni", "words": ["to al sted", "alto"]},
72
-		{"language_id": "flk", "domain_id": "dir", "type_id": "und", "words": ["to et sted", "etto"]},
72
+		{"language_id": "flk", "domain_id": "dir", "type_id": "und", "words": ["to ed sted", "edto"]},
73 73
 		{"language_id": "flk", "domain_id": "dir", "type_id": "neg", "words": ["to ni sted", "nito"]},
74 74
 		{"language_id": "flk", "domain_id": "cau", "type_id": "int", "words": ["fur vilk grund", "varfur"]},
75 75
 		{"language_id": "flk", "domain_id": "cau", "type_id": "rel", "words": ["fur vilk grund", "varfur"]},
76 76
 		{"language_id": "flk", "domain_id": "cau", "type_id": "def", "words": ["fur jen grund", "darfur"]},
77 77
 		{"language_id": "flk", "domain_id": "cau", "type_id": "den", "words": ["fur dis grund", "harfur"]},
78 78
 		{"language_id": "flk", "domain_id": "cau", "type_id": "uni", "words": ["fur al grund", "alfur"]},
79
-		{"language_id": "flk", "domain_id": "cau", "type_id": "und", "words": ["fur et grund", "etfur"]},
79
+		{"language_id": "flk", "domain_id": "cau", "type_id": "und", "words": ["fur ed grund", "edfur"]},
80 80
 		{"language_id": "flk", "domain_id": "cau", "type_id": "neg", "words": ["fur ni grund", "nifur"]},
81 81
 		{"language_id": "flk", "domain_id": "man", "type_id": "int", "words": ["vilk mot", "hur"]},
82 82
 		{"language_id": "flk", "domain_id": "man", "type_id": "rel", "words": ["vilk mot", "hur"]},
83 83
 		{"language_id": "flk", "domain_id": "man", "type_id": "def", "words": ["jen mot", "so"]},
84 84
 		{"language_id": "flk", "domain_id": "man", "type_id": "den", "words": ["dis mot", "so"]},
85 85
 		{"language_id": "flk", "domain_id": "man", "type_id": "uni", "words": ["al mot"]},
86
-		{"language_id": "flk", "domain_id": "man", "type_id": "und", "words": ["et mot"]},
86
+		{"language_id": "flk", "domain_id": "man", "type_id": "und", "words": ["ed mot"]},
87 87
 		{"language_id": "flk", "domain_id": "man", "type_id": "neg", "words": ["ni mot"]},
88 88
 		{"language_id": "flk", "domain_id": "typ", "type_id": "int", "words": ["vilk slag"]},
89 89
 		{"language_id": "flk", "domain_id": "typ", "type_id": "rel", "words": ["vilk slag"]},
90 90
 		{"language_id": "flk", "domain_id": "typ", "type_id": "def", "words": ["jen slag", "solk"]},
91 91
 		{"language_id": "flk", "domain_id": "typ", "type_id": "den", "words": ["dis slag"]},
92 92
 		{"language_id": "flk", "domain_id": "typ", "type_id": "uni", "words": ["al slag"]},
93
-		{"language_id": "flk", "domain_id": "typ", "type_id": "und", "words": ["et slag"]},
93
+		{"language_id": "flk", "domain_id": "typ", "type_id": "und", "words": ["ed slag"]},
94 94
 		{"language_id": "flk", "domain_id": "typ", "type_id": "neg", "words": ["ni slag"]},
95 95
 		{"language_id": "flk", "domain_id": "amo", "type_id": "int", "words": ["vilk mang"]},
96 96
 		{"language_id": "flk", "domain_id": "amo", "type_id": "rel", "words": ["vilk mang"]},
97 97
 		{"language_id": "flk", "domain_id": "amo", "type_id": "def", "words": ["jen mang"]},
98 98
 		{"language_id": "flk", "domain_id": "amo", "type_id": "den", "words": ["dis mang"]},
99 99
 		{"language_id": "flk", "domain_id": "amo", "type_id": "uni", "words": ["al mang"]},
100
-		{"language_id": "flk", "domain_id": "amo", "type_id": "und", "words": ["et mang"]},
100
+		{"language_id": "flk", "domain_id": "amo", "type_id": "und", "words": ["ed mang"]},
101 101
 		{"language_id": "flk", "domain_id": "amo", "type_id": "neg", "words": ["ni mang"]},
102 102
 		{"language_id": "eng", "domain_id": "con", "type_id": "int", "words": ["which"]},
103 103
 		{"language_id": "eng", "domain_id": "con", "type_id": "rel", "words": ["which"]},
... ...
@@ -2,13 +2,13 @@
2 2
 	"de_grot_diktator": {
3 3
 		"title": "De grot diktator",
4 4
 		"paragraphs": [
5
-			"Ek bid fur fargiving, dok ek vil nit are de verlds herskar — ek ar nit solk en man. Ek vil nit beherske odar neddrüke et man, insted ek vil helpe de maner alvan and alvar: De judisk, de hejdisk, de fargig, de vit, …. Vi al skal helpe en de ander fur at vi kön leve ine en beter verld. Vi vil nit hate odar farakte us. Dis verld hav plats fur al maner and ur erd ar so rik, at vi al kön spise nok. De levrid kön are so fri and skön; dok vi hav farlatet de veg.",
6
-			"Gridhed hav sükent de maners seler and hav fült de verld med hatrid; hit hav ledet us to elend and blutsketrid. Vi hav utvikelt raskhed, dok ur gester stan stil. Vi lat makiner verke fur us; ur vetrid hav makt us hokmudig and ur klughed hard and unfrendlik; vi denk altu mang and föl altu lit. Dok mer den makiner vi treng manlikhed; mer den klughed vi treng frendlikhed and gudhed. An dis egenheder, ur levrid ar frükridig and al ding ar lost.",
7
-			"Med de helprid av flügtüger and de radio vi ar narer en to de ander den et tid ruk. De manskap treng enhed and en alvar arend bruderlikhed fur tu bruke dis utfindinger gud. Selv no mang tused in der verld kön höre min stem, mang tusend fartvivelt verer, kviner and smal kinder — ofaringer av en sistem, vilk fang and kvel unskuldig maner. Ek rup to al, vilk kön hör mek no: Fartvivel nit! De elend skal farsvinde, van de gridhed farsvind and de biterhed av maner, vilk frük de manskaps forskritrid. De Maners hatrid skal farsvinde and diktarorer skal döe. Dan de kraft, vilk di hav takt fra de folk, skal kome bak to de folk. Selv ef mang blud ar sketet: Tu kempe fur de frihed ar en gud sak.",
8
-			"Kemparer: Kemp nit fur tiraner; maner, vilk farakt ju and mak ju to sklaver; vilk vertskat nit jer levrid, vilk seg to ju, vat je skal make, true and föle! Di skend ju, föd ju, behandel ju lik kanon-föding. Kemp nit fur dis fardervt maner — makin-maner med makin-hövder and makin-herter! Je ar nit makiner, je ar nit direr, je ar maner. Lat de manlikhed blive ine jer herter! Je skal nit hate; bar de unlivt hat, de unlivt and de fardervt.",
9
-			"Kemperar: Kemp nit fur de sklavskap! Kemp fur de frihed! Ine de 17. avsniding av de hajlig Lukas ar skrivt: ‚God ar ine al maner.‘ — nit bar ine en grup av maner, insted ine al maner, ine ju. Je, de folk, hav de kraft; de kraft fur tu bue vapener, dok ok de kraft fur tu sprede gladhed. Je, de folk, hav de kraft fur tu make dis levrid fri and skön, fur tu make dis levrid en vunderfült sak. Darfur: Ine de nam av folkherskrid: Lat us bruke dis kraft! Lat us verde en! Lat us kempe fur en nü verld, fur en beter verld, vilk giv to de maner magrid tu verke, vilk giv en eftertid to de jung and sikerhed to de eld. Ok de tiraner hav truent dis to us fur tu foe de vold, dok di hav lügt. Di mak nit sant dir luving, di vil ni tid. Tiraner frien bar dim selv, dok de folk skal blive sklaver.",
10
-			"Lat us no kempe fur tu upfüle dis luving. Lat us kempe fur tu make de verld fri, fur tu uvervinde landmarker, gridhed, hatrid and de untillatrid. Lat us kempe fur en verld med farstanrid, en verld, var vetridskap and forskritrid skal lede to al mans gladhed.",
11
-			"Kemparer: Ine de nam av folkherskrid: Lat us al verde en!"
5
+			"Ek bid fur fargiving, dok ek vil nit are de verlds herskar — ek ar nit solk en man. Ek vil nit beherske er neddrüke et man, insted ek vil helpe de maner alvan and alvar: De judisk, de hejdisk, de fargig, de vit, …. Vi al skal helpe en de ander fur at vi kan leve inan en beter verld. Vi vil nit hate er farakte us. Dis verld hav rum fur al maner and ur erd ar so rik, at vi al kan ete nok. De levrid kan are so fri and skön; dok vi hav farlatet de veg.",
6
+			"Gridhed hav sükent de maners seler and hav fült de verld med hatrid; hit hav ledet us to elend and bludskedrid. Vi hav utvikelt raskhed, dok ur gester sta stil. Vi lat makiner verke fur us; ur vetrid hav makt us hokmudig and ur klughed hard and unfrendlik; vi denk altu mang and föl altu lit. Dok mer den makiner vi treng manlikhed; mer den klughed vi treng frendlikhed and gudhed. An dis egenheder, ur levrid ar frükridig and al ding ar lost.",
7
+			"Med de helprid av flügtüger and de radio vi ar narer en to de ander den et tid bak. Fur at de manskap kan bruke dis utfindinger fur en gud sak, hit mut leve med enhed and bruderlikhed. Selv nu mang tused in der verld kan höre min stem, mang tusend fartvivelt verer, kviner and smal kinder — ofaringer av en sistem, vilk fang and kvel unskuldig maner. Ek rup to al, vilk kan höre mek nu: Fartvivel nit! De elend skal farsvinde, van de gridhed farsvind and de biterhed av maner, vilk frük de manskaps forskridrid. De Maners hatrid skal farsvinde and diktarorer skal döe. Dan de kraft, vilk di hav takt fra de folk, skal kome bak to de folk. Selv ef mang blud ar skedet: Tu fekte fur de frihed ar en gud sak.",
8
+			"Fektarer: Fekt nit fur tiraner; maner, vilk farakt ju and mak ju to sklaver; vilk vertskat nit jer levrid, vilk seg to ju, vat je skal make, true and föle! Di skend ju, föd ju, behandel ju lik kanon-föding. Fekt nit fur dis fardervt maner — makin-maner med makin-hövder and makin-herter! Je ar nit makiner, je ar nit direr, je ar maner. Lat de manlikhed blive inan jer herter! Je skal nit hate; bar de unlivt hat, de unlivt and de fardervt.",
9
+			"Fektarer: Fekt nit fur de sklavskap! Fekt fur de frihed! Inan de 17. avsniding av de hajlig Lukas ar skrivt: ‚God ar inan al maner.‘ — nit bar inan en grup ut maner, insted inan al maner, inan ju. Je, de folk, hav de kraft; de kraft fur tu bue vapener, dok ok de kraft fur tu sprede gladhed. Je, de folk, hav de kraft fur tu make dis levrid fri and skön, fur tu make dis levrid en vunderfült sak. Darfur: Inan de nam av folkherskrid: Lat us bruke dis kraft! Lat us verde en! Lat us fekte fur en nü verld, fur en beter verld, vilk giv to de maner de magrid tu verke, vilk giv en eftertid to de jung and sikerhed to de eld. Ok de tiraner hav truent dis to us fur tu foe de vold, dok di hav lügt. Di mak nit san dir luving, di vil ni tid. Tiraner frien bar dim selv, dok de folk skal blive sklaver.",
10
+			"Lat us nu fekte fur tu upfüle dis luving. Lat us fekte fur tu make de verld fri, fur tu uvervinde landmarker, gridhed, hatrid and de untillatrid. Lat us fekte fur en verld med farstarid, en verld, var vetridskap and forskridrid skal lede to al mans gladhed.",
11
+			"Fektarer: Inan de nam av folkherskrid: Lat us al verde en!"
12 12
 		]
13 13
 	}
14 14
 }
... ...
@@ -1,6 +1,6 @@
1 1
 [
2 2
 	{
3
-		"name": "Notid",
3
+		"name": "Nutid",
4 4
 		"name_en": "Present",
5 5
 		"scheme": "[mainverb:stem]",
6 6
 		"description": "For expressing an action in the present",
... ...
@@ -37,7 +37,7 @@
37 37
 		{"transition_id": "t01", "language_id": "swe", "phones": ["-ö-"], "examples": ["grön"]},
38 38
 		{"transition_id": "t01", "language_id": "nno", "phones": ["-ø-"], "examples": ["grøn"]},
39 39
 		{"transition_id": "t01", "language_id": "isl", "phones": ["-æ-"], "examples": ["grænn"]},
40
-		{"transition_id": "t01", "language_id": "flk", "phones": ["-ö-"], "examples": ["föl","grön"]},
40
+		{"transition_id": "t01", "language_id": "flk", "phones": ["-ö-"], "examples": ["grön","föl"]},
41 41
 		
42 42
 		{"transition_id": "t02", "language_id": "gem", "phones": ["-eu-"], "examples": ["deupaz","steuraz","leuþa","leuhtą","reukaną","teuhaną","fleuhaną","leuganą"]},
43 43
 		{"transition_id": "t02", "language_id": "eng", "phones": ["-ee-","-i-","-ie-"], "examples": ["deep","steer","leed","tee","flee","lie"]},
... ...
@@ -18,7 +18,7 @@ body
18 18
 	padding-right: 80px;
19 19
 	padding-top: 120px;
20 20
 	padding-bottom: 120px;
21
-	max-width: 1000px;
21
+	max-width: 62%;
22 22
 	margin: auto;
23 23
 }
24 24
 
25 25
new file mode 100755
... ...
@@ -0,0 +1,4 @@
1
+#!/usr/bin/env sh
2
+
3
+node tools/koralle.js -x
4
+
0 5
old mode 100644
1 6
new mode 100755
... ...
@@ -19,13 +19,31 @@
19 19
        
20 20
 */
21 21
 
22
-var __extends = (this && this.__extends) || function (d, b) {
23
-    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
24
-    function __() { this.constructor = d; }
25
-    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
26
-};
22
+var __extends = (this && this.__extends) || (function () {
23
+    var extendStatics = Object.setPrototypeOf ||
24
+        ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
25
+        function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
26
+    return function (d, b) {
27
+        extendStatics(d, b);
28
+        function __() { this.constructor = d; }
29
+        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
30
+    };
31
+})();
27 32
 // module lib_base {
28 33
 // }
34
+// Web
35
+/*
36
+declare class Window {
37
+    console : any;
38
+    navigator : any;
39
+    setTimeout : (function_ : (...params : Array<any>)=>void, delay : number, ...params : Array<any>)=>number;
40
+};
41
+declare var window : Window;
42
+declare class Document {
43
+};
44
+declare var document : Document;
45
+ */
46
+;
29 47
 var lib_base;
30 48
 (function (lib_base) {
31 49
     /**
... ...
@@ -36,17 +54,17 @@ var lib_base;
36 54
             {
37 55
                 "id": "web",
38 56
                 "name": "Web",
39
-                "predicate": function () { return (typeof (document) !== "undefined"); }
57
+                "predicate": function () { return (typeof (document) !== "undefined"); },
40 58
             },
41 59
             {
42 60
                 "id": "node",
43 61
                 "name": "Node.js",
44
-                "predicate": function () { return (typeof (process) !== "undefined"); }
62
+                "predicate": function () { return (typeof (process) !== "undefined"); },
45 63
             },
46 64
             {
47 65
                 "id": "rhino",
48 66
                 "name": "Rhino",
49
-                "predicate": function () { return (typeof (java) !== "undefined"); }
67
+                "predicate": function () { return (typeof (java) !== "undefined"); },
50 68
             },
51 69
         ];
52 70
         var id;
... ...
@@ -68,39 +86,168 @@ var lib_base;
68 86
     }
69 87
     lib_base.environment = environment;
70 88
 })(lib_base || (lib_base = {}));
71
-function hash(value) {
89
+/**
90
+ * @author fenris
91
+ */
92
+var instance_verbosity = 0;
93
+/**
94
+ * @author fenris
95
+ */
96
+function instance_collate(value1, value2) {
97
+    if (typeof (value1) === "object") {
98
+        if (value1 == null) {
99
+            return (value2 == null);
100
+        }
101
+        else {
102
+            if ("_collate" in value1) {
103
+                return value1["_collate"](value2);
104
+            }
105
+            else {
106
+                throw (new Error("[collate]" + " " + "object has no such method"));
107
+            }
108
+        }
109
+    }
110
+    else {
111
+        if (instance_verbosity >= 1) {
112
+            lib_log.warn("[collate]" + " " + "primitive value; using default implementation");
113
+        }
114
+        return (value1 === value2);
115
+    }
116
+}
117
+/**
118
+ * @author fenris
119
+ */
120
+function instance_compare(value1, value2) {
121
+    if (typeof (value1) === "object") {
122
+        if ("_compare" in value1) {
123
+            return value1["_compare"](value2);
124
+        }
125
+        else {
126
+            throw (new Error("[compare]" + " " + "object has no such method"));
127
+        }
128
+    }
129
+    else {
130
+        if (instance_verbosity >= 1) {
131
+            lib_log.warn("[compare]" + " " + "primitive value; using default implementation");
132
+        }
133
+        return (value1 <= value2);
134
+    }
135
+}
136
+/**
137
+ * @author fenris
138
+ */
139
+function instance_clone(value) {
72 140
     if (typeof (value) === "object") {
73
-        if ("hash" in value)
74
-            return value.hash();
75
-        else
76
-            throw (new Error("[hash]" + " " + "object has no hash-method"));
141
+        if ("_clone" in value) {
142
+            return value["_clone"]();
143
+        }
144
+        else {
145
+            throw (new Error("[clone]" + " " + "object has no such method"));
146
+        }
77 147
     }
78 148
     else {
79
-        return value.toString();
149
+        if (instance_verbosity >= 1) {
150
+            lib_log.warn("[clone]" + " " + "primitive value; using default implementation");
151
+        }
152
+        return value;
80 153
     }
81 154
 }
82
-function equals(value_x, value_y) {
83
-    if (typeof (value_x) === "object") {
84
-        if ("equals" in value_x)
85
-            return value_x.equals(value_y);
86
-        else
87
-            throw (new Error("[equals]" + " " + "object has no equals-method"));
155
+/**
156
+ * @desc the ability to generate a string out of the element, which identifies it to a high degree
157
+ * @author fenris
158
+ */
159
+function instance_hash(value) {
160
+    if (typeof (value) === "object") {
161
+        if ("_hash" in value) {
162
+            return value["_hash"]();
163
+        }
164
+        else {
165
+            throw (new Error("[hash]" + " " + "object has no such method"));
166
+        }
88 167
     }
89 168
     else {
90
-        return (value_x === value_y);
169
+        if (instance_verbosity >= 1) {
170
+            lib_log.warn("[hash]" + " " + "primitive value; using default implementation");
171
+        }
172
+        return String(value);
91 173
     }
92 174
 }
93
-function show(value) {
175
+/**
176
+ * @desc the ability to map the element to a textual representation (most likely not injective)
177
+ * @author fenris
178
+ */
179
+function instance_show(value) {
94 180
     if (typeof (value) === "object") {
95
-        if ("show" in value)
96
-            return value.show();
97
-        else
98
-            throw (new Error("[show]" + " " + "object has no show-method"));
181
+        if (value == null) {
182
+            return "NULL";
183
+        }
184
+        else {
185
+            if ("_show" in value) {
186
+                return value["_show"]();
187
+            }
188
+            else {
189
+                // throw (new Error("[show]" + " " + "object has no such method"));
190
+                return JSON.stringify(value);
191
+            }
192
+        }
99 193
     }
100 194
     else {
101
-        return value.toString();
195
+        if (instance_verbosity >= 1) {
196
+            lib_log.warn("[show]" + " " + "primitive value; using default implementation");
197
+        }
198
+        return String(value);
102 199
     }
103 200
 }
201
+/**
202
+ * @todo outsource to dedicated plankton-lib
203
+ */
204
+var lib_log;
205
+(function (lib_log) {
206
+    /**
207
+     * @author fenris
208
+     */
209
+    function log() {
210
+        var args = [];
211
+        for (var _i = 0; _i < arguments.length; _i++) {
212
+            args[_i] = arguments[_i];
213
+        }
214
+        /*window.*/ console.log(args);
215
+    }
216
+    lib_log.log = log;
217
+    /**
218
+     * @author fenris
219
+     */
220
+    function info() {
221
+        var args = [];
222
+        for (var _i = 0; _i < arguments.length; _i++) {
223
+            args[_i] = arguments[_i];
224
+        }
225
+        /*window.*/ console.info(args);
226
+    }
227
+    lib_log.info = info;
228
+    /**
229
+     * @author fenris
230
+     */
231
+    function warn() {
232
+        var args = [];
233
+        for (var _i = 0; _i < arguments.length; _i++) {
234
+            args[_i] = arguments[_i];
235
+        }
236
+        /*window.*/ console.warn(args);
237
+    }
238
+    lib_log.warn = warn;
239
+    /**
240
+     * @author fenris
241
+     */
242
+    function error() {
243
+        var args = [];
244
+        for (var _i = 0; _i < arguments.length; _i++) {
245
+            args[_i] = arguments[_i];
246
+        }
247
+        /*window.*/ console.error(args);
248
+    }
249
+    lib_log.error = error;
250
+})(lib_log || (lib_log = {}));
104 251
 /**
105 252
  * @author frac
106 253
  */
... ...
@@ -194,87 +341,116 @@ export interface interface_writeable<type_value> {
194 341
 }
195 342
  */
196 343
 /**
197
- * @author frac
344
+ * @author fenris
198 345
  */
199 346
 /*export*/ var class_maybe = (function () {
200 347
     function class_maybe() {
201 348
     }
202 349
     /**
203 350
      * @desc whether the wrapper is nothing
204
-     * @author frac
351
+     * @author fenris
205 352
      */
206 353
     class_maybe.prototype.is_nothing = function () {
207 354
         throw (new Error("not implemented: class_maybe.is_nothing"));
208 355
     };
209 356
     /**
210 357
      * @desc whether the wrapper is just
211
-     * @author frac
358
+     * @author fenris
212 359
      */
213 360
     class_maybe.prototype.is_just = function () {
214 361
         throw (new Error("not implemented: class_maybe.is_just"));
215 362
     };
216 363
     /**
217 364
      * @desc return the value, stored in the maybe-wrapper
218
-     * @author frac
365
+     * @author fenris
219 366
      */
220 367
     class_maybe.prototype.cull = function () {
221 368
         throw (new Error("not implemented: class_maybe.cull"));
222 369
     };
223 370
     /**
224
-     * @author frac
371
+     * @author fenris
372
+     */
373
+    class_maybe.prototype.toString = function () {
374
+        throw (new Error("not implemented: class_maybe.cull"));
375
+    };
376
+    /**
377
+     * @author fenris
225 378
      */
226 379
     class_maybe.prototype.distinguish = function (action_just, action_nothing) {
227 380
         if (action_nothing === void 0) { action_nothing = function () { }; }
228 381
         throw (new Error("not implemented: class_maybe.distinguish"));
229 382
     };
230 383
     /**
231
-     * @author frac
384
+     * @author fenris
232 385
      */
233 386
     class_maybe.prototype.propagate = function (action) {
234 387
         throw (new Error("not implemented: class_maybe.propagate"));
235 388
     };
389
+    /**
390
+     * @desc [implementation]
391
+     * @author fenris
392
+     */
393
+    class_maybe.prototype._show = function () {
394
+        return this.toString();
395
+    };
236 396
     return class_maybe;
237 397
 }());
238 398
 /**
239
- * @author frac
399
+ * @author fenris
240 400
  */
241 401
 /*export*/ var class_nothing = (function (_super) {
242 402
     __extends(class_nothing, _super);
243 403
     /**
244
-     * @author frac
404
+     * @author fenris
245 405
      */
246 406
     function class_nothing(reason) {
247 407
         if (reason === void 0) { reason = null; }
248
-        _super.call(this);
249
-        this.reason = reason;
408
+        var _this = _super.call(this) || this;
409
+        _this.reason = reason;
410
+        return _this;
250 411
     }
251 412
     /**
252
-     * @author frac
413
+     * @author fenris
253 414
      */
254 415
     class_nothing.prototype.is_nothing = function () {
255 416
         return true;
256 417
     };
257 418
     /**
258
-     * @author frac
419
+     * @author fenris
259 420
      */
260 421
     class_nothing.prototype.is_just = function () {
261 422
         return false;
262 423
     };
263 424
     /**
264
-     * @author frac
425
+     * @author fenris
265 426
      */
266 427
     class_nothing.prototype.cull = function () {
428
+        var message = "you shouldn't cull a nothing-value …";
429
+        lib_log.warn(message);
267 430
         return null;
268 431
     };
269 432
     /**
270
-     * @author frac
433
+     * @author fenris
434
+     */
435
+    class_nothing.prototype.toString = function () {
436
+        return "<\u00B7>";
437
+    };
438
+    /**
439
+     * @author fenris
440
+     */
441
+    class_nothing.prototype.reason_get = function () {
442
+        var content = ((this.reason == null) ? "·" : this.reason);
443
+        return "<- " + content + " ->";
444
+    };
445
+    /**
446
+     * @author fenris
271 447
      */
272 448
     class_nothing.prototype.distinguish = function (action_just, action_nothing) {
273 449
         if (action_nothing === void 0) { action_nothing = function () { }; }
274 450
         action_nothing(this.reason);
275 451
     };
276 452
     /**
277
-     * @author frac
453
+     * @author fenris
278 454
      */
279 455
     class_nothing.prototype.propagate = function (action) {
280 456
         return (new class_nothing(this.reason));
... ...
@@ -282,44 +458,52 @@ export interface interface_writeable<type_value> {
282 458
     return class_nothing;
283 459
 }(class_maybe));
284 460
 /**
285
- * @author frac
461
+ * @author fenris
286 462
  */
287 463
 /*export*/ var class_just = (function (_super) {
288 464
     __extends(class_just, _super);
289 465
     /**
290
-     * @author frac
466
+     * @author fenris
291 467
      */
292 468
     function class_just(value) {
293
-        _super.call(this);
294
-        this.value = value;
469
+        var _this = _super.call(this) || this;
470
+        _this.value = value;
471
+        return _this;
295 472
     }
296 473
     /**
297
-     * @author frac
474
+     * @author fenris
298 475
      */
299 476
     class_just.prototype.is_nothing = function () {
300 477
         return false;
301 478
     };
302 479
     /**
303
-     * @author frac
480
+     * @author fenris
304 481
      */
305 482
     class_just.prototype.is_just = function () {
306 483
         return true;
307 484
     };
308 485
     /**
309
-     * @author frac
486
+     * @author fenris
310 487
      */
311 488
     class_just.prototype.cull = function () {
312 489
         return this.value;
313 490
     };
314 491
     /**
315
-     * @author frac
492
+     * @author fenris
493
+     */
494
+    class_just.prototype.toString = function () {
495
+        var content = instance_show(this.value);
496
+        return "<+ " + content + " +>";
497
+    };
498
+    /**
499
+     * @author fenris
316 500
      */
317 501
     class_just.prototype.distinguish = function (action_just, action_nothing) {
318 502
         if (action_nothing === void 0) { action_nothing = function () { }; }
319 503
         action_just(this.value);
320 504
     };
321 505
     /**
322
-     * @author frac
506
+     * @author fenris
323 507
      */
324 508
     class_just.prototype.propagate = function (action) {
325 509
         return action(this.value);
... ...
@@ -336,9 +520,10 @@ var class_error = (function (_super) {
336 520
      */
337 521
     function class_error(message, suberrors) {
338 522
         if (suberrors === void 0) { suberrors = []; }
339
-        _super.call(this, message);
340
-        this.suberrors = suberrors;
341
-        this.mess = message;
523
+        var _this = _super.call(this, message) || this;
524
+        _this.suberrors = suberrors;
525
+        _this.mess = message;
526
+        return _this;
342 527
     }
343 528
     /**
344 529
      * @override
... ...
@@ -349,548 +534,100 @@ var class_error = (function (_super) {
349 534
     };
350 535
     return class_error;
351 536
 }(Error));
352
-// module lib_base {
353
-// import _instances = require("instances");
354
-// declare var hash;
355
-// declare var equals;
356
-/**
357
- * @author frac
358
- */
359
-/*export*/ var Pair = (function () {
360
-    function Pair(first, second) {
361
-        this.first = first;
362
-        this.second = second;
363
-    }
364
-    Pair.prototype.equals = function (pair) {
365
-        var first_equals;
366
-        var second_equals;
367
-        var exceptions = new Array();
368
-        try {
369
-            first_equals = equals(this.first, pair.first);
370
-        }
371
-        catch (exception) {
372
-            exceptions.push(exception);
373
-        }
374
-        try {
375
-            second_equals = equals(this.second, pair.second);
376
-        }
377
-        catch (exception) {
378
-            exceptions.push(exception);
379
-        }
380
-        if (exceptions.length == 0) {
381
-            return (first_equals && second_equals);
537
+///<reference path="../../base/build/logic-decl.d.ts"/>
538
+var lib_call;
539
+(function (lib_call) {
540
+    /**
541
+     * @desc this is kind of an ugly hack; the motivation is, that the JS-interpreter of many Gecko-based browsers
542
+     *    (e.g. Firefox) won't accept a larger number of stack-frames, which come up when using executor-chains often.
543
+     *    This can be circumvented by deferring inner calls, such that they are moved outside the own stack-frame. This
544
+     *    is possible due to the asynchronous nature of executors. However this does also significantly increase the
545
+     *    overall-time for a long executor-chain (or rather executor-tree) to finish. Therefore it is not recommended
546
+     *    to do this by default.
547
+     * @author frac
548
+     */
549
+    lib_call.default_deferred = ((lib_base.environment() == "web") && (window.navigator.userAgent.indexOf("Firefox") >= 0));
550
+    /**
551
+     * @author fenris
552
+     */
553
+    function schedule(function_, deferred = lib_call.default_deferred) {
554
+        if (!deferred) {
555
+            function_();
382 556
         }
383 557
         else {
384
-            throw (new Exception("Pair:equals:components", "Missing equality-implementation for components while trying to compute equality of pairs", exceptions));
385
-        }
386
-    };
387
-    Pair.prototype.hash = function () {
388
-        var first_hash;
389
-        var second_hash;
390
-        var exceptions = new Array();
391
-        try {
392
-            first_hash = hash(this.first);
393
-        }
394
-        catch (exception) {
395
-            exceptions.push(exception);
396
-        }
397
-        try {
398
-            second_hash = hash(this.second);
558
+            setTimeout(function_, 0);
399 559
         }
400
-        catch (exception) {
401
-            exceptions.push(exception);
560
+    }
561
+    lib_call.schedule = schedule;
562
+})(lib_call || (lib_call = {}));
563
+///<reference path="../../base/build/logic-decl.d.ts"/>
564
+var lib_call;
565
+(function (lib_call) {
566
+    /**
567
+     * @author frac
568
+     * @todo could possibly be replaced by Promise-system
569
+     */
570
+    class class_wait {
571
+    }
572
+    lib_call.class_wait = class_wait;
573
+    /**
574
+     * @author frac
575
+     * @todo could possibly be replaced by Promise-system
576
+     */
577
+    class class_wait_sequential extends class_wait {
578
+        /**
579
+         * @author frac
580
+         */
581
+        constructor(dependencies, action = function () { lib_log.log("all done"); }) {
582
+            super();
583
+            this.dependencies = dependencies;
584
+            this.action = action;
402 585
         }
403
-        if (exceptions.length == 0) {
404
-            return (first_hash + "_" + second_hash);
586
+        /**
587
+         * @author frac
588
+         */
589
+        run_(dependencies) {
590
+            if (dependencies.length > 0) {
591
+                dependencies[0](() => this.run_(dependencies.slice(1)));
592
+            }
593
+            else {
594
+                this.action();
595
+            }
405 596
         }
406
-        else {
407
-            throw (new Exception("Pair:hash:components", "Missing hash for components while trying to retrieve hash of pair", exceptions));
597
+        /**
598
+         * @author frac
599
+         */
600
+        run() {
601
+            this.run_(this.dependencies);
408 602
         }
409
-    };
410
-    Pair.prototype.toString = function () {
411
-        return ("(" + this.first.toString() + ", " + this.second.toString() + ")");
412
-    };
413
-    return Pair;
414
-}());
415
-/**
416
- * @author frac
417
- */
418
-/*export*/ var AbstractMap = (function () {
419
-    function AbstractMap() {
420
-        this.size = 0;
421 603
     }
422
-    AbstractMap.prototype.get = function (key) {
423
-        throw (new ExceptionAbstract("Map:get"));
424
-    };
425
-    AbstractMap.prototype.get_fallback = function (key, fallback) {
426
-        if (fallback === void 0) { fallback = null; }
427
-        try {
428
-            return this.get(key);
604
+    lib_call.class_wait_sequential = class_wait_sequential;
605
+    /**
606
+     * @author frac
607
+     * @todo could possibly be replaced by Promise-system
608
+     */
609
+    class class_wait_parallel extends class_wait {
610
+        /**
611
+         * @author frac
612
+         */
613
+        constructor(dependencies, action = function () { lib_log.log("all done"); }) {
614
+            super();
615
+            this.index = 0;
616
+            this.dependencies = {};
617
+            this.action = action;
618
+            dependencies.forEach(dependency => this.add_dependency(dependency));
429 619
         }
430
-        catch (exception) {
431
-            if (exception_is(exception, "Map:get:not_found"))
432
-                return fallback;
433
-            else
434
-                throw exception;
620
+        /**
621
+         * @author frac
622
+         */
623
+        add_dependency(dependency) {
624
+            this.dependencies["dependency_" + this.index.toString()] = dependency;
625
+            this.index += 1;
435 626
         }
436
-    };
437
-    AbstractMap.prototype.has = function (key) {
438
-        throw (new ExceptionAbstract("Map:has"));
439
-    };
440
-    AbstractMap.prototype.set = function (key, value) {
441
-        throw (new ExceptionAbstract("Map:set"));
442
-    };
443
-    AbstractMap.prototype.extend = function (map) {
444
-        (function (this_) {
445
-            map.forEach(function (value, key) {
446
-                this_.set(key, value);
447
-            });
448
-        })(this);
449
-    };
450
-    AbstractMap.prototype.delete = function (key) {
451
-        throw (new ExceptionAbstract("Map:delete"));
452
-    };
453
-    AbstractMap.prototype.clear = function () {
454
-        throw (new ExceptionAbstract("Map:clear"));
455
-    };
456
-    AbstractMap.prototype.forEach = function (action) {
457
-        throw (new ExceptionAbstract("Map:get"));
458
-    };
459
-    AbstractMap.prototype.pairs = function () {
460
-        var pairs = new Array();
461
-        this.forEach(function (value, key) {
462
-            pairs.push(new Pair(key, value));
463
-        });
464
-        return pairs;
465
-    };
466
-    AbstractMap.prototype.toString = function () {
467
-        return ("{" + this.pairs().map(function (pair) { return (pair.first.toString() + ": " + pair.second.toString()); }).join(", ") + "}");
468
-    };
469
-    return AbstractMap;
470
-}());
471
-/**
472
- * @author frac
473
- */
474
-/*export*/ var EqualityMap = (function (_super) {
475
-    __extends(EqualityMap, _super);
476
-    function EqualityMap() {
477
-        _super.call(this);
478
-        this.clear();
479
-    }
480
-    EqualityMap.prototype.get_index = function (key) {
481
-        var index = this.pairs_["findIndex"](function (pair) { return equals(pair.first, key); });
482
-        return ((index < 0) ? null : index);
483
-    };
484
-    EqualityMap.prototype.get_pair = function (key) {
485
-        var index = this.get_index(key);
486
-        return ((index == null) ? null : this.pairs_[index]);
487
-    };
488
-    EqualityMap.prototype.get = function (key) {
489
-        return this.get_pair(key).second;
490
-    };
491
-    EqualityMap.prototype.has = function (key) {
492
-        try {
493
-            this.get(key);
494
-            return true;
495
-        }
496
-        catch (exception) {
497
-            if (exception_is(exception, "Map:get:not_found"))
498
-                return false;
499
-            else
500
-                throw exception;
501
-        }
502
-    };
503
-    EqualityMap.prototype.set = function (key, value) {
504
-        var pair = this.get_pair(key);
505
-        if (pair != null) {
506
-            console.warn("overwriting value for the following key: ", key);
507
-            pair.second = value;
508
-        }
509
-        else {
510
-            this.pairs_.push(new Pair(key, value));
511
-            this.size += 1;
512
-        }
513
-        return this;
514
-    };
515
-    EqualityMap.prototype.delete = function (key) {
516
-        var index;
517
-        var present;
518
-        try {
519
-            index = this.get_index(key);
520
-            present = true;
521
-        }
522
-        catch (exception) {
523
-            if (exception_is(exception, "Map:get:not_found"))
524
-                present = false;
525
-            else
526
-                throw exception;
527
-        }
528
-        if (present) {
529
-            this.pairs_ = this.pairs_.splice(index, 1);
530
-            this.size -= 1;
531
-            return true;
532
-        }
533
-        else {
534
-            return false;
535
-        }
536
-    };
537
-    EqualityMap.prototype.clear = function () {
538
-        this.pairs_ = new Array();
539
-        this.size = 0;
540
-    };
541
-    EqualityMap.prototype.forEach = function (action) {
542
-        (function (this_) {
543
-            this_.pairs_.forEach(function (pair) {
544
-                action(pair.second, pair.first, this_);
545
-            });
546
-        })(this);
547
-    };
548
-    return EqualityMap;
549
-}(AbstractMap));
550
-/**
551
- * @author frac
552
- */
553
-/*export*/ var HashMap = (function (_super) {
554
-    __extends(HashMap, _super);
555
-    function HashMap() {
556
-        _super.call(this);
557
-        this.clear();
558
-    }
559
-    HashMap.prototype.get = function (key) {
560
-        var hashvalue = hash(key);
561
-        if (hashvalue in this.object)
562
-            return this.object[hashvalue];
563
-        else
564
-            throw (new Exception("Map:get:not_found", "no entry for the given key (hashvalue: '" + hashvalue + "')"));
565
-    };
566
-    HashMap.prototype.has = function (key) {
567
-        return (hash(key) in this.object);
568
-    };
569
-    HashMap.prototype.set = function (key, value) {
570
-        var hashvalue = hash(key);
571
-        if (hashvalue in this.object) {
572
-            console.warn("overwriting value for key with hashvalue '" + hashvalue + "'");
573
-            this.object[hashvalue] = value;
574
-        }
575
-        else {
576
-            this.keys_original.push(key);
577
-            this.object[hashvalue] = value;
578
-            this.size += 1;
579
-        }
580
-        return this;
581
-    };
582
-    HashMap.prototype.delete = function (key) {
583
-        var hashvalue = hash(key);
584
-        if (hashvalue in this.object) {
585
-            this.keys_original = this.keys_original.filter(function (key_) {
586
-                return (hash(key_) != hashvalue);
587
-            });
588
-            delete this.object[hashvalue];
589
-            this.size -= 1;
590
-            return true;
591
-        }
592
-        else {
593
-            return false;
594
-        }
595
-    };
596
-    HashMap.prototype.clear = function () {
597
-        this.keys_original = new Array();
598
-        this.object = {};
599
-        this.size = 0;
600
-    };
601
-    HashMap.prototype.forEach = function (action) {
602
-        (function (this_) {
603
-            this_.keys_original.forEach(function (key) {
604
-                var hashvalue = hash(key);
605
-                var value = this_.object[hashvalue];
606
-                action(value, key, this_);
607
-            });
608
-        })(this);
609
-    };
610
-    return HashMap;
611
-}(AbstractMap));
612
-/**
613
- * @author frac
614
- */
615
-/*exports*/ var SimpleMap = (function (_super) {
616
-    __extends(SimpleMap, _super);
617
-    function SimpleMap() {
618
-        _super.call(this);
619
-    }
620
-    return SimpleMap;
621
-}(HashMap));
622
-/**
623
- * @author frac
624
- */
625
-/*export*/ var Tree = (function () {
626
-    // constructors
627
-    function Tree(parent, value, children) {
628
-        if (parent === void 0) { parent = null; }
629
-        if (value === void 0) { value = null; }
630
-        if (children === void 0) { children = new Array(); }
631
-        this.parent = parent;
632
-        this.value = value;
633
-        this.children = children;
634
-        var this_ = this;
635
-        if (children != null)
636
-            this.children.forEach(function (tree) { tree.parent = this_; });
637
-    }
638
-    // accessors
639
-    Tree.prototype.value_get = function () {
640
-        return this.value;
641
-    };
642
-    Tree.prototype.map = function (transformator, parent) {
643
-        if (parent === void 0) { parent = null; }
644
-        var tree = new Tree(parent, transformator(this.value));
645
-        tree.children = this.children.map(function (tree_) { return tree_.map(transformator, tree); });
646
-        return tree;
647
-    };
648
-    /*
649
-    public children_iterate():void
650
-    {
651
-        this.children.forEach(function (tree:Tree<Value>) {yield tree;});
652
-    }
653
-    */
654
-    Tree.prototype.flatten = function (postorder) {
655
-        if (postorder === void 0) { postorder = false; }
656
-        var reduce = postorder ? 'reduceRight' : 'reduce';
657
-        return this.children[reduce](function (list, tree) { return list.concat(tree.flatten(postorder)); }, [this]);
658
-    };
659
-    Tree.prototype.traverse = function (postorder) {
660
-        if (postorder === void 0) { postorder = false; }
661
-        return this.flatten().map(function (tree) { return tree.value; });
662
-    };
663
-    Tree.prototype.graph = function (prefix) {
664
-        if (prefix === void 0) { prefix = "x"; }
665
-        var vertices = new Array();
666
-        var edges = new Array();
667
-        vertices.push(new Pair(prefix, this.value));
668
-        this.children.forEach(function (tree, index) {
669
-            var prefix_ = prefix + "_" + index.toString();
670
-            edges.push(new Pair(new Pair(prefix, prefix_), null));
671
-            var graph = tree.graph(prefix_);
672
-            vertices = vertices.concat(graph.get_vertices());
673
-            edges = edges.concat(graph.get_edges());
674
-        });
675
-        return new Graph(vertices, edges);
676
-    };
677
-    // mutators
678
-    Tree.prototype.value_set = function (value) {
679
-        this.value = value;
680
-    };
681
-    Tree.prototype.children_add = function (tree) {
682
-        this.children.push(tree);
683
-        tree.parent = this;
684
-    };
685
-    return Tree;
686
-}());
687
-/**
688
- * @author frac
689
- */
690
-/*export*/ var Graph = (function () {
691
-    function Graph(vertices, edges) {
692
-        // [ToDo] check consistency
693
-        this.vertices = vertices;
694
-        this.edges = edges;
695
-    }
696
-    Graph.prototype.get_vertices = function () {
697
-        return this.vertices;
698
-    };
699
-    Graph.prototype.get_edges = function () {
700
-        return this.edges;
701
-    };
702
-    Graph.prototype.graphviz = function (name) {
703
-        if (name === void 0) { name = "conversion"; }
704
-        var script = "";
705
-        script += ("digraph " + name + "\n");
706
-        script += ("{\n");
707
-        this.vertices.forEach(function (vertex) {
708
-            var line = "";
709
-            line += ("\t" + vertex.first);
710
-            var parameters = new HashMap();
711
-            parameters.set("shape", "circle");
712
-            if (vertex.first != null)
713
-                parameters.set("label", vertex.second.toString());
714
-            line += (" [" + parameters.pairs().map(function (pair) { return (pair.first + "='" + pair.second + "'"); }).join(",") + "]");
715
-            line += "\n";
716
-            script += line;
717
-        });
718
-        script += ("\t\n");
719
-        this.edges.forEach(function (edge) {
720
-            var line = "";
721
-            line += ("\t" + edge.first.first + " -> " + edge.first.second);
722
-            var parameters = new HashMap();
723
-            if (edge.second != null)
724
-                parameters.set("label", edge.second.toString());
725
-            line += (" [" + parameters.pairs().map(function (pair) { return (pair.first + "='" + pair.second + "'"); }).join(",") + "]");
726
-            line += "\n";
727
-            script += line;
728
-        });
729
-        script += ("}\n");
730
-        return script;
731
-    };
732
-    return Graph;
733
-}());
734
-/*export*/ function tree_test() {
735
-    var tree = new Tree(null, 3, [
736
-        new Tree(null, 1, [
737
-            new Tree(null, 0),
738
-            new Tree(null, 2),
739
-        ]),
740
-        new Tree(null, 5, [
741
-            new Tree(null, 4),
742
-            new Tree(null, 6),
743
-        ]),
744
-    ]);
745
-    return tree;
746
-}
747
-/*
748
-*/
749
-// }
750
-/**
751
- * @author frac
752
- */
753
-var class_set = (function () {
754
-    /**
755
-     * @author frac
756
-     */
757
-    function class_set(elements) {
758
-        var _this = this;
759
-        if (elements === void 0) { elements = []; }
760
-        this.elements = [];
761
-        elements.forEach(function (element) { return _this.add(element); });
762
-    }
763
-    /**
764
-     * @author frac
765
-     */
766
-    class_set.prototype.elements_get = function () {
767
-        return this.elements;
768
-    };
769
-    /**
770
-     * @author frac
771
-     */
772
-    class_set.prototype.add = function (element) {
773
-        if (this.elements.indexOf(element) < 0) {
774
-            this.elements.push(element);
775
-        }
776
-    };
777
-    /**
778
-     * @author frac
779
-     */
780
-    class_set.prototype.forEach = function (action) {
781
-        this.elements.forEach(action);
782
-    };
783
-    return class_set;
784
-}());
785
-var __extends = (this && this.__extends) || function (d, b) {
786
-    for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
787
-    function __() { this.constructor = d; }
788
-    d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
789
-};
790
-var lib_call;
791
-(function (lib_call) {
792
-    /**
793
-     * @desc this is kind of an ugly hack; the motivation is, that the JS-interpreter of many Gecko-based browsers
794
-     *    (e.g. Firefox) won't accept a larger number of stack-frames, which come up when using executor-chains often.
795
-     *    This can be circumvented by deferring inner calls, such that they are moved outside the own stack-frame. This
796
-     *    is possible due to the asynchronous nature of executors. However this does also significantly increase the
797
-     *    overall-time for a long executor-chain (or rather executor-tree) to finish. Therefore it is not recommended
798
-     *    to do this by default.
799
-     * @author frac
800
-     */
801
-    lib_call.default_deferred = ((typeof (navigator) === "undefined") ? false : (navigator.userAgent.indexOf("Firefox") >= 0));
802
-    /**
803
-     * @author fenris
804
-     */
805
-    function schedule(function_, deferred) {
806
-        if (deferred === void 0) { deferred = lib_call.default_deferred; }
807
-        if (!deferred) {
808
-            function_();
809
-        }
810
-        else {
811
-            setTimeout(function_, 0);
812
-        }
813
-    }
814
-    lib_call.schedule = schedule;
815
-})(lib_call || (lib_call = {}));
816
-///<reference path="../../base/build/logic.d.ts"/>
817
-var lib_call;
818
-(function (lib_call) {
819
-    /**
820
-     * @author frac
821
-     * @todo could possibly be replaced by Promise-system
822
-     */
823
-    var class_wait = (function () {
824
-        function class_wait() {
825
-        }
826
-        return class_wait;
827
-    }());
828
-    lib_call.class_wait = class_wait;
829
-    /**
830
-     * @author frac
831
-     * @todo could possibly be replaced by Promise-system
832
-     */
833
-    var class_wait_sequential = (function (_super) {
834
-        __extends(class_wait_sequential, _super);
835
-        /**
836
-         * @author frac
837
-         */
838
-        function class_wait_sequential(dependencies, action) {
839
-            if (action === void 0) { action = function () { console.log("all done"); }; }
840
-            _super.call(this);
841
-            this.dependencies = dependencies;
842
-            this.action = action;
843
-        }
844
-        /**
845
-         * @author frac
846
-         */
847
-        class_wait_sequential.prototype.run_ = function (dependencies) {
848
-            var _this = this;
849
-            if (dependencies.length > 0) {
850
-                dependencies[0](function () { return _this.run_(dependencies.slice(1)); });
851
-            }
852
-            else {
853
-                this.action();
854
-            }
855
-        };
856
-        /**
857
-         * @author frac
858
-         */
859
-        class_wait_sequential.prototype.run = function () {
860
-            this.run_(this.dependencies);
861
-        };
862
-        return class_wait_sequential;
863
-    }(class_wait));
864
-    lib_call.class_wait_sequential = class_wait_sequential;
865
-    /**
866
-     * @author frac
867
-     * @todo could possibly be replaced by Promise-system
868
-     */
869
-    var class_wait_parallel = (function (_super) {
870
-        __extends(class_wait_parallel, _super);
871
-        /**
872
-         * @author frac
873
-         */
874
-        function class_wait_parallel(dependencies, action) {
875
-            var _this = this;
876
-            if (action === void 0) { action = function () { console.log("all done"); }; }
877
-            _super.call(this);
878
-            this.index = 0;
879
-            this.dependencies = {};
880
-            this.action = action;
881
-            dependencies.forEach(function (dependency) { return _this.add_dependency(dependency); });
882
-        }
883
-        /**
884
-         * @author frac
885
-         */
886
-        class_wait_parallel.prototype.add_dependency = function (dependency) {
887
-            this.dependencies["dependency_" + this.index.toString()] = dependency;
888
-            this.index += 1;
889
-        };
890 627
         /**
891 628
          * @author frac
892 629
          */
893
-        class_wait_parallel.prototype.remove_dependency = function (id) {
630
+        remove_dependency(id) {
894 631
             if (!(id in this.dependencies)) {
895 632
                 throw (new Error("dependency does not exist"));
896 633
             }
... ...
@@ -900,37 +637,43 @@ var lib_call;
900 637
                     this.action();
901 638
                 }
902 639
             }
903
-        };
640
+        }
904 641
         /**
905 642
          * @author frac
906 643
          */
907
-        class_wait_parallel.prototype.run = function () {
908
-            var that = this;
644
+        run() {
645
+            let that = this;
909 646
             if (Object.keys(this.dependencies).length == 0) {
910 647
                 this.action();
911 648
             }
912 649
             else {
913 650
                 Object.keys(this.dependencies).forEach(function (id) {
914
-                    var dependency = that.dependencies[id];
651
+                    let dependency = that.dependencies[id];
915 652
                     dependency(function () {
916 653
                         that.remove_dependency(id);
917 654
                     });
918 655
                 });
919 656
             }
920
-        };
921
-        return class_wait_parallel;
922
-    }(class_wait));
657
+        }
658
+    }
923 659
     lib_call.class_wait_parallel = class_wait_parallel;
924 660
 })(lib_call || (lib_call = {}));
925
-///<reference path="../../base/build/logic.d.ts"/>
926 661
 var lib_call;
927 662
 (function (lib_call) {
663
+    /**
664
+     * @author fenris
665
+     */
666
+    function timeout(function_, delay, ...params) {
667
+        return (
668
+        /*window.*/ setTimeout.apply(
669
+        /*window.*/ setTimeout, [function_, delay].concat(params)));
670
+    }
671
+    lib_call.timeout = timeout;
928 672
     /**
929 673
      * @desc a definition for a value being "defined"
930 674
      * @author neuc
931 675
      */
932
-    function is_def(obj, null_is_valid) {
933
-        if (null_is_valid === void 0) { null_is_valid = false; }
676
+    function is_def(obj, null_is_valid = false) {
934 677
         return (!((typeof (obj) === "undefined") || (!null_is_valid && (obj === null))));
935 678
     }
936 679
     lib_call.is_def = is_def;
... ...
@@ -938,9 +681,7 @@ var lib_call;
938 681
      * @desc returns the value if set and, when a type is specified, if the type is corret, if not return default_value
939 682
      * @author neuc
940 683
      */
941
-    function def_val(value, default_value, type, null_is_valid) {
942
-        if (type === void 0) { type = null; }
943
-        if (null_is_valid === void 0) { null_is_valid = false; }
684
+    function def_val(value, default_value, type = null, null_is_valid = false) {
944 685
         if (is_def(value, null_is_valid) && (is_def(type) ? ((typeof value === type) || ((value === null) && null_is_valid)) : true)) {
945 686
             return value;
946 687
         }
... ...
@@ -952,21 +693,21 @@ var lib_call;
952 693
     ;
953 694
     /**
954 695
      * @desc just the empty function; useful for some callbacks etc.
955
-     * @author frac
696
+     * @author fenris
956 697
      */
957 698
     function nothing() {
958 699
     }
959 700
     lib_call.nothing = nothing;
960 701
     /**
961 702
      * @desc just the identity; useful for some callbacks etc.
962
-     * @author frac
703
+     * @author fenris
963 704
      */
964 705
     function id(x) {
965 706
         return x;
966 707
     }
967 708
     lib_call.id = id;
968 709
     /**
969
-     * @author frac
710
+     * @author fenris
970 711
      */
971 712
     function use(input, function_) {
972 713
         return function_(input);
... ...
@@ -974,36 +715,36 @@ var lib_call;
974 715
     lib_call.use = use;
975 716
     /**
976 717
      * @desc outputs
977
-     * @author frac
718
+     * @author fenris
978 719
      */
979
-    function output(x) {
980
-        console["_info"].apply(console, arguments);
720
+    function output(...args) {
721
+        lib_log.info.apply(lib_log, args);
981 722
     }
982 723
     lib_call.output = output;
983 724
     /**
984 725
      * @desc converts the "arguments"-map into an array
985 726
      * @param {Object} args
986
-     * @author frac
727
+     * @author fenris
987 728
      */
988 729
     function args2list(args) {
989
-        return Object.keys(args).map(function (key) { return args[key]; });
730
+        return Object.keys(args).map(key => args[key]);
990 731
     }
991 732
     lib_call.args2list = args2list;
992 733
     /**
993 734
      * @desc provides the call for an attribute of a class as a regular function
994 735
      * @param {string} name the name of the attribute
995 736
      * @return {*}
996
-     * @author frac
737
+     * @author fenris
997 738
      */
998 739
     function attribute(name) {
999
-        return (function (object) { return object[name]; });
740
+        return ((object) => object[name]);
1000 741
     }
1001 742
     lib_call.attribute = attribute;
1002 743
     /**
1003 744
      * @desc provides a method of a class as a regular function
1004 745
      * @param {string} name the name of the method
1005 746
      * @return {function}
1006
-     * @author frac
747
+     * @author fenris
1007 748
      */
1008 749
     function method(name) {
1009 750
         return (function (object) { return object[name].apply(object, args2list(arguments).slice(1)); });
... ...
@@ -1013,7 +754,7 @@ var lib_call;
1013 754
      * @desc composes two functions (i.e. returns a function that return the result of the successive execution of both input-functions)
1014 755
      * @param {function} function_f
1015 756
      * @param {function} function_g
1016
-     * @author frac
757
+     * @author fenris
1017 758
      */
1018 759
     function compose(function_f, function_g) {
1019 760
         return (function (x) {
... ...
@@ -1027,33 +768,33 @@ var lib_call;
1027 768
      * @param {function} f
1028 769
      * @param {int} n (don't set manually)
1029 770
      * @return {function} the currified version of the in put function
1030
-     * @author frac
771
+     * @author fenris
1031 772
      */
1032
-    function curryfy(f, n) {
1033
-        if (n === void 0) { n = f.length; }
773
+    function curryfy(f, n = f.length) {
1034 774
         switch (n) {
1035 775
             case 0: {
1036 776
                 throw (new Error("[curryfy] impossible"));
777
+                // break;
1037 778
             }
1038 779
             case 1: {
1039 780
                 return f;
781
+                // break;
1040 782
             }
1041 783
             default: {
1042 784
                 return (function (x) {
1043 785
                     return (curryfy(function () { return f.apply(f, [x].concat(args2list(arguments))); }, n - 1));
1044 786
                 });
787
+                // break;
1045 788
             }
1046 789
         }
1047 790
     }
1048 791
     lib_call.curryfy = curryfy;
1049 792
     /**
1050 793
      * @desc adapter for old syntax
1051
-     * @author frac
794
+     * @author fenris
1052 795
      */
1053
-    function wait(dependencies, action, parallel) {
1054
-        if (action === void 0) { action = function () { console.log("all done"); }; }
1055
-        if (parallel === void 0) { parallel = true; }
1056
-        var wait = (parallel ? (new lib_call.class_wait_parallel(dependencies, action)) : (new lib_call.class_wait_sequential(dependencies, action)));
796
+    function wait(dependencies, action = function () { lib_log.log("all done"); }, parallel = true) {
797
+        let wait = (parallel ? (new lib_call.class_wait_parallel(dependencies, action)) : (new lib_call.class_wait_sequential(dependencies, action)));
1057 798
         wait.run();
1058 799
     }
1059 800
     lib_call.wait = wait;
... ...
@@ -1066,16 +807,13 @@ var lib_call;
1066 807
      * @param {function} on_stateChange called before the next function is called
1067 808
      * @returns {function}
1068 809
      */
1069
-    function simple_process(_process, on_stateChange, on_progress) {
1070
-        if (on_stateChange === void 0) { on_stateChange = function (msg) { console.info("State changed " + msg); }; }
1071
-        if (on_progress === void 0) { on_progress = function (msg, pos, max) { console.info("Progress '" + msg + "' " + pos + "/" + max); }; }
810
+    function simple_process(_process, on_stateChange = function (msg) { lib_log.info("State changed " + msg); }, on_progress = function (msg, pos, max) { lib_log.info("Progress '" + msg + "' " + pos + "/" + max); }) {
1072 811
         var data_hashmap = {};
1073
-        var _orchestrate = function (data, pos) {
1074
-            if (pos === void 0) { pos = 0; }
812
+        var _orchestrate = function (data, pos = 0) {
1075 813
             if (is_def(data)) {
1076 814
                 // data_hashmap[pos] = object_merge_objects({}, data, ["parents", "parent", "children"]);
1077 815
                 data_hashmap[pos] = {};
1078
-                Object.keys(data).filter(function (key) { return (["parents", "parent", "children"].indexOf(key) < 0); }).forEach(function (key) { return (data_hashmap[pos][key] = data[key]); });
816
+                Object.keys(data).filter(key => (["parents", "parent", "children"].indexOf(key) < 0)).forEach(key => (data_hashmap[pos][key] = data[key]));
1079 817
             }
1080 818
             else {
1081 819
                 if (is_def(data_hashmap[pos]) && is_def(data_hashmap[pos].processed)) {
... ...
@@ -1094,79 +832,87 @@ var lib_call;
1094 832
                     on_stateChange(_process[pos].state);
1095 833
                 }
1096 834
                 return (_func(data, function (processed_data) {
1097
-                    setTimeout(_orchestrate({ "processed": processed_data }, pos + 1), 0);
835
+                    timeout(_orchestrate({ "processed": processed_data }, pos + 1), 0);
1098 836
                 }, on_progress));
1099 837
             }
1100 838
             else {
1101
-                console.error("o.O.");
839
+                lib_log.error("o.O.");
1102 840
             }
1103 841
         };
1104 842
         return _orchestrate;
1105 843
     }
1106 844
     lib_call.simple_process = simple_process;
1107 845
 })(lib_call || (lib_call = {}));
1108
-///<reference path="../../base/build/logic.d.ts"/>
846
+///<reference path="../../base/build/logic-decl.d.ts"/>
1109 847
 "use strict";
1110 848
 var lib_call;
1111 849
 (function (lib_call) {
1112 850
     /**
1113
-     * @author frac
851
+     * @author fenris
1114 852
      */
1115 853
     function executor_resolve(result) {
1116
-        return (function (resolve, reject) { return resolve(result); });
854
+        return ((resolve, reject) => resolve(result));
1117 855
     }
1118 856
     lib_call.executor_resolve = executor_resolve;
1119 857
     /**
1120
-     * @author frac
858
+     * @author fenris
1121 859
      */
1122 860
     function executor_reject(reason) {
1123
-        return (function (resolve, reject) { return reject(reason); });
861
+        return ((resolve, reject) => reject(reason));
1124 862
     }
1125 863
     lib_call.executor_reject = executor_reject;
1126 864
     /**
1127
-     * @author frac
865
+     * @author fenris
1128 866
      */
1129 867
     function executor_transform(executor, transform_result, transform_reason) {
1130
-        return (function (resolve, reject) {
1131
-            executor(function (result) { return resolve(transform_result(result)); }, function (reason) { return reject(transform_reason(reason)); });
868
+        return ((resolve, reject) => {
869
+            executor(result => resolve(transform_result(result)), reason => reject(transform_reason(reason)));
1132 870
         });
1133 871
     }
1134 872
     lib_call.executor_transform = executor_transform;
1135 873
     /**
1136
-     * @author frac
874
+     * @author fenris
1137 875
      */
1138
-    function executor_transform_default(executor, transform_result, wrap_string) {
1139
-        if (wrap_string === void 0) { wrap_string = null; }
1140
-        var transform_reason = (function (error) { return ((wrap_string == null) ? error : new class_error(wrap_string, [error])); });
876
+    function executor_transform_default(executor, transform_result, wrap_string = null) {
877
+        let transform_reason = (error => ((wrap_string == null) ? error : new class_error(wrap_string, [error])));
1141 878
         return (executor_transform(executor, transform_result, transform_reason));
1142 879
     }
1143 880
     lib_call.executor_transform_default = executor_transform_default;
1144 881
     /**
1145
-     * @author frac
882
+     * @author fenris
1146 883
      */
1147
-    function executor_compose_sequential(first, second, deferred) {
1148
-        if (deferred === void 0) { deferred = undefined; }
1149
-        return (function (resolve, reject) {
1150
-            first(function (result) {
1151
-                lib_call.schedule(function () { return second(result)(resolve, reject); }, deferred);
1152
-            }, function (reason) {
884
+    function executor_compose_sequential(first, second, deferred = undefined) {
885
+        return ((resolve, reject) => {
886
+            first(result => {
887
+                lib_call.schedule(() => second(result)(resolve, reject), deferred);
888
+            }, reason => {
1153 889
                 reject(reason);
1154 890
             });
1155 891
         });
1156 892
     }
1157 893
     lib_call.executor_compose_sequential = executor_compose_sequential;
1158 894
     /**
1159
-     * @author frac
895
+     * @author fenris
1160 896
      */
1161
-    function executor_chain(state, executors, deferred) {
1162
-        if (deferred === void 0) { deferred = lib_call.default_deferred; }
1163
-        return (function (resolve, reject) {
897
+    function executor_chain(state, executors, deferred = lib_call.default_deferred) {
898
+        return ((resolve, reject) => {
1164 899
             if (executors.length == 0) {
1165 900
                 return resolve(state);
1166 901
             }
1167 902
             else {
1168
-                return executors[0](state)(function (result) {
1169
-                    lib_call.schedule(function () { return executor_chain(result, executors.slice(1))(resolve, reject); });
903
+                return executors[0](state)(result => {
904
+                    /*
905
+                    schedule(
906
+                        () => executor_chain(result, executors.slice(1))(resolve, reject)
907
+                    );
908
+                     */
909
+                    /*
910
+                    setTimeout(
911
+                        () => executor_chain(result, executors.slice(1))(resolve, reject),
912
+                        0
913
+                    );
914
+                     */
915
+                    executor_chain(result, executors.slice(1))(resolve, reject);
1170 916
                 }, reject);
1171 917
             }
1172 918
         });
... ...
@@ -1201,7 +947,7 @@ var lib_call;
1201 947
     }
1202 948
     lib_call.executor_chain = executor_chain;
1203 949
     /**
1204
-     * @author frac
950
+     * @author fenris
1205 951
      */
1206 952
     function executor_first(executors) {
1207 953
         /*
... ...
@@ -1223,50 +969,50 @@ var lib_call;
1223 969
             }
1224 970
         );
1225 971
          */
1226
-        return (function (resolve, reject) {
1227
-            executor_chain([], executors.map(function (executor) { return function (reasons) { return function (resolve_, reject_) {
1228
-                executor(function (result) { return reject_(result); }, function (reason) { return resolve_(reasons.concat([reason])); });
1229
-            }; }; }))(function (errors) { return reject(errors); }, function (result) { return resolve(result); });
972
+        return ((resolve, reject) => {
973
+            executor_chain([], executors.map(executor => reasons => (resolve_, reject_) => {
974
+                executor(result => reject_(result), reason => resolve_(reasons.concat([reason])));
975
+            }))(errors => reject(errors), result => resolve(result));
1230 976
         });
1231 977
     }
1232 978
     lib_call.executor_first = executor_first;
1233 979
     /**
1234
-     * @author frac
980
+     * @author fenris
1235 981
      */
1236 982
     function executor_condense(executors) {
1237
-        return (executor_chain([], executors.map(function (executor) { return function (result) { return function (resolve, reject) {
1238
-            executor(function (element) { return resolve(result.concat([element])); }, reject);
1239
-        }; }; })));
983
+        return (executor_chain([], executors.map(executor => result => (resolve, reject) => {
984
+            executor(element => resolve(result.concat([element])), reject);
985
+        })));
1240 986
     }
1241 987
     lib_call.executor_condense = executor_condense;
1242 988
     /**
1243
-     * @author frac
989
+     * @author fenris
1244 990
      * @deprecated use condense
1245 991
      */
1246 992
     function executor_filter(executors, predicate) {
1247
-        return (executor_chain([], executors.map(function (executor) { return function (result) { return function (resolve, reject) {
1248
-            executor(function (element) { return resolve(predicate(element) ? result.concat([element]) : result); }, reject);
1249
-        }; }; })));
993
+        return (executor_chain([], executors.map(executor => result => (resolve, reject) => {
994
+            executor(element => resolve(predicate(element) ? result.concat([element]) : result), reject);
995
+        })));
1250 996
     }
1251 997
     lib_call.executor_filter = executor_filter;
1252 998
     /**
1253
-     * @author frac
999
+     * @author fenris
1254 1000
      * @deprecated use condense
1255 1001
      */
1256 1002
     function executor_map(executors, transformator) {
1257
-        return (executor_chain([], executors.map(function (executor) { return function (result) { return function (resolve, reject) {
1258
-            executor(function (element1) { return resolve(result.concat([transformator(element1)])); }, reject);
1259
-        }; }; })));
1003
+        return (executor_chain([], executors.map(executor => result => (resolve, reject) => {
1004
+            executor(element1 => resolve(result.concat([transformator(element1)])), reject);
1005
+        })));
1260 1006
     }
1261 1007
     lib_call.executor_map = executor_map;
1262 1008
     /**
1263
-     * @author frac
1009
+     * @author fenris
1264 1010
      * @deprecated use condense
1265 1011
      */
1266 1012
     function executor_reduce(executors, initial, accumulator) {
1267
-        return (executor_chain(initial, executors.map(function (executor) { return function (result) { return function (resolve, reject) {
1268
-            executor(function (element) { return resolve(accumulator(result, element)); }, reject);
1269
-        }; }; })));
1013
+        return (executor_chain(initial, executors.map(executor => result => (resolve, reject) => {
1014
+            executor(element => resolve(accumulator(result, element)), reject);
1015
+        })));
1270 1016
     }
1271 1017
     lib_call.executor_reduce = executor_reduce;
1272 1018
 })(lib_call || (lib_call = {}));
... ...
@@ -1301,66 +1047,66 @@ var lib_call;
1301 1047
      * @author fenris
1302 1048
      */
1303 1049
     function knot_resolver(output) {
1304
-        return (function (input) { return function (resolve, reject) { return resolve(output); }; });
1050
+        return (input => (resolve, reject) => resolve(output));
1305 1051
     }
1306 1052
     lib_call.knot_resolver = knot_resolver;
1307 1053
     /**
1308 1054
      * @author fenris
1309 1055
      */
1310 1056
     function knot_id() {
1311
-        return (function (input) { return function (resolve, reject) { return resolve(input); }; });
1057
+        return (input => (resolve, reject) => resolve(input));
1312 1058
     }
1313 1059
     lib_call.knot_id = knot_id;
1314 1060