Correlatives
generate(); break; } case 1: { global $configuration; $database = read_json("source/data/x.json"); $data = $database["words"]; // $data = sql_cross($database["words"], sql_rename($database["words"])); $data = sql_select($data, function ($row) {return ($row["language"] == "fs");}); $table = new class_table ( [ new class_column("Domain (id)", function ($row) {return $row["domain_id"];}), new class_column("Type (id)", function ($row) {return $row["type_id"];}), new class_column ( "Folksprak", function ($row) {return $row["words"];}, function ($value) {global $configuration; return _baz($value, "word", "fs");} ), /* new class_column ( $configuration["languagemap"][$configuration["target"]], function ($row) {global $configuration; return $row["words"][$configuration["target"]];}, function ($value) {global $configuration; return _baz($value, "word", $configuration["target"]);} ), */ ], $data ); $table->generate(); break; } case 2: { global $configuration; $database = read_json("source/data/x.json"); $data = $database["words"]; // get domain names { $data = sql_cross($data, $database["domains"]); $data = sql_rename($data, "name", "domain_name"); $data = sql_select($data, function ($row) {return ($row["id"] == $row["domain_id"]);}); $data = sql_delete($data, ["id"]); } // get type names { $data = sql_cross($data, $database["types"]); $data = sql_rename($data, "name", "type_name"); $data = sql_select($data, function ($row) {return ($row["id"] == $row["type_id"]);}); $data = sql_delete($data, ["id"]); } // transform { $data = sql_select($data, function ($row) {global $configuration; return (($row["language"] == "fs") or ($row["language"] == $configuration["target"]));}); // $data = sql_group($data, "language"); $data = sql_add($data, ["type_name/words"], ["type_name/words" => function ($row) {return ["key" => $row["type_id"], "value" => [$row["language"] => $row["words"]]];}]); $data = sql_project($data, ["domain_name", "type_name/words"]); $data = sql_group ( $data, "domain_name", [ "type_name/words" => function ($args) { $output = []; foreach ($args as $arg) { if (! array_key_exists($arg["key"], $output)) $output[$arg["key"]] = []; foreach ($arg["value"] as $key => $value) { $output[$arg["key"]][$key] = $value; } } return $output; }, ] ); } $table = new class_table ( array_merge ( [ new class_column("Domain", function ($row) {return $row["domain_name"];}), // new class_column("type_name/words", function ($row) {return $row["type_name/words"];}, function ($value) {print_r($value);}), ], array_map ( function ($type) { return ( new class_column ( ("Type: " . $type["name"]), function ($row) use (&$type) { global $configuration; return ["original" => $row["type_name/words"][$type["id"]]["fs"], "translated" => $row["type_name/words"][$type["id"]][$configuration["target"]]]; }, _bar("word") ) ); }, array_filter($database["types"], function ($type) {return ($type["id"] != "relative");}) ) ), $data ); $table->generate(); break; } default: { break; } } ?>
Some of these words are very unlikely to ever get used (e.g. ing slag). Nevertheless they exist and are listed for completeness.