Browse code

advanced

bfadmin-master authored on25/04/2016 00:47:49
Showing25 changed files
... ...
@@ -77,6 +77,8 @@ def main():
77 77
 		os.path.join(dirs["source"],"data","personal_pronouns.json"),
78 78
 		os.path.join(dirs["source"],"data","word_functions.json"),
79 79
 		os.path.join(dirs["source"],"data","timeforms.json"),
80
+		os.path.join(dirs["source"],"data","adpositions.json"),
81
+		os.path.join(dirs["source"],"data","correlatives.json"),
80 82
 	]
81 83
 	
82 84
 	parts_logic = [
... ...
@@ -93,17 +95,27 @@ def main():
93 95
 		os.path.join(dirs["source"],"structure","preface.html.php"),
94 96
 		os.path.join(dirs["source"],"structure","key_parameters.html.php"),
95 97
 		os.path.join(dirs["source"],"structure","toc.html.php"),
96
-		os.path.join(dirs["source"],"structure","grammar.html.php"),
98
+		os.path.join(dirs["source"],"structure","basics.html.php"),
97 99
 		os.path.join(dirs["source"],"structure","phonology_and_orthography.html.php"),
98
-		os.path.join(dirs["source"],"structure","pronouns.html.php"),
100
+		os.path.join(dirs["source"],"structure","grammar.html.php"),
99 101
 		os.path.join(dirs["source"],"structure","personal_pronouns.html.php"),
100 102
 		os.path.join(dirs["source"],"structure","correlatives.html.php"),
101 103
 		os.path.join(dirs["source"],"structure","conjugation.html.php"),
102 104
 		os.path.join(dirs["source"],"structure","declension.html.php"),
103 105
 		os.path.join(dirs["source"],"structure","attributes.html.php"),
104 106
 		os.path.join(dirs["source"],"structure","sentence_structure.html.php"),
105
-		os.path.join(dirs["source"],"structure","word_functions.html.php"),
106 107
 		os.path.join(dirs["source"],"structure","vocabulary.html.php"),
108
+		os.path.join(dirs["source"],"structure","principles.html.php"),
109
+		os.path.join(dirs["source"],"structure","word_functions.html.php"),
110
+		os.path.join(dirs["source"],"structure","adpositions.html.php"),
111
+		os.path.join(dirs["source"],"structure","pronouns.html.php"),
112
+		os.path.join(dirs["source"],"structure","dictionary.html.php"),
113
+	]
114
+	
115
+	parts_style = [
116
+		os.path.join(dirs["source"],"style","theme.less"),
117
+		os.path.join(dirs["source"],"style","common.less"),
118
+		os.path.join(dirs["source"],"style","concrete.less"),
107 119
 	]
108 120
 	
109 121
 	rules = []
