From 737afc8179a0f47faec70fd41e6154ccdbe3bbe5 Mon Sep 17 00:00:00 2001 From: Ludovic 'Archivist' Lagouardette Date: Mon, 2 Oct 2023 14:03:13 +0200 Subject: [PATCH] Add a way to manipulate tokipona symbols Includes: - a way to parse them from latin - a way to represent them - a dictionary for stringification --- source/game.d | 3 + source/toki/symbols.d | 275 ++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 278 insertions(+) create mode 100644 source/toki/symbols.d diff --git a/source/game.d b/source/game.d index 6efc4d4..4c77d13 100644 --- a/source/game.d +++ b/source/game.d @@ -8,6 +8,8 @@ import std.string : toStringz; import std.format; import std.conv : to; import core.time; +import toki.symbols; + extern(C) __gshared string[] rt_options = [ "gcopt=initReserve:128 minPoolSize:256 parallel:2 profile:1" ]; @@ -35,6 +37,7 @@ int main(string[] args) { engine.load(bytecode); log(LogLevel.INFOHIGH, "Go Hot Dog, Go..."); engine.process(); + Toki[] p = convert("toki pona"); auto reference = MonoTime.currTime(); auto deltaTime = 1f/60f; diff --git a/source/toki/symbols.d b/source/toki/symbols.d new file mode 100644 index 0000000..02d6f25 --- /dev/null +++ b/source/toki/symbols.d @@ -0,0 +1,275 @@ +module toki.symbols; + +import std.conv : to; +import std.string; +import utils.log; + + + +public enum Toki { + a, + akesi, + ala, + alasa, + ale, + anpa, + ante, + anu, + awen, + e, + en, + esun, + ijo, + ike, + ilo, + insa, + jaki, + jan, + jelo, + jo, + kala, + kalama, + kama, + kasi, + ken, + kepeken, + kili, + kiwen, + ko, + kon, + kule, + kulupu, + kute, + la, + lape, + laso, + lawa, + len, + lete, + li, + lili, + linja, + lipu, + loje, + lon, + luka, + lukin, + lupa, + ma, + mama, + mani, + meli, + mi, + mije, + moku, + moli, + monsi, + mu, + mun, + musi, + mute, + nanpa, + nasa, + nasin, + nena, + ni, + nimi, + noka, + o, + olin, + ona, + open, + pakala, + pali, + palisa, + pan, + pana, + pi, + pilin, + pimeja, + pini, + pipi, + poka, + poki, + pona, + pu, + sama, + seli, + selo, + seme, + sewi, + sijelo, + sike, + sin, + sina, + sinpin, + sitelen, + sona, + soweli, + suli, + suno, + supa, + suwi, + tan, + taso, + tawa, + telo, + tenpo, + toki, + tomo, + tu, + unpa, + uta, + utala, + walo, + wan, + waso, + wawa, + weka, + wile +}; + +private Toki[string] getTable() { + Toki[string] table; + table["a"] = Toki.a; + table["akesi"] = Toki.akesi; + table["ala"] = Toki.ala; + table["alasa"] = Toki.alasa; + table["ale"] = Toki.ale; + table["anpa"] = Toki.anpa; + table["ante"] = Toki.ante; + table["anu"] = Toki.anu; + table["awen"] = Toki.awen; + table["e"] = Toki.e; + table["en"] = Toki.en; + table["esun"] = Toki.esun; + table["ijo"] = Toki.ijo; + table["ike"] = Toki.ike; + table["ilo"] = Toki.ilo; + table["insa"] = Toki.insa; + table["jaki"] = Toki.jaki; + table["jan"] = Toki.jan; + table["jelo"] = Toki.jelo; + table["jo"] = Toki.jo; + table["kala"] = Toki.kala; + table["kalama"] = Toki.kalama; + table["kama"] = Toki.kama; + table["kasi"] = Toki.kasi; + table["ken"] = Toki.ken; + table["kepeken"] = Toki.kepeken; + table["kili"] = Toki.kili; + table["kiwen"] = Toki.kiwen; + table["ko"] = Toki.ko; + table["kon"] = Toki.kon; + table["kule"] = Toki.kule; + table["kulupu"] = Toki.kulupu; + table["kute"] = Toki.kute; + table["la"] = Toki.la; + table["lape"] = Toki.lape; + table["laso"] = Toki.laso; + table["lawa"] = Toki.lawa; + table["len"] = Toki.len; + table["lete"] = Toki.lete; + table["li"] = Toki.li; + table["lili"] = Toki.lili; + table["linja"] = Toki.linja; + table["lipu"] = Toki.lipu; + table["loje"] = Toki.loje; + table["lon"] = Toki.lon; + table["luka"] = Toki.luka; + table["lukin"] = Toki.lukin; + table["lupa"] = Toki.lupa; + table["ma"] = Toki.ma; + table["mama"] = Toki.mama; + table["mani"] = Toki.mani; + table["meli"] = Toki.meli; + table["mi"] = Toki.mi; + table["mije"] = Toki.mije; + table["moku"] = Toki.moku; + table["moli"] = Toki.moli; + table["monsi"] = Toki.monsi; + table["mu"] = Toki.mu; + table["mun"] = Toki.mun; + table["musi"] = Toki.musi; + table["mute"] = Toki.mute; + table["nanpa"] = Toki.nanpa; + table["nasa"] = Toki.nasa; + table["nasin"] = Toki.nasin; + table["nena"] = Toki.nena; + table["ni"] = Toki.ni; + table["nimi"] = Toki.nimi; + table["noka"] = Toki.noka; + table["o"] = Toki.o; + table["olin"] = Toki.olin; + table["ona"] = Toki.ona; + table["open"] = Toki.open; + table["pakala"] = Toki.pakala; + table["pali"] = Toki.pali; + table["palisa"] = Toki.palisa; + table["pan"] = Toki.pan; + table["pana"] = Toki.pana; + table["pi"] = Toki.pi; + table["pilin"] = Toki.pilin; + table["pimeja"] = Toki.pimeja; + table["pini"] = Toki.pini; + table["pipi"] = Toki.pipi; + table["poka"] = Toki.poka; + table["poki"] = Toki.poki; + table["pona"] = Toki.pona; + table["pu"] = Toki.pu; + table["sama"] = Toki.sama; + table["seli"] = Toki.seli; + table["selo"] = Toki.selo; + table["seme"] = Toki.seme; + table["sewi"] = Toki.sewi; + table["sijelo"] = Toki.sijelo; + table["sike"] = Toki.sike; + table["sin"] = Toki.sin; + table["sina"] = Toki.sina; + table["sinpin"] = Toki.sinpin; + table["sitelen"] = Toki.sitelen; + table["sona"] = Toki.sona; + table["soweli"] = Toki.soweli; + table["suli"] = Toki.suli; + table["suno"] = Toki.suno; + table["supa"] = Toki.supa; + table["suwi"] = Toki.suwi; + table["tan"] = Toki.tan; + table["taso"] = Toki.taso; + table["tawa"] = Toki.tawa; + table["telo"] = Toki.telo; + table["tenpo"] = Toki.tenpo; + table["toki"] = Toki.toki; + table["tomo"] = Toki.tomo; + table["tu"] = Toki.tu; + table["unpa"] = Toki.unpa; + table["uta"] = Toki.uta; + table["utala"] = Toki.utala; + table["walo"] = Toki.walo; + table["wan"] = Toki.wan; + table["waso"] = Toki.waso; + table["wawa"] = Toki.wawa; + table["weka"] = Toki.weka; + table["wile"] = Toki.wile; + return table; +} + +public Toki[] convert(string text) { + auto table = getTable(); + + string[] words = split(text); + + Toki[] twords = []; + + foreach (string key; words) + { + Toki* found = key in table; + if(found !is null) { + twords = twords ~ *found; + } else { + log(LogLevel.DEBUG, format!"Word not in dictionary: %s"(key)); + } + } + + return twords; +} \ No newline at end of file