45,660
edits
m (Sware moved page Module:qhv-decl-noun to Module:qhv-noun without leaving a redirect) |
No edit summary |
||
Line 1: | Line 1: | ||
local sub = mw.ustring.sub | |||
local gsub = mw.ustring.gsub | |||
local find = mw.ustring.find | |||
local export = {} | local export = {} | ||
local endings = { | |||
["a"] = "1-l", ["ar"] = "1-a", ["y"] = "2-l", ["ys"] = "2-s", ["o"] = "3-l", ["os"] = "3-s", ["ȳs"] = "3-s-v", ["ks"] = "3-s-k", | |||
["on"] = "3-t", ["or"] = "3-a", ["e"] = "4-l", ["es"] = "4-s", ["en"] = "4-t", ["i"] = "5-l", ["is"] = "5-s", ["ir"] = "5-a", | |||
} | |||
local endings_reverse = { | |||
["1-l"] = "a", ["1-a"] = "ar", ["2-l"] = "y", ["2-s"] = "ys", ["3-l"] = "o", ["3-s"] = "os", ["3-s-v"] = "ȳs", ["3-s-k"] = "ks", | |||
["3-s-t"] = "3-t", ["3-a"] = "or", ["4-l"] = "e", ["4-s"] = "es", ["4-t"] = "en", ["5-l"] = "i", ["5-s"] = "is", ["5-a"] = "ir", | |||
} | |||
local function detect_decl(word, decl, class) | |||
if decl and class then | |||
local declension = decl .. "-" .. class | |||
return declension, {sub(word, 1, -(#endings_reverse[declension] + 1))} | |||
elseif decl == "6" then -- sixth declension | |||
if class then | |||
return "6-" .. class, {sub(word, 1, -2)} | |||
else | |||
error("Noun class must be specified for sixth-declension nouns.") | |||
end | |||
end | |||
end | |||
return export | return export |