... ...
@@ -220,7 +232,7 @@ def main():
220 232
 	rules.append(
221 233
 		class_rule(
222 234
 			os.path.join(dirs["build"],"draft.css"),
223
-			[os.path.join(dirs["source"],"style","common.less"), os.path.join(dirs["source"],"style","concrete.less")],
235
+			parts_style,
224 236
 			[
225 237
 				class_command_log({
226 238
 					"message": "compiling style ..."
... ...
@@ -229,7 +241,7 @@ def main():
229 241
 					"path": os.path.join(dirs["temp"]),
230 242
 				}),
231 243
 				class_command_file_concat({
232
-					"paths-from": [os.path.join(dirs["source"],"style","common.less"), os.path.join(dirs["source"],"style","concrete.less")],
244
+					"paths-from": parts_style,
233 245
 					"path-to": os.path.join(dirs["temp"],"draft.less"),
234 246
 				}),
235 247
 				class_command_directory_create({
... ...
@@ -9,7 +9,7 @@ clear: clean
9 9
 	@ rm --recursive --force build
10 10
 .PHONY: clear
11 11
 
12
-build/draft.html: source/data/phonology_and_orthography.json source/data/personal_pronouns.json source/data/word_functions.json source/data/timeforms.json source/logic/server/misc.php source/logic/server/data.php source/logic/server/settings.php source/logic/server/table.php source/structure/draft.html.php source/structure/meta.html.php source/structure/introduction.html.php source/structure/preface.html.php source/structure/key_parameters.html.php source/structure/toc.html.php source/structure/grammar.html.php source/structure/phonology_and_orthography.html.php source/structure/pronouns.html.php source/structure/personal_pronouns.html.php source/structure/correlatives.html.php source/structure/conjugation.html.php source/structure/declension.html.php source/structure/attributes.html.php source/structure/sentence_structure.html.php source/structure/word_functions.html.php source/structure/vocabulary.html.php
12
+build/draft.html: source/data/phonology_and_orthography.json source/data/personal_pronouns.json source/data/word_functions.json source/data/timeforms.json source/data/adpositions.json source/data/correlatives.json source/logic/server/misc.php source/logic/server/data.php source/logic/server/settings.php source/logic/server/table.php source/structure/draft.html.php source/structure/meta.html.php source/structure/introduction.html.php source/structure/preface.html.php source/structure/key_parameters.html.php source/structure/toc.html.php source/structure/basics.html.php source/structure/phonology_and_orthography.html.php source/structure/grammar.html.php source/structure/personal_pronouns.html.php source/structure/correlatives.html.php source/structure/conjugation.html.php source/structure/declension.html.php source/structure/attributes.html.php source/structure/sentence_structure.html.php source/structure/vocabulary.html.php source/structure/principles.html.php source/structure/word_functions.html.php source/structure/adpositions.html.php source/structure/pronouns.html.php source/structure/dictionary.html.php
13 13
 	@ echo -e '-- compiling document ...'
14 14
 	@ mkdir --parents build
15 15
 	@ php source/structure/draft.html.php > build/draft.html
... ...
@@ -29,10 +29,10 @@ build/favicon.png: source/media/folksprak_16x16.png
29 29
 	@ mkdir --parents build
30 30
 	@ cp --recursive source/media/folksprak_16x16.png build/favicon.png
31 31
 
32
-build/draft.css: source/style/common.less source/style/concrete.less
32
+build/draft.css: source/style/theme.less source/style/common.less source/style/concrete.less
33 33
 	@ echo -e '-- compiling style ...'
34 34
 	@ mkdir --parents temp
35
-	@ cat source/style/common.less source/style/concrete.less > temp/draft.less
35
+	@ cat source/style/theme.less source/style/common.less source/style/concrete.less > temp/draft.less
36 36
 	@ mkdir --parents build
37 37
 	@ lessc temp/draft.less > build/draft.css
38 38
 
39 39
new file mode 100644
... ...
@@ -0,0 +1,233 @@
1
+[
2
+	{
3
+		"type": "x0",
4
+		"positive_absolute": {
5
+			"fs": ["for"],
6
+			"en": ["in front"]
7
+		},
8
+		"positive_relative": {
9
+			"fs": ["for (lut)"],
10
+			"en": ["in front of"]
11
+		},
12
+		"positive_attributive": {
13
+			"fs": ["for arend"],
14
+			"en": ["fore","front"]
15
+		},
16
+		"directive_absolute": {
17
+			"fs": ["to for"],
18
+			"en": ["forward"]
19
+		},
20
+		"directive_relative": {
21
+			"fs": ["to for (lut)"],
22
+			"en": ["in front of"]
23
+		}
24
+	},
25
+	{
26
+		"type": "x1",
27
+		"positive_absolute": {
28
+			"fs": ["ruk"],
29
+			"en": ["back"]
30
+		},
31
+		"positive_relative": {
32
+			"fs": ["ruk (lut)"],
33
+			"en": ["behind"]
34
+		},
35
+		"positive_attributive": {
36
+			"fs": ["ruk arend"],
37
+			"en": ["rear", "hind"]
38
+		},
39
+		"directive_absolute": {
40
+			"fs": ["to ruk"],
41
+			"en": ["backward", "behind"]
42
+		},
43
+		"directive_relative": {
44
+			"fs": ["to ruk (lut)"],
45
+			"en": ["behind"]
46
+		}
47
+	},
48
+	{
49
+		"type": "x2",
50
+		"positive_absolute": {
51
+			"fs": ["top"],
52
+			"en": ["in front"]
53
+		},
54
+		"positive_relative": {
55
+			"fs": ["top (lut)"],
56
+			"en": ["over", "above"]
57
+		},
58
+		"positive_attributive": {
59
+			"fs": ["top arend"],
60
+			"en": ["upper"]
61
+		},
62
+		"directive_absolute": {
63
+			"fs": ["to top"],
64
+			"en": ["up"]
65
+		},
66
+		"directive_relative": {
67
+			"fs": ["to top (lut)"],
68
+			"en": ["over","above"]
69
+		}
70
+	},
71
+	{
72
+		"type": "x3",
73
+		"positive_absolute": {
74
+			"fs": ["ned"],
75
+			"en": ["below"]
76
+		},
77
+		"positive_relative": {
78
+			"fs": ["ned (lut)"],
79
+			"en": ["under"]
80
+		},
81
+		"positive_attributive": {
82
+			"fs": ["ned arend"],
83
+			"en": ["lower"]
84
+		},
85
+		"directive_absolute": {
86
+			"fs": ["to ned"],
87
+			"en": ["down"]
88
+		},
89
+		"directive_relative": {
90
+			"fs": ["to ned (lut)"],
91
+			"en": ["under"]
92
+		}
93
+	},
94
+	{
95
+		"type": "x4",
96
+		"positive_absolute": {
97
+			"fs": ["vinst"],
98
+			"en": ["left"]
99
+		},
100
+		"positive_relative": {
101
+			"fs": ["vinst (lut)"],
102
+			"en": ["left from"]
103
+		},
104
+		"positive_attributive": {
105
+			"fs": ["vinst arend"],
106
+			"en": ["left"]
107
+		},
108
+		"directive_absolute": {
109
+			"fs": ["to vinst"],
110
+			"en": ["to the left"]
111
+		},
112
+		"directive_relative": {
113
+			"fs": ["to vinst (lut)"],
114
+			"en": ["to the left of"]
115
+		}
116
+	},
117
+	{
118
+		"type": "x5",
119
+		"positive_absolute": {
120
+			"fs": ["heg"],
121
+			"en": ["right"]
122
+		},
123
+		"positive_relative": {
124
+			"fs": ["heg (lut)"],
125
+			"en": ["right from"]
126
+		},
127
+		"positive_attributive": {
128
+			"fs": ["heg arend"],
129
+			"en": ["right"]
130
+		},
131
+		"directive_absolute": {
132
+			"fs": ["to heg"],
133
+			"en": ["to the right"]
134
+		},
135
+		"directive_relative": {
136
+			"fs": ["to heg (lut)"],
137
+			"en": ["to the right of"]
138
+		}
139
+	},
140
+	{
141
+		"type": "x6",
142
+		"positive_absolute": {
143
+			"fs": ["ine"],
144
+			"en": ["inside"]
145
+		},
146
+		"positive_relative": {
147
+			"fs": ["ine (lut)"],
148
+			"en": ["in", "inside from"]
149
+		},
150
+		"positive_attributive": {
151
+			"fs": ["ine arend"],
152
+			"en": ["inner"]
153
+		},
154
+		"directive_absolute": {
155
+			"fs": ["in"],
156
+			"en": ["in"]
157
+		},
158
+		"directive_relative": {
159
+			"fs": ["in (lut)"],
160
+			"en": ["into"]
161
+		}
162
+	},
163
+	{
164
+		"type": "x7",
165
+		"positive_absolute": {
166
+			"fs": ["ute"],
167
+			"en": ["outside"]
168
+		},
169
+		"positive_relative": {
170
+			"fs": ["ute (lut)"],
171
+			"en": ["out", "outside from"]
172
+		},
173
+		"positive_attributive": {
174
+			"fs": ["ute arend"],
175
+			"en": ["outer"]
176
+		},
177
+		"directive_absolute": {
178
+			"fs": ["ut"],
179
+			"en": ["out"]
180
+		},
181
+		"directive_relative": {
182
+			"fs": ["ut (lut)"],
183
+			"en": ["out of"]
184
+		}
185
+	},
186
+	{
187
+		"type": "x8",
188
+		"positive_absolute": {
189
+			"fs": ["upe"],
190
+			"en": ["upon"]
191
+		},
192
+		"positive_relative": {
193
+			"fs": ["upe (lut)"],
194
+			"en": ["thereon"]
195
+		},
196
+		"positive_attributive": {
197
+			"fs": ["upe arend"],
198
+			"en": []
199
+		},
200
+		"directive_absolute": {
201
+			"fs": ["up"],
202
+			"en": ["on"]
203
+		},
204
+		"directive_relative": {
205
+			"fs": ["up (lut)"],
206
+			"en": ["onto"]
207
+		}
208
+	},
209
+	{
210
+		"type": "x9",
211
+		"positive_absolute": {
212
+			"fs": ["mel"],
213
+			"en": ["inbetween"]
214
+		},
215
+		"positive_relative": {
216
+			"fs": ["mel (lut)"],
217
+			"en": ["between"]
218
+		},
219
+		"positive_attributive": {
220
+			"fs": ["mel arend"],
221
+			"en": ["middle"]
222
+		},
223
+		"directive_absolute": {
224
+			"fs": ["to mel"],
225
+			"en": ["between"]
226
+		},
227
+		"directive_relative": {
228
+			"fs": ["to mel (lut)"],
229
+			"en": ["between"]
230
+		}
231
+	}
232
+]
233
+
... ...
@@ -1,113 +1,344 @@
1 1
 [
2 2
 	{
3 3
 		"domain": "Concrete",
4
-		"interrogative": ["vilk"],
5
-		"relative": ["vilk"],
6
-		"demonstrative_far": ["jen"],
7
-		"demonstrative_near": ["dis"],
8
-		"universal": ["al"],
9
-		"undefined": ["et"],
10
-		"negative": ["ing"]
4
+		"interrogative": {
5
+			"fs": ["vilk"],
6
+			"en": ["which"]
7
+		},
8
+		"relative": {
9
+			"fs": ["vilk"],
10
+			"en": ["which"]
11
+		},
12
+		"demonstrative_far": {
13
+			"fs": ["jen"],
14
+			"en": ["that"]
15
+		},
16
+		"demonstrative_near": {
17
+			"fs": ["dis"],
18
+			"en": ["this"]
19
+		},
20
+		"universal": {
21
+			"fs": ["al"],
22
+			"en": ["every", "all"]
23
+		},
24
+		"undefined": {
25
+			"fs": ["et"],
26
+			"en": ["some"]
27
+		},
28
+		"negative": {
29
+			"fs": ["ing"],
30
+			"en": ["no"]
31
+		}
11 32
 	},
12 33
 	{
13 34
 		"domain": "Person",
14
-		"interrogative": ["vilk man", "ve"],
15
-		"relative": ["vilk man", "ve"],
16
-		"demonstrative_far": ["jen man"],
17
-		"demonstrative_near": ["dis man"],
18
-		"universal": ["al man", "alve"],
19
-		"undefined": ["et man", "etve"],
20
-		"negative": ["ing man", "ingve"]
35
+		"interrogative": {
36
+			"fs": ["vilk man", "ve"],
37
+			"en": ["who"]
38
+		},
39
+		"relative": {
40
+			"fs": ["vilk man", "ve"],
41
+			"en": ["who"]
42
+		},
43
+		"demonstrative_far": {
44
+			"fs": ["jen man"],
45
+			"en": []
46
+		},
47
+		"demonstrative_near": {
48
+			"fs": ["dis man"],
49
+			"en": []
50
+		},
51
+		"universal": {
52
+			"fs": ["al man", "alve"],
53
+			"en": ["everyone"]
54
+		},
55
+		"undefined": {
56
+			"fs": ["et man", "etve"],
57
+			"en": ["someone"]
58
+		},
59
+		"negative": {
60
+			"fs": ["ing man", "ingve"],
61
+			"en": ["no one"]
62
+		}
21 63
 	},
22 64
 	{
23 65
 		"domain": "Thing",
24
-		"interrogative": ["vilk ding", "vat"],
25
-		"relative": ["vilk ding", "vat"],
26
-		"demonstrative_far": ["jen ding", "dat"],
27
-		"demonstrative_near": ["dis ding"],
28
-		"universal": ["al ding", "alvat"],
29
-		"undefined": ["et ding", "etvat"],
30
-		"negative": ["ing ding", "ingvat"]
66
+		"interrogative": {
67
+			"fs": ["vilk ding", "vat"],
68
+			"en": ["what"]
69
+		},
70
+		"relative": {
71
+			"fs": ["vilk ding", "vat"],
72
+			"en": ["what"]
73
+		},
74
+		"demonstrative_far": {
75
+			"fs": ["jen ding", "dat"],
76
+			"en": ["that"]
77
+		},
78
+		"demonstrative_near": {
79
+			"fs": ["dis ding"],
80
+			"en": ["this"]
81
+		},
82
+		"universal": {
83
+			"fs": ["al ding", "alvat"],
84
+			"en": ["everything"]
85
+		},
86
+		"undefined": {
87
+			"fs": ["et ding", "etvat"],
88
+			"en": ["something"]
89
+		},
90
+		"negative": {
91
+			"fs": ["ing ding", "ingvat"],
92
+			"en": ["nothing"]
93
+		}
31 94
 	},
32 95
 	{
33 96
 		"domain": "Posession",
34
-		"interrogative": ["av vilk man", "ves"],
35
-		"relative": ["av vilk man", "ves"],
36
-		"demonstrative_far": ["av jen man"],
37
-		"demonstrative_near": ["av dis man"],
38
-		"universal": ["av al man", "alves"],
39
-		"undefined": ["av et man", "etves"],
40
-		"negative": ["av ing man", "ingves"]
97
+		"interrogative": {
98
+			"fs": ["av vilk man", "ves"],
99
+			"en": []
100
+		},
101
+		"relative": {
102
+			"fs": ["av vilk man", "ves"],
103
+			"en": []
104
+		},
105
+		"demonstrative_far": {
106
+			"fs": ["av jen man"],
107
+			"en": []
108
+		},
109
+		"demonstrative_near": {
110
+			"fs": ["av dis man"],
111
+			"en": []
112
+		},
113
+		"universal": {
114
+			"fs": ["av al man", "alves"],
115
+			"en": []
116
+		},
117
+		"undefined": {
118
+			"fs": ["av et man", "etves"],
119
+			"en": []
120
+		},
121
+		"negative": {
122
+			"fs": ["av ing man", "ingves"],
123
+			"en": []
124
+		}
41 125
 	},
42 126
 	{
43 127
 		"domain": "Time",
44
-		"interrogative": ["vilk tid", "van"],
45
-		"relative": ["vilk tid", "van"],
46
-		"demonstrative_far": ["jen tid", "dan"],
47
-		"demonstrative_near": ["dis tid", "no"],
48
-		"universal": ["al tid", "alvan"],
49
-		"undefined": ["et tid", "etvan"],
50
-		"negative": ["ing tid", "ingvan"]
128
+		"interrogative": {
129
+			"fs": ["vilk tid", "van"],
130
+			"en": ["when"]
131
+		},
132
+		"relative": {
133
+			"fs": ["vilk tid", "van"],
134
+			"en": ["when"]
135
+		},
136
+		"demonstrative_far": {
137
+			"fs": ["jen tid", "dan"],
138
+			"en": ["then"]
139
+		},
140
+		"demonstrative_near": {
141
+			"fs": ["dis tid", "no"],
142
+			"en": ["now"]
143
+		},
144
+		"universal": {
145
+			"fs": ["al tid", "alvan"],
146
+			"en": ["always"]
147
+		},
148
+		"undefined": {
149
+			"fs": ["et tid", "etvan"],
150
+			"en": ["sometimes"]
151
+		},
152
+		"negative": {
153
+			"fs": ["ing tid", "ingvan"],
154
+			"en": ["never"]
155
+		}
51 156
 	},
52 157
 	{
53 158
 		"domain": "Location",
54
-		"interrogative": ["vilk sted", "var"],
55
-		"relative": ["vilk sted", "var"],
56
-		"demonstrative_far": ["jen sted", "dar"],
57
-		"demonstrative_near": ["dis sted", "har"],
58
-		"universal": ["al sted", "alvar"],
59
-		"undefined": ["et sted", "etvar"],
60
-		"negative": ["ing sted", "ingvar"]
159
+		"interrogative": {
160
+			"fs": ["vilk sted", "var"],
161
+			"en": ["where"]
162
+		},
163
+		"relative": {
164
+			"fs": ["vilk sted", "var"],
165
+			"en": ["where"]
166
+		},
167
+		"demonstrative_far": {
168
+			"fs": ["jen sted", "dar"],
169
+			"en": ["there"]
170
+		},
171
+		"demonstrative_near": {
172
+			"fs": ["dis sted", "har"],
173
+			"en": ["here"]
174
+		},
175
+		"universal": {
176
+			"fs": ["al sted", "alvar"],
177
+			"en": ["everywhere"]
178
+		},
179
+		"undefined": {
180
+			"fs": ["et sted", "etvar"],
181
+			"en": ["somewhere"]
182
+		},
183
+		"negative": {
184
+			"fs": ["ing sted", "ingvar"],
185
+			"en": ["nowhere"]
186
+		}
61 187
 	},
62 188
 	{
63 189
 		"domain": "Direction",
64
-		"interrogative": ["to vilk sted", "varto"],
65
-		"relative": ["to vilk sted", "varto"],
66
-		"demonstrative_far": ["to jen sted", "darto"],
67
-		"demonstrative_near": ["to dis sted", "harto"],
68
-		"universal": ["to al sted", "alto"],
69
-		"undefined": ["to et sted", "etto"],
70
-		"negative": ["to ing sted", "ingto"]
190
+		"interrogative": {
191
+			"fs": ["to vilk sted", "varto"],
192
+			"en": []
193
+		},
194
+		"relative": {
195
+			"fs": ["to vilk sted", "varto"],
196
+			"en": []
197
+		},
198
+		"demonstrative_far": {
199
+			"fs": ["to jen sted", "darto"],
200
+			"en": []
201
+		},
202
+		"demonstrative_near": {
203
+			"fs": ["to dis sted", "harto"],
204
+			"en": []
205
+		},
206
+		"universal": {
207
+			"fs": ["to al sted", "alto"],
208
+			"en": []
209
+		},
210
+		"undefined": {
211
+			"fs": ["to et sted", "etto"],
212
+			"en": []
213
+		},
214
+		"negative": {
215
+			"fs": ["to ing sted", "ingto"],
216
+			"en": []
217
+		}
71 218
 	},
72 219
 	{
73 220
 		"domain": "Cause",
74
-		"interrogative": ["fur vilk grund", "varfur"],
75
-		"relative": ["fur vilk grund", "varfur"],
76
-		"demonstrative_far": ["fur jen grund", "darfur"],
77
-		"demonstrative_near": ["fur dis grund", "harfur"],
78
-		"universal": ["fur al grund", "alfur"],
79
-		"undefined": ["fur et grund", "etfur"],
80
-		"negative": ["fur ing grund", "ingfur"]
221
+		"interrogative": {
222
+			"fs": ["fur vilk grund", "varfur"],
223
+			"en": ["why"]
224
+		},
225
+		"relative": {
226
+			"fs": ["fur vilk grund", "varfur"],
227
+			"en": ["why"]
228
+		},
229
+		"demonstrative_far": {
230
+			"fs": ["fur jen grund", "darfur"],
231
+			"en": []
232
+		},
233
+		"demonstrative_near": {
234
+			"fs": ["fur dis grund", "harfur"],
235
+			"en": []
236
+		},
237
+		"universal": {
238
+			"fs": ["fur al grund", "alfur"],
239
+			"en": []
240
+		},
241
+		"undefined": {
242
+			"fs": ["fur et grund", "etfur"],
243
+			"en": []
244
+		},
245
+		"negative": {
246
+			"fs": ["fur ing grund", "ingfur"],
247
+			"en": []
248
+		}
81 249
 	},
82 250
 	{
83 251
 		"domain": "Manner",
84
-		"interrogative": ["vilk mot", "hur"],
85
-		"relative": ["vilk mot", "hur"],
86
-		"demonstrative_far": ["jen mot", "so"],
87
-		"demonstrative_near": ["dis mot", "so"],
88
-		"universal": ["al mot"],
89
-		"undefined": ["et mot"],
90
-		"negative": ["ing mot"]
252
+		"interrogative": {
253
+			"fs": ["vilk mot", "hur"],
254
+			"en": ["how"]
255
+		},
256
+		"relative": {
257
+			"fs": ["vilk mot", "hur"],
258
+			"en": ["how"]
259
+		},
260
+		"demonstrative_far": {
261
+			"fs": ["jen mot", "so"],
262
+			"en": ["so"]
263
+		},
264
+		"demonstrative_near": {
265
+			"fs": ["dis mot", "so"],
266
+			"en": ["so"]
267
+		},
268
+		"universal": {
269
+			"fs": ["al mot"],
270
+			"en": []
271
+		},
272
+		"undefined": {
273
+			"fs": ["et mot"],
274
+			"en": []
275
+		},
276
+		"negative": {
277
+			"fs": ["ing mot"],
278
+			"en": []
279
+		}
91 280
 	},
92 281
 	{
93 282
 		"domain": "Type",
94
-		"interrogative": ["vilk slag"],
95
-		"relative": ["vilk slag"],
96
-		"demonstrative_far": ["jen slag", "solk"],
97
-		"demonstrative_near": ["dis slag"],
98
-		"universal": ["al slag"],
99
-		"undefined": ["et slag"],
100
-		"negative": ["ing slag"]
283
+		"interrogative": {
284
+			"fs": ["vilk slag"],
285
+			"en": ["what kind of"]
286
+		},
287
+		"relative": {
288
+			"fs": ["vilk slag"],
289
+			"en": []
290
+		},
291
+		"demonstrative_far": {
292
+			"fs": ["jen slag", "solk"],
293
+			"en": ["such"]
294
+		},
295
+		"demonstrative_near": {
296
+			"fs": ["dis slag"],
297
+			"en": []
298
+		},
299
+		"universal": {
300
+			"fs": ["al slag"],
301
+			"en": []
302
+		},
303
+		"undefined": {
304
+			"fs": ["et slag"],
305
+			"en": []
306
+		},
307
+		"negative": {
308
+			"fs": ["ing slag"],
309
+			"en": []
310
+		}
101 311
 	},
102 312
 	{
103
-		"domain": "Ammount",
104
-		"interrogative": ["vilk mang"],
105
-		"relative": ["vilk mang"],
106
-		"demonstrative_far": ["jen mang"],
107
-		"demonstrative_near": ["dis mang"],
108
-		"universal": ["al mang"],
109
-		"undefined": ["et mang"],
110
-		"negative": ["ing mang"]
313
+		"domain": "Amount",
314
+		"interrogative": {
315
+			"fs": ["vilk mang"],
316
+			"en": ["how many", "how much"]
317
+		},
318
+		"relative": {
319
+			"fs": ["vilk mang"],
320
+			"en": ["how many", "how much"]
321
+		},
322
+		"demonstrative_far": {
323
+			"fs": ["jen mang"],
324
+			"en": []
325
+		},
326
+		"demonstrative_near": {
327
+			"fs": ["dis mang"],
328
+			"en": []
329
+		},
330
+		"universal": {
331
+			"fs": ["al mang"],
332
+			"en": []
333
+		},
334
+		"undefined": {
335
+			"fs": ["et mang"],
336
+			"en": []
337
+		},
338
+		"negative": {
339
+			"fs": ["ing mang"],
340
+			"en": []
341
+		}
111 342
 	}
112 343
 ]
113 344
 
... ...
@@ -7,7 +7,7 @@
7 7
 		"remark": null,
8 8
 		"examples": {
9 9
 			"fs": "_l_eva",
10
-			"en": "_l_ive"
10
+			"en": "_l_ima"
11 11
 		}
12 12
 	},
13 13
 	{
... ...
@@ -18,7 +18,7 @@
18 18
 		"remark": null,
19 19
 		"examples": {
20 20
 			"fs": "_m_an",
21
-			"en": "_m_an"
21
+			"en": "_m_ike"
22 22
 		}
23 23
 	},
24 24
 	{
... ...
@@ -29,7 +29,7 @@
29 29
 		"remark": null,
30 30
 		"examples": {
31 31
 			"fs": "_n_it",
32
-			"en": "_n_ot"
32
+			"en": "_n_ovember"
33 33
 		}
34 34
 	},
35 35
 	{
... ...
@@ -39,7 +39,7 @@
39 39
 		"runic": "ᛜ",
40 40
 		"remark": null,
41 41
 		"examples": {
42
-			"fs": "ri_ng_",
42
+			"fs": "la_ng_",
43 43
 			"en": "ri_ng_"
44 44
 		}
45 45
 	},
... ...
@@ -51,7 +51,7 @@
51 51
 		"remark": null,
52 52
 		"examples": {
53 53
 			"fs": "_g_oa",
54
-			"en": "_g_o"
54
+			"en": "_g_olf"
55 55
 		}
56 56
 	},
57 57
 	{
... ...
@@ -61,8 +61,8 @@
61 61
 		"runic": "ᚲ",
62 62
 		"remark": null,
63 63
 		"examples": {
64
-			"fs": "bu_k_",
65
-			"en": "boo_k_"
64
+			"fs": "_k_an",
65
+			"en": "_k_ilo"
66 66
 		}
67 67
 	},
68 68
 	{
... ...
@@ -73,7 +73,7 @@
73 73
 		"remark": null,
74 74
 		"examples": {
75 75
 			"fs": "_b_ua",
76
-			"en": "_b_uild"
76
+			"en": "_b_ravo"
77 77
 		}
78 78
 	},
79 79
 	{
... ...
@@ -84,7 +84,7 @@
84 84
 		"remark": null,
85 85
 		"examples": {
86 86
 			"fs": "di_p_",
87
-			"en": "dee_p_"
87
+			"en": "_p_apa"
88 88
 		}
89 89
 	},
90 90
 	{
... ...
@@ -94,8 +94,8 @@
94 94
 		"runic": "ᛞ",
95 95
 		"remark": null,
96 96
 		"examples": {
97
-			"fs": "gu_d_",
98
-			"en": "goo_d_"
97
+			"fs": "_d_ag",
98
+			"en": "_d_elta"
99 99
 		}
100 100
 	},
101 101
 	{
... ...
@@ -106,7 +106,7 @@
106 106
 		"remark": null,
107 107
 		"examples": {
108 108
 			"fs": "_t_id",
109
-			"en": "_t_ime"
109
+			"en": "_t_ango"
110 110
 		}
111 111
 	},
112 112
 	{
... ...
@@ -116,8 +116,8 @@
116 116
 		"runic": "ᚹ",
117 117
 		"remark": null,
118 118
 		"examples": {
119
-			"fs": "gi_v_a",
120
-			"en": "gi_v_e"
119
+			"fs": "_v_ind",
120
+			"en": "_v_ictor"
121 121
 		}
122 122
 	},
123 123
 	{
... ...
@@ -128,7 +128,7 @@
128 128
 		"remark": null,
129 129
 		"examples": {
130 130
 			"fs": "_f_ut",
131
-			"en": "_f_oot"
131
+			"en": "_f_oxtrot"
132 132
 		}
133 133
 	},
134 134
 	{
... ...
@@ -139,7 +139,7 @@
139 139
 		"remark": null,
140 140
 		"examples": {
141 141
 			"fs": "_s_mal",
142
-			"en": "_s_mall"
142
+			"en": "_s_ierra"
143 143
 		}
144 144
 	},
145 145
 	{
... ...
@@ -150,7 +150,7 @@
150 150
 		"remark": null,
151 151
 		"examples": {
152 152
 			"fs": "_h_us",
153
-			"en": "_h_ouse"
153
+			"en": "_h_otel"
154 154
 		}
155 155
 	},
156 156
 	{
... ...
@@ -172,7 +172,7 @@
172 172
 		"remark": null,
173 173
 		"examples": {
174 174
 			"fs": "_j_ar",
175
-			"en": "_y_ear"
175
+			"en": "_y_ankee"
176 176
 		}
177 177
 	},
178 178
 	{
... ...
@@ -183,7 +183,7 @@
183 183
 		"remark": null,
184 184
 		"examples": {
185 185
 			"fs": "gr_i_d",
186
-			"en": "gr_ee_dy"
186
+			"en": "b_ee_f"
187 187
 		}
188 188
 	},
189 189
 	{
... ...
@@ -193,8 +193,8 @@
193 193
 		"runic": "ᛖ",
194 194
 		"remark": "only a few variations of English have that sound; it is somehow similar to the vowel in 'air'",
195 195
 		"examples": {
196
-			"fs": "inst_e_d",
197
-			"en": "~ inst_ea_d"
196
+			"fs": "st_e_d",
197
+			"en": "~ _ai_r"
198 198
 		}
199 199
 	},
200 200
 	{
... ...
@@ -205,7 +205,7 @@
205 205
 		"remark": null,
206 206
 		"examples": {
207 207
 			"fs": "f_a_der",
208
-			"en": "~ f_a_ther"
208
+			"en": "~ b_a_th"
209 209
 		}
210 210
 	},
211 211
 	{
... ...
@@ -216,7 +216,7 @@
216 216
 		"remark": null,
217 217
 		"examples": {
218 218
 			"fs": "_o_ld",
219
-			"en": "~ _o_ld"
219
+			"en": "~ _o_scar"
220 220
 		}
221 221
 	},
222 222
 	{
... ...
@@ -227,7 +227,7 @@
227 227
 		"remark": null,
228 228
 		"examples": {
229 229
 			"fs": "bl_u_",
230
-			"en": "bl_ue_"
230
+			"en": "cr_u_cial"
231 231
 		}
232 232
 	},
233 233
 	{
... ...
@@ -238,7 +238,7 @@
238 238
 		"remark": "similar to vowels used in words like 'earl', 'worry', 'hurt'",
239 239
 		"examples": {
240 240
 			"fs": "sk_oy_n",
241
-			"en": null
241
+			"en": "~ _ea_rly"
242 242
 		}
243 243
 	},
244 244
 	{
... ...
@@ -65,7 +65,7 @@ class class_contentnode
65 65
 			}
66 66
 		}
67 67
 		{
68
-			let dom_list = document.createElement("ul");
68
+			let dom_list = document.createElement("ol");
69 69
 			this.children.forEach
70 70
 			(
71 71
 				function (child, index)
... ...
@@ -18,5 +18,36 @@
18 18
 		}
19 19
 		return $string;
20 20
 	}
21
+	
22
+	function _foo($fieldname)
23
+	{
24
+		return (
25
+			function ($row) use (&$fieldname)
26
+			{
27
+				global $configuration;
28
+				return ["original" => $row[$fieldname]["fs"], "translated" => $row[$fieldname][$configuration["target"]]];
29
+			}
30
+		);
31
+	}
32
+	
33
+	function _baz($words, $type, $language)
34
+	{
35
+		return ((count($words) == 0) ? "?" : implode(", ", array_map(function ($word) use (&$type,&$language) {return mark($word, [$type, "lang_" . $language]);}, $words)));
36
+	}
37
+	
38
+	function _bar($type = "word")
39
+	{
40
+		return (
41
+			function ($value) use (&$type)
42
+			{
43
+				global $configuration;
44
+				$output = "";
45
+				$output .= _baz($value["original"], $type, "fs");
46
+				$output .= " ~ ";
47
+				$output .= _baz($value["translated"], $type, $configuration["target"]);
48
+				return $output;
49
+			}
50
+		);
51
+	}	
21 52
  ?>
22 53
 
... ...
@@ -58,7 +58,7 @@ class class_table
58 58
 	public function generate()
59 59
 	{
60 60
  ?>
61
-<table>
61
+<table class="datatable">
62 62
 	<thead>
63 63
 		<tr>
64 64
 <?php
65 65
new file mode 100644
... ...
@@ -0,0 +1,58 @@
1
+<?php
2
+	include_once("source/logic/server/data.php");
3
+	include_once("source/logic/server/table.php");
4
+	include_once("source/logic/server/misc.php");
5
+ ?>
6
+<section class="section" id="vocabulary/adpositions">
7
+	<header>Adpositions</header>
8
+<?php
9
+	$table = new class_table
10
+	(
11
+		[
12
+			/*
13
+			new class_column
14
+			(
15
+				"Type",
16
+				function ($row)
17
+				{
18
+					return $row["type"];
19
+				}
20
+			),
21
+			 */
22
+			new class_column
23
+			(
24
+				"Positive absolute",
25
+				_foo("positive_absolute"),
26
+				_bar("word")
27
+			),
28
+			new class_column
29
+			(
30
+				"Positive relative",
31
+				_foo("positive_relative"),
32
+				_bar("word")
33
+			),
34
+			new class_column
35
+			(
36
+				"Positive attributive",
37
+				_foo("positive_attributive"),
38
+				_bar("word")
39
+			),
40
+			new class_column
41
+			(
42
+				"Directive absolute",
43
+				_foo("directive_absolute"),
44
+				_bar("word")
45
+			),
46
+			new class_column
47
+			(
48
+				"Directive relative",
49
+				_foo("directive_relative"),
50
+				_bar("word")
51
+			),
52
+		],
53
+		read_json("source/data/adpositions.json")
54
+	);
55
+	$table->generate();
56
+ ?>
57
+</section>
58
+
0 59
new file mode 100644
... ...
@@ -0,0 +1,15 @@
1
+<section class="chapter" id="basics">
2
+	<header>Basics</header>
3
+<?php
4
+	array_map(
5
+		function ($name)
6
+		{
7
+			include("source/structure/" . $name . ".html.php");
8
+		},
9
+		[
10
+			"phonology_and_orthography",
11
+		]
12
+	);
13
+ ?>
14
+</section>
15
+
... ...
@@ -5,7 +5,7 @@
5 5
 	include_once("source/logic/server/misc.php");
6 6
  ?>
7 7
 <section class="section" id="grammar/conjugation">
8
-	<header>Verbs</header>
8
+	<header>Conjugation</header>
9 9
 	<p>In Folksprak verbs are not conjugated for different <span class="grammarterm">personae</span> (participants), <span class="grammarterm">numeri</span> (number of actors) or <span class="grammarterm">genera</span> (grammatical genders).</p>
10 10
 	<section class="subsection" id="conjugation/infinite_verbforms">
11 11
 		<header>Infinite Verbforms</header>
... ...
@@ -15,45 +15,7 @@
15 15
 	</section>
16 16
 	<section class="subsection" id="conjugation/tempora">
17 17
 		<header>Tempora and Modi</header>
18
-		<p>The following table lists the timeforms found in Folksprak and how they are built in the indicative mode.</p>
19
- 		<!--
20
-		<table>
21
-			<thead>
22
-				<tr>
23
-					<th>Name</th>
24
-					<th>Building Scheme (indicative)</th>
25
-					<th>Example</th>
26
-					<th><?php echo($configuration["languagemap"][$configuration["target"]]); ?> Translation</th>
27
-				</tr>
28
-			</thead>
29
-			<tbody>
30
-				<tr>
31
-					<td>Present</td>
32
-					<td>[verb:stem]</td>
33
-					<td><span class="sentence lang_fs">ek skriv</span></td>
34
-					<td><span class="sentence lang_en">i write</span></td>
35
-				</tr>
36
-				<tr>
37
-					<td>Perfect</td>
38
-					<td>[flected <span class="word lang_fs">hav</span>] + [verb:passive participle]</td>
39
-					<td><span class="sentence lang_fs">ek hav skrivt</span></td>
40
-					<td><span class="sentence lang_en">i have written</span></td>
41
-				</tr>
42
-				<tr>
43
-					<td>Future</td>
44
-					<td>[flected <span class="word lang_fs">skal</span>/<span class="word lang_fs">vil</span>/<span class="word lang_fs">kom</span>] + [verb:infinitive]</td>
45
-					<td><span class="sentence lang_fs">ek skal skriva</span></td>
46
-					<td><span class="sentence lang_en">i will write</span></td>
47
-				</tr>
48
-				<tr>
49
-					<td>Explicite Future</td>
50
-					<td>[flected <span class="word lang_fs">verd</span>] + [verb:active participle]</td>
51
-					<td><span class="sentence lang_fs">ek verd skrivend</span></td>
52
-					<td><span class="sentence lang_en">i will write.</span> (literally: <span class="sentence lang_en">i become writing.</span>)</td>
53
-				</tr>
54
-			</tbody>
55
-		</table>
56
- 		  -->
18
+		<p>The following table lists the timeforms found in Folksprak and how they are built in the <span class="grammarterm">indicative</span> mode.</p>
57 19
 <?php
58 20
 	$table = new class_table
59 21
 	(
... ...
@@ -101,31 +63,12 @@
101 63
 				function ($row)
102 64
 				{
103 65
 					global $configuration;
104
-					return ["original" => $row["example"]["original"], "translated" => $row["example"]["translations"][$configuration["target"]]];
66
+					return ["original" => [$row["example"]["original"]], "translated" => $row["example"]["translations"][$configuration["target"]]];
105 67
 				},
106
-				function ($value)
107
-				{
108
-					$output = "";
109
-					$output .= mark($value["original"], ["sentence", "lang_fs"]);
110
-					$output .= " ~ ";
111
-					$output .= implode
112
-					(
113
-						", ",
114
-						array_map
115
-						(
116
-							function ($word)
117
-							{
118
-								global $configuration;
119
-								return mark($word, ["sentence", "lang_" . $configuration["target"]]);
120
-							},
121
-							$value["translated"]
122
-						)
123
-					);
124
-					return $output;
125
-				}
68
+				_bar("sentence")
126 69
 			),
127 70
 		],
128
-		read_json("source/data/timeforms.json")
71
+		array_slice(read_json("source/data/timeforms.json"), 0, 3)
129 72
 	);
130 73
 	$table->generate();
131 74
  ?>
... ...
@@ -1,106 +1,65 @@
1 1
 <?php
2 2
 	include_once("source/logic/server/data.php");
3 3
 	include_once("source/logic/server/table.php");
4
+	include_once("source/logic/server/misc.php");
4 5
  ?>
5
-<section class="subsection" id="grammar/pronouns/correlatives">
6
+<section class="subsection" id="vocabulary/pronouns/correlatives">
6 7
 	<header>Correlatives</header>
7 8
 <?php
9
+	/*
10
+	function foobar($value)
11
+	{
12
+		$output = "";
13
+		$output .= implode(", ", array_map(function ($word) {return mark($word, ["word", "lang_fs"]);}, $value["original"]));
14
+		$output .= " ~ ";
15
+		$output .= implode(", ", array_map(function ($word) {global $configuration; return mark($word, ["word", "lang_" . $configuration["target"]]);}, $value["translated"]));
16
+		return $output;
17
+	}
18
+	 */
19
+	
8 20
 	$table = new class_table
9 21
 	(
10 22
 		[
11 23
 			new class_column
12 24
 			(
13 25
 				"Domain",
14
-				function ($row)
15
-				{
16
-					return $row["domain"];
17
-				}
26
+				function ($row) {return $row["domain"];}
18 27
 			),
19 28
 			new class_column
20 29
 			(
21 30
 				"Interrogative/Relative",
22
-				function ($row)
23
-				{
24
-					return $row["interrogative"];
25
-				},
26
-				function ($value)
27
-				{
28
-					return implode(", ", array_map(function ($word) {return mark($word, ["word", "lang_fs"]);}, $value));
29
-				}
31
+				_foo("interrogative"),
32
+				_bar("word")
30 33
 			),
31
-			/*
32
-			new class_column
33
-			(
34
-				"Relative",
35
-				function ($row)
36
-				{
37
-					return $row["relative"];
38
-				},
39
-				function ($value)
40
-				{
41
-					return implode(", ", array_map(function ($word) {return mark($word, ["word", "lang_fs"]);}, $value));
42
-				}
43
-			),
44
-			 */
45 34
 			new class_column
46 35
 			(
47 36
 				"Demonstrative far",
48
-				function ($row)
49
-				{
50
-					return $row["demonstrative_far"];
51
-				},
52
-				function ($value)
53
-				{
54
-					return implode(", ", array_map(function ($word) {return mark($word, ["word", "lang_fs"]);}, $value));
55
-				}
37
+				_foo("demonstrative_far"),
38
+				_bar("word")
56 39
 			),
57 40
 			new class_column
58 41
 			(
59 42
 				"Demonstrative near",
60
-				function ($row)
61
-				{
62
-					return $row["demonstrative_near"];
63
-				},
64
-				function ($value)
65
-				{
66
-					return implode(", ", array_map(function ($word) {return mark($word, ["word", "lang_fs"]);}, $value));
67
-				}
43
+				_foo("demonstrative_near"),
44
+				_bar("word")
68 45
 			),
69 46
 			new class_column
70 47
 			(
71 48
 				"Universal",
72
-				function ($row)
73
-				{
74
-					return $row["universal"];
75
-				},
76
-				function ($value)
77
-				{
78
-					return implode(", ", array_map(function ($word) {return mark($word, ["word", "lang_fs"]);}, $value));
79
-				}
49
+				_foo("universal"),
50
+				_bar("word")
80 51
 			),
81 52
 			new class_column
82 53
 			(
83 54
 				"Undefined",
84
-				function ($row)
85
-				{
86
-					return $row["undefined"];
87
-				},
88
-				function ($value)
89
-				{
90
-					return implode(", ", array_map(function ($word) {return mark($word, ["word", "lang_fs"]);}, $value));
91
-				}
55
+				_foo("undefined"),
56
+				_bar("word")
92 57
 			),
93 58
 			new class_column
94 59
 			(
95 60
 				"Negative",
96
-				function ($row)
97
-				{
98
-					return $row["negative"];
99
-				},
100
-				function ($value)
101
-				{
102
-					return implode(", ", array_map(function ($word) {return mark($word, ["word", "lang_fs"]);}, $value));
103
-				}
61
+				_foo("negative"),
62
+				_bar("word")
104 63
 			),
105 64
 		],
106 65
 		read_json("source/data/correlatives.json")
... ...
@@ -1,5 +1,5 @@
1 1
 <section class="section" id="grammar/declension">
2
-	<header>Nouns</header>
2
+	<header>Declension</header>
3 3
 	<span class="todo">all</span>
4 4
 </section>
5 5
 
6 6
new file mode 100644
... ...
@@ -0,0 +1,5 @@
1
+<section class="section" id="vocabulary/dictionary">
2
+	<header>Dictionary</header>
3
+	See <a href="http://folksprak.org/?target=dictionary">Munin-Dictionary</a>
4
+</section>
5
+
... ...
@@ -19,9 +19,20 @@
19 19
 			<!--
20 20
 			titlepage
21 21
 			  -->
22
-			<?php include("source/structure/introduction.html.php"); ?>
23
-			<?php include("source/structure/grammar.html.php"); ?>
24
-			<?php include("source/structure/vocabulary.html.php"); ?>
22
+<?php
23
+	array_map(
24
+		function ($name)
25
+		{
26
+			include("source/structure/" . $name . ".html.php");
27
+		},
28
+		[
29
+			"introduction",
30
+			"basics",
31
+			"vocabulary",
32
+			"grammar",
33
+		]
34
+	);
35
+ ?>
25 36
 		</div>
26 37
 	</body>
27 38
 </html>
... ...
@@ -7,13 +7,10 @@
7 7
 			include("source/structure/" . $name . ".html.php");
8 8
 		},
9 9
 		[
10
-			"phonology_and_orthography",
11
-			"pronouns",
12 10
 			"conjugation",
13 11
 			"declension",
14 12
 			"attributes",
15 13
 			"sentence_structure",
16
-			"word_functions",
17 14
 		]
18 15
 	);
