const rootEndingPair = (str) => { return { root: str.slice(0, -1), ending: str.slice(-1) }; }; function declineSaimiar(entry) { const sai = entry.sai; const morph = entry.morph_type; if (morph == "-V") { return vowelDeclension(sai); } else if (morph == "-a/i") { return aiDeclension(sai); } else if (morph == "e-") { return initalDeclension(sai); } else if (morph == "-C") { return consonantDeclension(sai); } else { console.warn(`Can't decline entry '${entry.sai}'`); console.log(entry); return null; } } function vowelDeclension(sai) { const { root, ending } = rootEndingPair(sai); const adpEnding = ending == "u" ? "ys" : `${ending}s`; return { "abs": `${root}${ending}`, "erg": `${root}${ending}na`, "adp": `${root}${adpEnding}`, "all": `so${root}${adpEnding}`, "loc": `${root}${ending}xa`, "ell": `tlê${root}${adpEnding}`, "inst": `${root}${ending}ŕa`, "rel": `${root}${ending}źi` }; } function aiDeclension(sai) { const { root, ending } = rootEndingPair(sai); return { "abs": `${root}${ending}`, "erg": `${root}iad`, "adp": `${root}i`, "all": `so${root}i`, "loc": `${root}iath`, "ell": `tlê${root}i`, "inst": `${root}iar`, "rel": `${root}iai` }; } function consonantDeclension(sai) { const split = rootEndingPair(sai); const root = split.ending == "ø" ? split.root : sai; const absFinal = split.ending == "ø" ? "ø" : ""; return { "abs": `${root}${absFinal}`, "erg": `${root}ad`, "adp": `${root}e`, "all": `so${root}i`, "loc": `${root}ak`, "ell": `tlê${root}i`, "inst": `${root}ar`, "rel": `${root}ai` }; } function initalDeclension(sai) { const { root, ending } = rootEndingPair(sai); return { "abs": `${root}${ending}`, "erg": `${root}${ending}na`, "adp": `${root}${ending}s`, }; } export { declineSaimiar };