8794e319de05611d80218f8a3f07fa1992d0c228
fenris foo

fenris authored 7 years ago

1) <?php
Christian Fraß added transition-data and t...

Christian Fraß authored 7 years ago

2) 	function function_feed($value)
3) 	{
4) 		return (
5) 			function ($function) use (&$value)
6) 			{
7) 				return $function($value);
8) 			}
9) 		);
10) 	}
11) 	
12) 	function function_compose($function1, $function2)
13) 	{
14) 		return (
15) 			function ($value) use (&$function1, &$function2)
16) 			{
17) 				return ($function2($function1($value)));
18) 			}
19) 		);
20) 	}
21) 	
22) 	function function_chain($functions)
23) 	{
24) 		return (
25) 			function ($value) use (&$functions)
26) 			{
27) 				/*
28) 				return array_reduce($functions, function ($x, $y) {call_user_func("function_compose", $x, $y);}, $value);
29) 				 */
30) 				return ((count($functions) == 0) ? $value : function_feed($functions[0]($value))(function_chain(array_slice($functions, 1))));
31) 			}
32) 		);
33) 	}
34) 	
35) 	function object_from_array($key_name)
36) 	{
37) 		return (
38) 			function ($list) use (&$key_name)
39) 			{
40) 				$object = [];
41) 				foreach ($list as $element)
42) 				{
43) 					$key = $element[$key_name];
44) 					$object[$key] = $element;
45) 				}
46) 				return $object;
47) 			}
48) 		);
49) 	}
50) 	
51) 	function object_attribute($name)
52) 	{
53) 		return (
54) 			function ($object) use (&$name)
55) 			{
56) 				return $object[$name];
57) 			}
58) 		);
59) 	}
60) 	
61) 	function object_map($function)
62) 	{
63) 		return (
64) 			function ($object) use (&$function)
65) 			{
66) 				$object_ = [];
67) 				foreach ($object as $key => $value)
68) 				{
69) 					$object_[$key] = $function($value);
70) 				}
71) 				return $object_;
72) 			}
73) 		);
74) 	}
75) 	
Christian Fraß better table-snap

Christian Fraß authored 7 years ago

76) 	function fetch($structure, $field, $fallback = null, $escalation = 1)
77) 	{
78) 		if (array_key_exists($field, $structure))
79) 		{
80) 			return $structure[$field];
81) 		}
82) 		else
83) 		{
84) 			switch ($escalation)
85) 			{
86) 				case 0:
87) 				{
88) 					return $fallback;
89) 					// break;
90) 				}
91) 				case 1:
92) 				{
93) 					return $fallback;
94) 					// break;
95) 				}
96) 				case 2:
97) 				{
98) 					throw (sprintf("field '%s' missing in structure!", $field));
99) 					return $fallback;
100) 					// break;
101) 				}
102) 				default:
103) 				{
104) 					throw (sprintf("unhandled escalation level %u", $escalation));
105) 					// break;
106) 				}
107) 			}
108) 		}
109) 	}
110) 	
bfadmin-master advanced

bfadmin-master authored 7 years ago

111) 	function compose($names)
112) 	{
Christian Fraß renamed structure to content

Christian Fraß authored 7 years ago

113) 		array_map
114) 		(
bfadmin-master advanced

bfadmin-master authored 7 years ago

115) 			function ($name)
116) 			{
Christian Fraß renamed structure to content

Christian Fraß authored 7 years ago

117) 				include("source/content/" . $name . ".html.php");
bfadmin-master advanced

bfadmin-master authored 7 years ago

118) 			},
119) 			$names
120) 		);
121) 	}
122) 	
fenris foo

fenris authored 7 years ago

123) 	function mark($core, $classes)
124) 	{
Christian Fraß added transition-data and t...

Christian Fraß authored 7 years ago

125) 		global $configuration;
126) 		if ($configuration["replace_fs_umlauts"])
127) 		{
128) 			if (in_array("lang_fs", $classes) and !in_array("letter", $classes))
129) 			{
130) 				$core = str_replace
131) 				(
132) 					["ö","ü"],
133) 					["oy","uy"],
134) 					$core
135) 				);
136) 			}
137) 		}
fenris foo