19 16
  ?>
... ...
@@ -7,7 +7,7 @@ function convert_persona($persona) {return [0 => "impersonal", 1 => "1st person"
7 7
 function convert_numerus($numerus) {return [0 => null, 1 => "singular", 2 => "plural"][$numerus];}
8 8
 function convert_genus($genus) {return [0 => "common", 1 => "masculine", 2 => "feminine", 3 => "neuter"][$genus];}
9 9
  ?>
10
-<section class="subsection" id="grammar/pronouns/personal_pronouns">
10
+<section class="subsection" id="vocabulary/pronouns/personal_pronouns">
11 11
 	<header>Personal Pronouns</header>
12 12
 <?php
13 13
 	$table = new class_table
... ...
@@ -4,7 +4,7 @@
4 4
 	include_once("source/logic/server/table.php");
5 5
 	include_once("source/logic/server/misc.php");
6 6
  ?>
7
-<section class="section" id="grammar/phonology_and_orthography">
7
+<section class="section" id="basics/phonology_and_orthography">
8 8
 	<header>Phonology and Orthography</header>
9 9
 	<!--
10 10
 	<p>Folksprak uses the following characters as letters:</pa>
... ...
@@ -86,6 +86,7 @@
86 86
 					return mark(format($value), ["word", "lang_" . $configuration["target"]]);
87 87
 				}
88 88
 			),
