81 lines
2.7 KiB
JavaScript
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;
|
|
}
|
|
}
|