モジュール:hsb-adecl
表示
このモジュールについての説明文ページを モジュール:hsb-adecl/doc に作成できます
local export = {}
local function autoinflect(lemma)
local stem, substem, extra, ending = mw.ustring.match(lemma, "^((.+)(ch))([iy])$")
if not extra then
stem, substem, extra, ending = mw.ustring.match(lemma, "^((.+)([hktdłčćšžnw]))([iy])$")
end
if not extra then
stem, substem, ending = mw.ustring.match(lemma, "^((.+))([iy])$")
end
local extra_alt = { ["h"] = "z", ["ch"] = "š", ["k"] = "c", ["t"] = "ć", ["d"] = "dź", ["ł"] = "l" }
local soft = ending == "i" and mw.ustring.match(extra, "^[čćšžnw]$")
local addj = ending == "i" and mw.ustring.match(extra, "^[nw]$")
return {
[1] = lemma,
[2] = stem .. (addj and "j" or "") .. "e",
[3] = stem .. (addj and "j" or "") .. "a",
[4] = stem .. (soft and ((addj and "j" or "") .. "ej") or "aj"),
[5] = stem .. (addj and "j" or "") .. "ej",
[6] = substem .. (extra_alt[extra] or extra or "") .. (ending == "y" and "i" or (extra_alt[extra] and mw.ustring.match(extra_alt[extra], "^[cz]$") and "y" or "i")),
[7] = stem .. (addj and "j" or "") .. "eho",
[8] = stem .. (addj and "j" or "") .. "eje",
[9] = stem .. (addj and "j" or "") .. "eju",
[10] = lemma .. "ch",
[11] = stem .. (addj and "j" or "") .. "emu",
[12] = lemma .. "maj",
[13] = lemma .. "m",
[14] = stem .. (addj and "j" or "") .. "u",
[15] = lemma .. "mi",
[16] = (ending == "i" and not soft) and (stem .. "ej") or nil,
[17] = stem .. (addj and "j" or "") .. "oh",
[18] = stem .. (addj and "j" or "") .. "om",
}
end
function export.show(frame)
local title = mw.title.getCurrentTitle()
local pargs = frame:getParent().args
local lemma = frame.args[1] or pargs[1]; if lemma == "" then lemma = nil end
lemma = lemma or (title.namespace == 0 and title.text) or (title.nsText == "テンプレート" and "tuni")
local declinfo = autoinflect(lemma, pargs) or error(("No declension pattern matches "%s""):format(lemma))
return frame:expandTemplate{ title = "hsb-decl-adj", args = declinfo }
end
return export