89
+			/*
89 90
 			new class_column
90 91
 			(
91 92
 				"Remark",
... ...
@@ -98,6 +99,7 @@
98 99
 					return format($value);
99 100
 				}
100 101
 			),
102
+			 */
101 103
 		],
102 104
 		read_json("source/data/phonology_and_orthography.json")
103 105
 	);
104 106
new file mode 100644
... ...
@@ -0,0 +1,5 @@
1
+<section class="section" id="vocabulary/principles">
2
+	<header>Principles</header>
3
+	<span class="todo">all</span>
4
+</section>
5
+
... ...
@@ -1,4 +1,4 @@
1
-<section class="section" id="grammar/pronouns">
1
+<section class="section" id="vocabulary/pronouns">
2 2
 	<header>Pronouns</header>
3 3
 	<?php include("source/structure/personal_pronouns.html.php"); ?>
4 4
 	<?php include("source/structure/correlatives.html.php"); ?>
... ...
@@ -1,12 +1,19 @@
1 1
 <section class="chapter" id="vocabulary">
2 2
 	<header>Vocabulary</header>
3
-	<section class="section" id="vocabulary/principles">
4
-		<header>Principles</header>
5
-		<span class="todo">all</span>
6
-	</section>
7
-	<section class="section" id="vocabulary/dictionary">
8
-		<header>Dictionary</header>
9
-		See <a href="http://folksprak.org/?target=dictionary">Munin-Dictionary</a>
10
-	</section>
3
+<?php
4
+	array_map(
5
+		function ($name)
6
+		{
7
+			include("source/structure/" . $name . ".html.php");
8
+		},
9
+		[
10
+			"principles",
11
+			"pronouns",
12
+			"adpositions",
13
+			"word_functions",
14
+			"dictionary",
15
+		]
16
+	);
17
+ ?>
11 18
 </section>
