const vowelLetters = ['a', 'e', 'ê', 'i', 'o', 'ô', 'u', 'y', 'ø']; 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 };