45,631
edits
No edit summary |
No edit summary |
||
Line 114: | Line 114: | ||
elseif stem:match(v.."b.$") then | elseif stem:match(v.."b.$") then | ||
data.forms["m"] = {s2 .. "pri", s2 .. "bġi"} | data.forms["m"] = {s2 .. "pri", s2 .. "bġi"} | ||
loc = | loc = s2 .. "pṡi" | ||
elseif stem:match(v.."k.$") then | elseif stem:match(v.."k.$") then | ||
data.forms["m"] = {s2 .. "ġi"} | data.forms["m"] = {s2 .. "ġi"} | ||
Line 246: | Line 246: | ||
data.forms["abl"] = {(abl or loc) .. ce[6]} | data.forms["abl"] = {(abl or loc) .. ce[6]} | ||
end | |||
}) | |||
data["o"] = { | |||
params = { | |||
[1] = {}, | |||
}, | |||
} | |||
setmetatable(data["o"], {__call = function(self, args, data) | |||
local stem = data.head | |||
local s1, s2, s3 = sub(lenition(stem), 1, -2), sub(lenition(stem), 1, -3), sub(lenition(stem), 1, -4) | |||
table.insert(data.categories, "Siwa o-declension nouns") | |||
data.forms["u"] = {stem} | |||
if stem:match("[ae]$") then | |||
if stem:match(v.."[mn][mn].$") then | |||
data.forms["m"] = {s3 .. "mmo"} | |||
loc = s3 .. "mmoi" | |||
elseif stem:match(v.."[bt].$") then | |||
data.forms["m"] = {s2 .. "bmo"} | |||
loc = s2 .. "bmoi" | |||
elseif stem:match(v.."[mvn].$") then | |||
data.forms["m"] = {s2 .. "mmo"} | |||
loc = s2 .. "mmoi" | |||
elseif stem:match(v.."[rhg].$") then | |||
data.forms["m"] = {s2 .. "hmo"} | |||
loc = s2 .. "hmoi" | |||
elseif stem:match(v.."k.$") then | |||
data.forms["m"] = {s2 .. (data.q == "s" and "gmo" or "hmo")} | |||
loc = s2 .. (data.q == "s" and "gmoi" or "hmoi") | |||
elseif stem:match(v.."l.$") then | |||
data.forms["m"] = {s2 .. "lmo"} | |||
loc = s2 .. "lmoi" | |||
else | |||
data.forms["m"] = {lenition(stem) .. "mo"} | |||
loc = lenition(stem) .. "moi" | |||
end | |||
elseif stem:match("i$") then | |||
if stem:match(v.."hhį.$") then | |||
data.forms["m"] = {sub(lenition(stem), 1, -5) .. "ṡko"} | |||
loc = sub(lenition(stem), 1, -5) .. "ṡkoi" | |||
elseif stem:match(v.."[mn][mn].$") then | |||
data.forms["m"] = {s3 .. "kko"} | |||
loc = s3 .. "kkoi" | |||
elseif stem:match(v.."[lrs]k.$") or stem:match(v.."sġ.$") then | |||
data.forms["m"] = {s2 .. "kko"} | |||
loc = s2 .. "kkoi" | |||
elseif stem:match(v.."l.$") then | |||
data.forms["m"] = {s2 .. "lko"} | |||
loc = s2 .. "lkoi" | |||
elseif stem:match(v.."[rh].$") then | |||
data.forms["m"] = {s2 .. "hko"} | |||
loc = s2 .. "hkoi" | |||
elseif stem:match(v.."ṡ.$") then | |||
data.forms["m"] = {s2 .. "ṡko"} | |||
loc = s2 .. "ṡkoi" | |||
else | |||
data.forms["m"] = {lenition(stem) .. "ko"} | |||
loc = lenition(stem) .. "koi" | |||
end | |||
elseif stem:match("[ouyů].$") then | |||
if stem:match(v.."[mn][mn].$") then | |||
data.forms["m"] = {s3 .. "mma"} | |||
loc = s3 .. "mmi" | |||
elseif stem:match(v.."[mnv].$") then | |||
data.forms["m"] = {s2 .. "mma"} | |||
loc = s2 .. "mmi" | |||
elseif stem:match(v.."[rhgk].$") then | |||
data.forms["m"] = {s2 .. "hma"} | |||
loc = s2 .. "hmi" | |||
elseif stem:match(v.."l.$") then | |||
data.forms["m"] = {s2 .. "lma"} | |||
loc = s2 .. "lmi" | |||
else | |||
data.forms["m"] = {lenition(stem) .. "ma"} | |||
ill, ela = lenition(stem) .. "n", lenition(stem) .. "n" | |||
ine, ade, all, abl = lenition(stem) .. "mi", lenition(stem) .. "mi", lenition(stem) .. "mi", lenition(stem) .. "mi" | |||
end | |||
end | |||
data.forms["ine"] = {(ine or loc) .. ce[1]} | |||
data.forms["ill"] = {(ill or loc) .. ce[2]} | |||
data.forms["ela"] = {(ela or loc) .. ce[3]} | |||
data.forms["ade"] = {(ade or loc) .. ce[4]} | |||
data.forms["all"] = {(all or loc) .. ce[5]} | |||
data.forms["abl"] = {(abl or loc) .. ce[6]} | |||
-- TODO: add alternative forms with table.insert | |||
for n, case in pairs(cases) do | |||
if stem:match(v.."[mnkg]i$") then | |||
table.insert(data.forms[case], s2 .. "kki" .. ce[n]) | |||
elseif stem:match(v.."[lrs]ki$") or stem:match(v.."sġi$") then | |||
table.insert(data.forms[case], s2 .. "kki" .. ce[n]) | |||
end | |||
end | |||
end | end | ||
}) | }) | ||
return data | return data |