12 19
 
... ...
@@ -1,9 +1,10 @@
1 1
 <?php
2 2
 	global $configuration;
3
+	include_once("source/logic/server/misc.php");
3 4
 	include_once("source/logic/server/data.php");
4 5
 	include_once("source/logic/server/table.php");
5 6
  ?>
6
-<section class="section" id="grammar/word_functions">
7
+<section class="section" id="vocabulary/word_functions">
7 8
 	<header>Word Functions</header>
8 9
 <?php
9 10
 	$table = new class_table
... ...
@@ -79,28 +80,11 @@
79 80
 			(
80 81
 				"Example",
81 82
 				function ($row)
82
-				{
83
-					return $row["example"];
84
-				},
85
-				function ($value)
86 83
 				{
87 84
 					global $configuration;
88
-					$from = mark($value["word"], ["word", "lang_fs"]);
89
-					$to = implode
90
-					(
91
-						", ",
92
-						array_map
93
-						(
94
-							function ($word)
95
-							{
96
-								global $configuration;
97
-								return mark($word, ["word", "lang_" . $configuration["target"]]);
98
-							},
99
-							$value["translations"][$configuration["target"]]
100
-						)
101
-					);
102
-					return ($from . " ~ " . $to);
103
-				}
85
+					return ["original" => [$row["example"]["word"]], "translated" => $row["example"]["translations"][$configuration["target"]]];
86
+				},
87
+				_bar("word")
104 88
 			),