fenris authored 7 years ago

138) 		return ('<span class="' . implode(" ", $classes) . '">' . $core . '</span>');
139) 	}
140) 	
Christian Fraß added transition-data and t...

Christian Fraß authored 7 years ago

141) 	function format($string, $classes = ["type_word", "lang_fs"])
fenris foo

fenris authored 7 years ago

142) 	{
143) 		if ($string == NULL)
144) 		{
145) 			$string = "--";
146) 		}
147) 		else
148) 		{
149) 			$string = preg_replace("/\/([^\/]*)\//", mark("$1", ["ipa"]), $string);
150) 			$string = preg_replace("/_([^_]*)_/", "<u>$1</u>", $string);
151) 			$string = preg_replace("/\'([^\']*)\'/", mark("$1", $classes), $string);
152) 		}
153) 		return $string;
154) 	}
bfadmin-master advanced

bfadmin-master authored 7 years ago

155) 	
156) 	function _foo($fieldname)
157) 	{
158) 		return (
159) 			function ($row) use (&$fieldname)
160) 			{
161) 				global $configuration;
162) 				return ["original" => $row[$fieldname]["fs"], "translated" => $row[$fieldname][$configuration["target"]]];
163) 			}
164) 		);
165) 	}
166) 	
167) 	function _baz($words, $type, $language)
168) 	{
169) 		return ((count($words) == 0) ? "?" : implode(", ", array_map(function ($word) use (&$type,&$language) {return mark($word, [$type, "lang_" . $language]);}, $words)));
170) 	}
171) 	
Christian Fraß added transition-data and t...

Christian Fraß authored 7 years ago

172) 	function _bar($type = "type_word")
bfadmin-master advanced

bfadmin-master authored 7 years ago

173) 	{
174) 		return (
175) 			function ($value) use (&$type)
176) 			{
177) 				global $configuration;
178) 				$output = "";
179) 				$output .= _baz($value["original"], $type, "fs");
180) 				$output .= " ~ ";
181) 				$output .= _baz($value["translated"], $type, $configuration["target"]);
182) 				return $output;
183) 			}
184) 		);
Christian Fraß personal pronouns and infin...

Christian Fraß authored 7 years ago

185) 	}
186) 	
Christian Fraß added transition-data and t...

Christian Fraß authored 7 years ago

187) 	function format_single($type, $language)
188) 	{
189) 		return (
190) 			function ($piece) use (&$type, &$language)
191) 			{
192) 				return mark($piece, [$type, "lang_" . $language]);
193) 			}
194) 		);
195) 	}
196) 	
197) 	function format_list($type, $language)
198) 	{
199) 		return (
200) 			function ($pieces) use (&$type, &$language)
201) 			{
202) 				return ((count($pieces) == 0) ? "?" : implode(", ", array_map(format_single($type, $language), $pieces)));
203) 			}
204) 		);
205) 	}
206) 	
207) 	function format_correlation($type, $language_from = "fs", $language_to = null)
208) 	{
209) 		global $configuration;
210) 		if ($language_to == null) $language_to = $configuration["target"];
211) 		return (
212) 			function ($source) use (&$type, &$language_from, &$language_to)
213) 			{
214) 				$output = "";
215) 				$output .= format_list($type, $language_from)($source[$language_from]);
216) 				$output .= " ~ ";
217) 				$output .= format_list($type, $language_to)($source[$language_to]);
218) 				return $output;
219) 			}
220) 		);
221) 	}
222) 	
Christian Fraß personal pronouns and infin...

Christian Fraß authored 7 years ago

223) 	function proposal()
224) 	{
225)  ?>
Christian Fraß included developer-notes; a...

Christian Fraß authored 7 years ago

226) 		<div class="note note_error">
227) 			<span class="note_content">
228) 				<p>This section is only a proposal yet; not part of the draft.</p>
229) 			</span>
230) 		</div>
Christian Fraß personal pronouns and infin...

Christian Fraß authored 7 years ago

231) <?php
232) 	}