1
0
wiki/scripts/mos.js
2025-11-07 11:09:35 +01:00

81 lines
2.7 KiB
JavaScript

function pluralise(rt) {
let m = rt.match(/([aeioáéíó])(?:[^aeioáéíó]*$)/)
return (rt.substr(0, m.index + 1) + rt.substr(m.index, rt.length)
.replace('á','a')
.replace('é','e')
.replace('í','i')
.replace('ó','o'))
}
module.exports = {
/**
* Declines a noun
*/
noun: (rt, num, decl) => {
if (num == "PL")
rt = pluralise(rt)
switch (decl) {
case "TOP": return rt;
case "OBL": {
if (rt.endsWith("cz") || rt.endsWith("tz") || rt.endsWith("ts") || rt.endsWith("cs")) {
return rt.substr(0, rt.length - 2) + "t";
}
if (rt.endsWith("z") || rt.endsWith("s")) {
return rt.substr(0, rt.length - 1) + "t"
}
return rt + "t"
}
case "GEN": {
if (rt.endsWith("cz") || rt.endsWith("tz") || rt.endsWith("ts") || rt.endsWith("cs")) {
return rt.substr(0, rt.length - 2) + "c";
}
if (rt.endsWith("z") || rt.endsWith("s")) {
return rt.substr(0, rt.length - 1) + "c"
}
return rt + "c"
}
case "DAT": {
if (rt.endsWith("s") || rt.endsWith("z")) {
return rt + "i"
}
return rt + "si"
}
case "ABL": {
if (rt.endsWith("cz") || rt.endsWith("cs")) {
return rt.substr(0, rt.length - 2) + "cvia";
}
if (rt.endsWith("tz") || rt.endsWith("ts")) {
return rt.substr(0, rt.length - 2) + "tvia";
}
if (rt.endsWith("z") || rt.endsWith("s")) {
return rt.substr(0, rt.length - 1) + "via";
}
return rt + "via"
}
}
},
verb: (rt, t, p) => {
rt = rt.substr(0, rt.length - 1);
var tense;
if (t == "PST") tense = "i";
if (t == "PRS") tense = "e";
if (t == "FUT") tense = "o";
if (t == "GNO") tense = "a";
var pers;
if (p == "1S") pers = "f";
if (p == "2S") pers = "n";
if (p == "3SI") pers = "s";
if (p == "3SA") pers = "h";
if (p == "1PE") pers = "́v";
if (p == "1PI") pers = "́m";
if (p == "2P") pers = "́n";
if (p == "3PI") pers = "́z";
if (p == "3PA") pers = "́r";
if (p == "INF") pers = "";
if (p == "SPCP") pers = "p";
if (p == "PPCP") pers = "́p";
return rt + tense + pers;
}
}