105 89
 		],
106 90
 		read_json("source/data/word_functions.json")
... ...
@@ -110,9 +94,10 @@
110 94
 <p>
111 95
 	Some complex examples:
112 96
 	<ul>
113
-		<li><span class="word lang_fs">unmanlikhed</span> ~ <span class="word lang_en">inhumanity</span></li>
114
-		<li><span class="word lang_fs">seberenung</span> ~ <span class="word lang_en">visualization</span></li>
115
-		<li><span class="word lang_fs">kraftigenar</span> ~ <span class="word lang_en">fortifier</span></li>
97
+		<?php $fun = _bar("word"); ?>
98
+		<li><?php echo($fun(["original" => ["unmanlikhed"], "translated" => ["inhumanity"]])); ?></li>
99
+		<li><?php echo($fun(["original" => ["seberenung"], "translated" => ["visualization"]])); ?></li>
100
+		<li><?php echo($fun(["original" => ["kraftigenar"], "translated" => ["fortifier"]])); ?></li>
116 101
 	</ul>
117 102
 </p>
118 103
 </section>
... ...
@@ -1,28 +1,35 @@
1
-table
1
+table.datatable
2 2
 {
3 3
 	border-collapse: collapse;
4
+	box-shadow: 4px 4px 4px black;
4 5
 	
5 6
 	& tr
6 7
 	{
7
-		th,td
8
-		{
9
-			border: 1px solid hsv(hsvhue(@color-fg), hsvsaturation(@color-fg), (0.8 * hsvvalue(@color-fg)) + (0.2 * hsvvalue(@color-bg)));
10
-		}
11
-	}
12
-	
13
-	& tr.splitter
14
-	{
15
-		height: 1px;
16
-	}
17
-
18
-	& tr:not(.splitter)
19
-	{
20
-		th,td
8
+		& > th,
9
+		& > td
21 10
 		{
11
+			border: 1px solid hsv(hsvhue(@color-fg), hsvsaturation(@color-fg), (0.5 * hsvvalue(@color-fg)) + (0.5 * hsvvalue(@color-bg)));
12
+			/*
13
+			border: 1px solid @color-bg;
14
+			 */
22 15
 			font-size: 0.8em;
23 16
 			padding: 4px;
24 17
 		}
25
-	}
18
+		
19
+		& > th
20
+		{
21
+			text-align: left;
22
+			/*
23
+			color: @color-x1;
24
+			 */
25
+			background-color: hsv(hsvhue(@color-bg), hsvsaturation(@color-bg), (0.8 * hsvvalue(@color-bg)) + (0.2 * hsvvalue(@color-fg)))
26
+		}
27
+		
28
+		& > td
29
+		{
30
+			background-color: hsv(hsvhue(@color-bg), hsvsaturation(@color-bg), (0.9 * hsvvalue(@color-bg)) + (0.1 * hsvvalue(@color-fg)))
31
+		}
32
+	}	
26 33
 }
27 34
 
28 35
 a
... ...
@@ -47,21 +54,21 @@ a
47 54
 .note_information
48 55
 {
49 56
 	&:extend(.note);
50
-	background-color: hsv(120, 40%, (0.5 * hsvvalue(@color-bg)) + (0.5 * 50%));
57
+	background-color: hsv(120, 40%, (0.8 * hsvvalue(@color-bg)) + (0.2 * 50%));
51 58
 	&:before {font-weight: bold; content: "[i] ";}
52 59
 }
53 60
 
54 61
 .note_warning
55 62
 {
56 63
 	&:extend(.note);
57
-	background-color: hsv( 60, 40%, (0.5 * hsvvalue(@color-bg)) + (0.5 * 50%));
64
+	background-color: hsv( 60, 40%, (0.8 * hsvvalue(@color-bg)) + (0.2 * 50%));
58 65
 	&:before {font-weight: bold; content: "[!] ";}
59 66
 }
60 67
 
61 68
 .note_error
62 69
 {
63 70
 	&:extend(.note);
64
-	background-color: hsv(  0, 40%, (0.5 * hsvvalue(@color-bg)) + (0.5 * 50%));
71
+	background-color: hsv(  0, 40%, (0.8 * hsvvalue(@color-bg)) + (0.2 * 50%));
65 72
 	&:before {font-weight: bold; content: "[x] ";}
66 73
 }
67 74
 
... ...
@@ -154,7 +161,7 @@ a
154 161
 	
155 162
 	margin: 4px;
156 163
 	padding: 4px;
157
-	background-color: hsv(  0,60%,80%);
164
+	background-color: hsv(  0,100%, 50%);
158 165
 	color: white;
159 166
 	font-weight: bold;
160 167
 }
... ...
@@ -1,13 +1,3 @@
1
-@color-bg: hsv(120,  0%,100.0%);
2
-@color-fg: hsv(120,  0%,  0.0%);
3
-/*
4
-@color-bg: hsv(120,  0%, 12.5%);
5
-@color-fg: hsv(120,  0%, 75.0%);
6
- */
7
-
8
-@color-x1: hsv(120, 50%, 50.0%);
9
-@color-x2: hsv(120, 50%, 50.0%);
10
-
11 1
 *
12 2
 {
13 3
 	font-family: sans-serif;
... ...
@@ -52,3 +42,15 @@ body
52 42
 	margin-bottom: 180px;
53 43
 }
54 44
 
45
+#toc
46
+{
47
+	& ol
48
+	{
49
+		list-style-type: none;
50
+		/*
51
+		padding: 0;
52
+		 */
53
+		margin: 0;
54
+	}
55
+}
56
+
55 57
new file mode 100644
... ...
@@ -0,0 +1,11 @@
1
+@color-bg: hsv(120,  0%,100.0%);
2
+@color-fg: hsv(120,  0%,  0.0%);
3
+
4
+/*
5
+@color-bg: hsv(120,  0%, 12.5%);
6
+@color-fg: hsv(120,  0%, 75.0%);
7
+ */
8
+
9
+@color-x1: hsv(120, 50%, 50.0%);
10
+@color-x2: hsv(120, 50%, 50.0%);
11
+