মডিউল:cel-adjectives
অবয়ব
এই মডিউলের জন্য মডিউল:cel-adjectives/নথি-এ নথিপত্র তৈরি করা হয়ে থাকতে পারে
local m_utilities = require("Module:utilities")
local m_links = require("Module:links")
local export = {}
local lang = require("Module:languages").getByCode("cel-pro")
local function postprocess(args, data)
-- Nothing here yet
end
-- Inflection functions
export["o+a"] = function(frame)
local params = {
[1] = {required = true, default = "{{{1}}}"},
["nocomp"] = {required = false, default = "{{{nocomp|}}}"}
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local delabial = mw.ustring.gsub(args[1], "ʷ$", "")
local data = {forms = {}, info = "o/ā-stem", categories = {lang:getCanonicalName() .. " o/ā-stem adjectives"}}
data.forms["m_nom_sg"] = {args[1] .. "os"}
data.forms["m_voc_sg"] = {args[1] .. "e"}
data.forms["m_acc_sg"] = {args[1] .. "om"}
data.forms["m_gen_sg"] = {args[1] .. "ī"}
data.forms["m_dat_sg"] = {delabial .. "ūi"}
data.forms["m_ins_sg"] = {delabial .. "ū"}
data.forms["m_nom_du"] = {args[1] .. "ou"}
data.forms["m_voc_du"] = {args[1] .. "ou"}
data.forms["m_acc_du"] = {args[1] .. "ou"}
data.forms["m_gen_du"] = {args[1] .. "ous"}
data.forms["m_dat_du"] = {args[1] .. "obom"}
data.forms["m_ins_du"] = {args[1] .. "obim"}
data.forms["m_nom_pl"] = {args[1] .. "oi"}
data.forms["m_voc_pl"] = {args[1] .. "oi"}
data.forms["m_acc_pl"] = {args[1] .. "ons"}
data.forms["m_gen_pl"] = {args[1] .. "om"}
data.forms["m_dat_pl"] = {args[1] .. "obos"}
data.forms["m_ins_pl"] = {args[1] .. "obis"}
data.forms["f_nom_sg"] = {args[1] .. "ā"}
data.forms["f_voc_sg"] = {args[1] .. "ā"}
data.forms["f_acc_sg"] = {args[1] .. "am"}
data.forms["f_gen_sg"] = {args[1] .. "ās"}
data.forms["f_dat_sg"] = {args[1] .. "ai"}
data.forms["f_ins_sg"] = {"?"}
data.forms["f_nom_du"] = {args[1] .. "ai"}
data.forms["f_voc_du"] = {args[1] .. "ai"}
data.forms["f_acc_du"] = {args[1] .. "ai"}
data.forms["f_gen_du"] = {args[1] .. "ous"}
data.forms["f_dat_du"] = {args[1] .. "ābom"}
data.forms["f_ins_du"] = {args[1] .. "ābim"}
data.forms["f_nom_pl"] = {args[1] .. "ās"}
data.forms["f_voc_pl"] = {args[1] .. "ās"}
data.forms["f_acc_pl"] = {args[1] .. "ans"}
data.forms["f_gen_pl"] = {args[1] .. "om"}
data.forms["f_dat_pl"] = {args[1] .. "ābos"}
data.forms["f_ins_pl"] = {args[1] .. "ābis"}
data.forms["n_nom_sg"] = {args[1] .. "om"}
data.forms["n_voc_sg"] = {args[1] .. "om"}
data.forms["n_acc_sg"] = {args[1] .. "om"}
data.forms["n_gen_sg"] = {args[1] .. "ī"}
data.forms["n_dat_sg"] = {delabial .. "ūi"}
data.forms["n_ins_sg"] = {delabial .. "ū"}
data.forms["n_nom_du"] = {args[1] .. "ou"}
data.forms["n_voc_du"] = {args[1] .. "ou"}
data.forms["n_acc_du"] = {args[1] .. "ou"}
data.forms["n_gen_du"] = {args[1] .. "ous"}
data.forms["n_dat_du"] = {args[1] .. "obom"}
data.forms["n_ins_du"] = {args[1] .. "obim"}
data.forms["n_nom_pl"] = {args[1] .. "ā"}
data.forms["n_voc_pl"] = {args[1] .. "ā"}
data.forms["n_acc_pl"] = {args[1] .. "ā"}
data.forms["n_gen_pl"] = {args[1] .. "om"}
data.forms["n_dat_pl"] = {args[1] .. "obos"}
data.forms["n_ins_pl"] = {args[1] .. "obis"}
postprocess(args, data)
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
export["ptcp"] = function(frame)
local params = {
[1] = {allow_holes = true},
[2] = {allow_holes = true},
[3] = {allow_holes = true},
[4] = {default = "{{{4}}}"},
[5] = {allow_holes = true},
["v"] = {allow_holes = true},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local delabial = mw.ustring.gsub(args[4], "ʷ$", "")
local data = {forms = {}, info = "Declension of the past participle"}
data.forms["m_nom_sg"] = {args[4] .. "os"}
data.forms["m_voc_sg"] = {args[4] .. "e"}
data.forms["m_acc_sg"] = {args[4] .. "om"}
data.forms["m_gen_sg"] = {args[4] .. "ī"}
data.forms["m_dat_sg"] = {delabial .. "ūi"}
data.forms["m_ins_sg"] = {delabial .. "ū"}
data.forms["m_nom_du"] = {args[4] .. "ou"}
data.forms["m_voc_du"] = {args[4] .. "ou"}
data.forms["m_acc_du"] = {args[4] .. "ou"}
data.forms["m_gen_du"] = {args[4] .. "ous"}
data.forms["m_dat_du"] = {args[4] .. "obom"}
data.forms["m_ins_du"] = {args[4] .. "obim"}
data.forms["m_nom_pl"] = {args[4] .. "oi"}
data.forms["m_voc_pl"] = {args[4] .. "oi"}
data.forms["m_acc_pl"] = {args[4] .. "ons"}
data.forms["m_gen_pl"] = {args[4] .. "om"}
data.forms["m_dat_pl"] = {args[4] .. "obos"}
data.forms["m_ins_pl"] = {args[4] .. "obis"}
data.forms["f_nom_sg"] = {args[4] .. "ā"}
data.forms["f_voc_sg"] = {args[4] .. "ā"}
data.forms["f_acc_sg"] = {args[4] .. "am"}
data.forms["f_gen_sg"] = {args[4] .. "ās"}
data.forms["f_dat_sg"] = {args[4] .. "ai"}
data.forms["f_ins_sg"] = {"?"}
data.forms["f_nom_du"] = {args[4] .. "ai"}
data.forms["f_voc_du"] = {args[4] .. "ai"}
data.forms["f_acc_du"] = {args[4] .. "ai"}
data.forms["f_gen_du"] = {args[4] .. "ous"}
data.forms["f_dat_du"] = {args[4] .. "ābom"}
data.forms["f_ins_du"] = {args[4] .. "ābim"}
data.forms["f_nom_pl"] = {args[4] .. "ās"}
data.forms["f_voc_pl"] = {args[4] .. "ās"}
data.forms["f_acc_pl"] = {args[4] .. "ans"}
data.forms["f_gen_pl"] = {args[4] .. "om"}
data.forms["f_dat_pl"] = {args[4] .. "ābos"}
data.forms["f_ins_pl"] = {args[4] .. "ābis"}
data.forms["n_nom_sg"] = {args[4] .. "om"}
data.forms["n_voc_sg"] = {args[4] .. "om"}
data.forms["n_acc_sg"] = {args[4] .. "om"}
data.forms["n_gen_sg"] = {args[4] .. "ī"}
data.forms["n_dat_sg"] = {delabial .. "ūi"}
data.forms["n_ins_sg"] = {delabial .. "ū"}
data.forms["n_nom_du"] = {args[4] .. "ou"}
data.forms["n_voc_du"] = {args[4] .. "ou"}
data.forms["n_acc_du"] = {args[4] .. "ou"}
data.forms["n_gen_du"] = {args[4] .. "ous"}
data.forms["n_dat_du"] = {args[4] .. "obom"}
data.forms["n_ins_du"] = {args[4] .. "obim"}
data.forms["n_nom_pl"] = {args[4] .. "ā"}
data.forms["n_voc_pl"] = {args[4] .. "ā"}
data.forms["n_acc_pl"] = {args[4] .. "ā"}
data.forms["n_gen_pl"] = {args[4] .. "om"}
data.forms["n_dat_pl"] = {args[4] .. "obos"}
data.forms["n_ins_pl"] = {args[4] .. "obis"}
postprocess(args, data)
return make_table(data)
end
export["midptcp"] = function(frame)
local params = {
[1] = {default = "{{{1}}}"},
[2] = {allow_holes = true},
[3] = {allow_holes = true},
[4] = {allow_holes = true},
[5] = {allow_holes = true},
["v"] = {allow_holes = true},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
-- Thematic verbs
if mw.ustring.find(args[1], "e$") then
stem = mw.ustring.gsub(args[1], "e$", "omn")
-- Simple a-athematic and A I verbs
elseif mw.ustring.find(args[1], "[aā]$") then
stem = mw.ustring.gsub(args[1], "[aā]$", "amn")
-- A II causative/iterative verbs
elseif mw.ustring.find(args[1], "ī$") then
stem = mw.ustring.gsub(args[1], "ī$", "eyomn")
-- Set-root ablauting athematic verbs
elseif mw.ustring.find(args[1], "<h%d>$") then
stem = mw.ustring.gsub(args[1], ".<h%d>$", "amn")
-- Various irregular cases
elseif mw.ustring.find(args[1], "esē$") then return
elseif mw.ustring.find(args[1], "ed$") then
stem = "damn"
elseif mw.ustring.find(args[1], "<h2e>$") then
stem = mw.ustring.gsub(args[1], "<h2e>$", "omn")
-- Miscellaneous athematic presents
elseif mw.ustring.find(args[1], "[iu]") then
stem = args[1] .. "mn"
end
local data = {forms = {}, info = "Declension of the middle participle"}
data.forms["m_nom_sg"] = {stem .. "os"}
data.forms["m_voc_sg"] = {stem .. "e"}
data.forms["m_acc_sg"] = {stem .. "om"}
data.forms["m_gen_sg"] = {stem .. "ī"}
data.forms["m_dat_sg"] = {stem .. "ūi"}
data.forms["m_ins_sg"] = {stem .. "ū"}
data.forms["m_nom_du"] = {stem .. "ou"}
data.forms["m_voc_du"] = {stem .. "ou"}
data.forms["m_acc_du"] = {stem .. "ou"}
data.forms["m_gen_du"] = {stem .. "ous"}
data.forms["m_dat_du"] = {stem .. "obom"}
data.forms["m_ins_du"] = {stem .. "obim"}
data.forms["m_nom_pl"] = {stem .. "oi"}
data.forms["m_voc_pl"] = {stem .. "oi"}
data.forms["m_acc_pl"] = {stem .. "ons"}
data.forms["m_gen_pl"] = {stem .. "om"}
data.forms["m_dat_pl"] = {stem .. "obos"}
data.forms["m_ins_pl"] = {stem .. "obis"}
data.forms["f_nom_sg"] = {stem .. "ā"}
data.forms["f_voc_sg"] = {stem .. "ā"}
data.forms["f_acc_sg"] = {stem .. "am"}
data.forms["f_gen_sg"] = {stem .. "ās"}
data.forms["f_dat_sg"] = {stem .. "ai"}
data.forms["f_ins_sg"] = {"?"}
data.forms["f_nom_du"] = {stem .. "ai"}
data.forms["f_voc_du"] = {stem .. "ai"}
data.forms["f_acc_du"] = {stem .. "ai"}
data.forms["f_gen_du"] = {stem .. "ous"}
data.forms["f_dat_du"] = {stem .. "ābom"}
data.forms["f_ins_du"] = {stem .. "ābim"}
data.forms["f_nom_pl"] = {stem .. "ās"}
data.forms["f_voc_pl"] = {stem .. "ās"}
data.forms["f_acc_pl"] = {stem .. "ans"}
data.forms["f_gen_pl"] = {stem .. "om"}
data.forms["f_dat_pl"] = {stem .. "ābos"}
data.forms["f_ins_pl"] = {stem .. "ābis"}
data.forms["n_nom_sg"] = {stem .. "om"}
data.forms["n_voc_sg"] = {stem .. "om"}
data.forms["n_acc_sg"] = {stem .. "om"}
data.forms["n_gen_sg"] = {stem .. "ī"}
data.forms["n_dat_sg"] = {stem .. "ūi"}
data.forms["n_ins_sg"] = {stem .. "ū"}
data.forms["n_nom_du"] = {stem .. "ou"}
data.forms["n_voc_du"] = {stem .. "ou"}
data.forms["n_acc_du"] = {stem .. "ou"}
data.forms["n_gen_du"] = {stem .. "ous"}
data.forms["n_dat_du"] = {stem .. "obom"}
data.forms["n_ins_du"] = {stem .. "obim"}
data.forms["n_nom_pl"] = {stem .. "ā"}
data.forms["n_voc_pl"] = {stem .. "ā"}
data.forms["n_acc_pl"] = {stem .. "ā"}
data.forms["n_gen_pl"] = {stem .. "om"}
data.forms["n_dat_pl"] = {stem .. "obos"}
data.forms["n_ins_pl"] = {stem .. "obis"}
postprocess(args, data)
return make_table(data)
end
export["prespart"] = function(frame)
local params = {
[1] = {default = "{{{1}}}"},
[2] = {allow_holes = true},
[3] = {allow_holes = true},
[4] = {allow_holes = true},
[5] = {allow_holes = true},
["v"] = {allow_holes = true},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
-- Thematic verbs
if mw.ustring.find(args[1], "e$") then
stem_o = mw.ustring.gsub(args[1], "e$", "o")
stem_a = mw.ustring.gsub(args[1], "e$", "")
-- Simple a-athematic and A I verbs
elseif mw.ustring.find(args[1], "[aā]$") then
stem_a = mw.ustring.gsub(args[1], "[aā]$", "")
stem_o = stem_a .. "a"
-- A II causative/iterative verbs
elseif mw.ustring.find(args[1], "ī$") then
stem_a = mw.ustring.gsub(args[1], "ī$", "ey")
stem_o = stem_a .. "o"
-- Set-root ablauting athematic verbs
elseif mw.ustring.find(args[1], "<h%d>$") then
stem_a = mw.ustring.gsub(args[1], ".<h%d>$", "")
stem_o = stem_a .. "o"
-- Various irregular cases
elseif mw.ustring.find(args[1], "esē$") then
stem_a = "s"
stem_o = stem_a .. "o"
elseif mw.ustring.find(args[1], "ed$") then
stem_a = "d"
stem_o = stem_a .. "o"
elseif mw.ustring.find(args[1], "<h2e>$") then
stem_a = mw.ustring.gsub(args[1], "<h2e>$", "")
stem_o = stem_a .. "o"
-- Miscellaneous athematic presents
elseif mw.ustring.find(args[1], "[iu]") then
stem_a = mw.ustring.gsub(args[1], "[iu]$", {["u"] = "w", ["i"] = "y"})
stem_o = stem_a .. "o"
end
local data = {forms = {}, info = "Declension of the present participle"}
data.forms["m_nom_sg"] = {stem_o .. "nts"}
data.forms["m_voc_sg"] = {stem_o .. "nts"}
data.forms["m_acc_sg"] = {stem_o .. "ntam"}
data.forms["m_gen_sg"] = {stem_a .. "antos"}
data.forms["m_dat_sg"] = {stem_a .. "antei"}
data.forms["m_ins_sg"] = {stem_a .. "antī?"}
data.forms["m_nom_du"] = {stem_o .. "nte"}
data.forms["m_voc_du"] = {stem_o .. "nte"}
data.forms["m_acc_du"] = {stem_o .. "nte"}
data.forms["m_gen_du"] = {"?"}
data.forms["m_dat_du"] = {stem_a .. "antbom"}
data.forms["m_ins_du"] = {stem_a .. "antbim"}
data.forms["m_nom_pl"] = {stem_o .. "ntes"}
data.forms["m_voc_pl"] = {stem_o .. "ntes"}
data.forms["m_acc_pl"] = {stem_o .. "ntans"}
data.forms["m_gen_pl"] = {stem_a .. "antom"}
data.forms["m_dat_pl"] = {stem_a .. "antbos"}
data.forms["m_ins_pl"] = {stem_a .. "antbis"}
data.forms["f_nom_sg"] = {stem_a .. "antī"}
data.forms["f_voc_sg"] = {stem_a .. "antī"}
data.forms["f_acc_sg"] = {stem_a .. "antīm"}
data.forms["f_gen_sg"] = {stem_a .. "antyās"}
data.forms["f_dat_sg"] = {stem_a .. "antyāi"}
data.forms["f_ins_sg"] = {"?"}
data.forms["f_nom_du"] = {stem_a .. "antī"}
data.forms["f_voc_du"] = {stem_a .. "antī"}
data.forms["f_acc_du"] = {stem_a .. "antī"}
data.forms["f_gen_du"] = {"?"}
data.forms["f_dat_du"] = {stem_a .. "antyābom"}
data.forms["f_ins_du"] = {stem_a .. "antyābim"}
data.forms["f_nom_pl"] = {stem_a .. "antiyās"}
data.forms["f_voc_pl"] = {stem_a .. "antiyās"}
data.forms["f_acc_pl"] = {stem_a .. "antiyans"}
data.forms["f_gen_pl"] = {stem_a .. "antyom"}
data.forms["f_dat_pl"] = {stem_a .. "antyābos"}
data.forms["f_ins_pl"] = {stem_a .. "antyābis"}
data.forms["n_nom_sg"] = {stem_o .. "nt"}
data.forms["n_voc_sg"] = {stem_o .. "nt"}
data.forms["n_acc_sg"] = {stem_o .. "nt"}
data.forms["n_gen_sg"] = {stem_a .. "antos"}
data.forms["n_dat_sg"] = {stem_a .. "antei"}
data.forms["n_ins_sg"] = {stem_a .. "antī?"}
data.forms["n_nom_du"] = {"?"}
data.forms["n_voc_du"] = {"?"}
data.forms["n_acc_du"] = {"?"}
data.forms["n_gen_du"] = {"?"}
data.forms["n_dat_du"] = {"?"}
data.forms["n_ins_du"] = {"?"}
data.forms["n_nom_pl"] = {stem_o .. "nta"}
data.forms["n_voc_pl"] = {stem_o .. "nta"}
data.forms["n_acc_pl"] = {stem_o .. "nta"}
data.forms["n_gen_pl"] = {stem_a .. "antom"}
data.forms["n_dat_pl"] = {stem_a .. "antbos"}
data.forms["n_ins_pl"] = {stem_a .. "antbis"}
postprocess(args, data)
return make_table(data)
end
export["i"] = function(frame)
local params = {
[1] = {required = true, default = "{{{1}}}"},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local data = {forms = {}, info = "i-stem", categories = {lang:getCanonicalName() .. " i-stem adjectives"}}
data.forms["m_nom_sg"] = {args[1] .. "is"}
data.forms["m_voc_sg"] = {args[1] .. "i"}
data.forms["m_acc_sg"] = {args[1] .. "im"}
data.forms["m_gen_sg"] = {args[1] .. "eis"}
data.forms["m_dat_sg"] = {args[1] .. "ei"}
data.forms["m_ins_sg"] = {args[1] .. "ī"}
data.forms["m_nom_du"] = {args[1] .. "ī"}
data.forms["m_voc_du"] = {args[1] .. "ī"}
data.forms["m_acc_du"] = {args[1] .. "ī"}
data.forms["m_gen_du"] = {args[1] .. "you"}
data.forms["m_dat_du"] = {args[1] .. "ibom"}
data.forms["m_ins_du"] = {args[1] .. "ibim"}
data.forms["m_nom_pl"] = {args[1] .. "īs"}
data.forms["m_voc_pl"] = {args[1] .. "īs"}
data.forms["m_acc_pl"] = {args[1] .. "ins"}
data.forms["m_gen_pl"] = {args[1] .. "yom"}
data.forms["m_dat_pl"] = {args[1] .. "ibos"}
data.forms["m_ins_pl"] = {args[1] .. "ibis"}
data.forms["f_nom_sg"] = {args[1] .. "is"}
data.forms["f_voc_sg"] = {args[1] .. "i"}
data.forms["f_acc_sg"] = {args[1] .. "im"}
data.forms["f_gen_sg"] = {args[1] .. "eis"}
data.forms["f_dat_sg"] = {args[1] .. "ei"}
data.forms["f_ins_sg"] = {args[1] .. "ī"}
data.forms["f_nom_du"] = {args[1] .. "ī"}
data.forms["f_voc_du"] = {args[1] .. "ī"}
data.forms["f_acc_du"] = {args[1] .. "ī"}
data.forms["f_gen_du"] = {args[1] .. "you"}
data.forms["f_dat_du"] = {args[1] .. "ibom"}
data.forms["f_ins_du"] = {args[1] .. "ibim"}
data.forms["f_nom_pl"] = {args[1] .. "īs"}
data.forms["f_voc_pl"] = {args[1] .. "īs"}
data.forms["f_acc_pl"] = {args[1] .. "ins"}
data.forms["f_gen_pl"] = {args[1] .. "yom"}
data.forms["f_dat_pl"] = {args[1] .. "ibos"}
data.forms["f_ins_pl"] = {args[1] .. "ibis"}
data.forms["n_nom_sg"] = {args[1] .. "i"}
data.forms["n_voc_sg"] = {args[1] .. "i"}
data.forms["n_acc_sg"] = {args[1] .. "i"}
data.forms["n_gen_sg"] = {args[1] .. "ois"}
data.forms["n_dat_sg"] = {args[1] .. "ei"}
data.forms["n_ins_sg"] = {args[1] .. "ī"}
data.forms["n_nom_du"] = {args[1] .. "ī"}
data.forms["n_voc_du"] = {args[1] .. "ī"}
data.forms["n_acc_du"] = {args[1] .. "ī"}
data.forms["n_gen_du"] = {args[1] .. "ois"}
data.forms["n_dat_du"] = {args[1] .. "ibom"}
data.forms["n_ins_du"] = {args[1] .. "ibim"}
data.forms["n_nom_pl"] = {args[1] .. "yā"}
data.forms["n_voc_pl"] = {args[1] .. "yā"}
data.forms["n_acc_pl"] = {args[1] .. "yā"}
data.forms["n_gen_pl"] = {args[1] .. "yom"}
data.forms["n_dat_pl"] = {args[1] .. "ibos"}
data.forms["n_ins_pl"] = {args[1] .. "ibis"}
postprocess(args, data)
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
export["u"] = function(frame)
local params = {
[1] = {required = true, default = "{{{1}}}"},
[2] = {required = false}
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local data = {forms = {}, info = "u-stem", categories = {lang:getCanonicalName() .. " u-stem adjectives"}}
data.forms["m_nom_sg"] = {args[1] .. "us"}
data.forms["m_voc_sg"] = {args[1] .. "u"}
data.forms["m_acc_sg"] = {args[1] .. "um"}
data.forms["m_gen_sg"] = {(args[2] or args[1]) .. "ous"}
data.forms["m_dat_sg"] = {(args[2] or args[1]) .. "ou"}
data.forms["m_ins_sg"] = {(args[2] or args[1]) .. "ū"}
data.forms["m_nom_du"] = {args[1] .. "ū"}
data.forms["m_voc_du"] = {args[1] .. "ū"}
data.forms["m_acc_du"] = {args[1] .. "ū"}
data.forms["m_gen_du"] = {(args[2] or args[1]) .. "ous"}
data.forms["m_dat_du"] = {(args[2] or args[1]) .. "ubom"}
data.forms["m_ins_du"] = {(args[2] or args[1]) .. "ubim"}
data.forms["m_nom_pl"] = {args[1] .. "owes"}
data.forms["m_voc_pl"] = {args[1] .. "ūs"}
data.forms["m_acc_pl"] = {args[1] .. "uns"}
data.forms["m_gen_pl"] = {(args[2] or args[1]) .. "owom"}
data.forms["m_dat_pl"] = {(args[2] or args[1]) .. "ubos"}
data.forms["m_ins_pl"] = {(args[2] or args[1]) .. "ubis"}
data.forms["f_nom_sg"] = {args[1] .. "us"}
data.forms["f_voc_sg"] = {args[1] .. "u"}
data.forms["f_acc_sg"] = {args[1] .. "um"}
data.forms["f_gen_sg"] = {(args[2] or args[1]) .. "ous"}
data.forms["f_dat_sg"] = {(args[2] or args[1]) .. "ou"}
data.forms["f_ins_sg"] = {(args[2] or args[1]) .. "ū"}
data.forms["f_nom_du"] = {args[1] .. "ū"}
data.forms["f_voc_du"] = {args[1] .. "ū"}
data.forms["f_acc_du"] = {args[1] .. "ū"}
data.forms["f_gen_du"] = {(args[2] or args[1]) .. "ous"}
data.forms["f_dat_du"] = {(args[2] or args[1]) .. "ubom"}
data.forms["f_ins_du"] = {(args[2] or args[1]) .. "ubim"}
data.forms["f_nom_pl"] = {args[1] .. "owes"}
data.forms["f_voc_pl"] = {args[1] .. "ūs"}
data.forms["f_acc_pl"] = {args[1] .. "uns"}
data.forms["f_gen_pl"] = {(args[2] or args[1]) .. "owom"}
data.forms["f_dat_pl"] = {(args[2] or args[1]) .. "ubos"}
data.forms["f_ins_pl"] = {(args[2] or args[1]) .. "ubis"}
data.forms["n_nom_sg"] = {args[1] .. "u"}
data.forms["n_voc_sg"] = {args[1] .. "u"}
data.forms["n_acc_sg"] = {args[1] .. "u"}
data.forms["n_gen_sg"] = {(args[2] or args[1]) .. "ous"}
data.forms["n_dat_sg"] = {(args[2] or args[1]) .. "ou"}
data.forms["n_ins_sg"] = {(args[2] or args[1]) .. "ū"}
data.forms["n_nom_du"] = {args[1] .. "ū"}
data.forms["n_voc_du"] = {args[1] .. "ū"}
data.forms["n_acc_du"] = {args[1] .. "ū"}
data.forms["n_gen_du"] = {(args[2] or args[1]) .. "ous"}
data.forms["n_dat_du"] = {(args[2] or args[1]) .. "ubom"}
data.forms["n_ins_du"] = {(args[2] or args[1]) .. "ubim"}
data.forms["n_nom_pl"] = {args[1] .. "wā"}
data.forms["n_voc_pl"] = {args[1] .. "wā"}
data.forms["n_acc_pl"] = {args[1] .. "wā"}
data.forms["n_gen_pl"] = {(args[2] or args[1]) .. "owom"}
data.forms["n_dat_pl"] = {(args[2] or args[1]) .. "ubos"}
data.forms["n_ins_pl"] = {(args[2] or args[1]) .. "ubis"}
postprocess(args, data)
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
export["i"] = function(frame)
local params = {
[1] = {required = true, default = "{{{1}}}"},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local data = {forms = {}, info = "i-stem", categories = {lang:getCanonicalName() .. " i-stem adjectives"}}
data.forms["m_nom_sg"] = {args[1] .. "is"}
data.forms["m_voc_sg"] = {args[1] .. "i"}
data.forms["m_acc_sg"] = {args[1] .. "im"}
data.forms["m_gen_sg"] = {args[1] .. "eis"}
data.forms["m_dat_sg"] = {args[1] .. "ei"}
data.forms["m_ins_sg"] = {args[1] .. "ī"}
data.forms["m_nom_du"] = {args[1] .. "ī"}
data.forms["m_voc_du"] = {args[1] .. "ī"}
data.forms["m_acc_du"] = {args[1] .. "ī"}
data.forms["m_gen_du"] = {args[1] .. "you"}
data.forms["m_dat_du"] = {args[1] .. "ibom"}
data.forms["m_ins_du"] = {args[1] .. "ibim"}
data.forms["m_nom_pl"] = {args[1] .. "īs"}
data.forms["m_voc_pl"] = {args[1] .. "īs"}
data.forms["m_acc_pl"] = {args[1] .. "ins"}
data.forms["m_gen_pl"] = {args[1] .. "yom"}
data.forms["m_dat_pl"] = {args[1] .. "ibos"}
data.forms["m_ins_pl"] = {args[1] .. "ibis"}
data.forms["f_nom_sg"] = {args[1] .. "is"}
data.forms["f_voc_sg"] = {args[1] .. "i"}
data.forms["f_acc_sg"] = {args[1] .. "im"}
data.forms["f_gen_sg"] = {args[1] .. "eis"}
data.forms["f_dat_sg"] = {args[1] .. "ei"}
data.forms["f_ins_sg"] = {args[1] .. "ī"}
data.forms["f_nom_du"] = {args[1] .. "ī"}
data.forms["f_voc_du"] = {args[1] .. "ī"}
data.forms["f_acc_du"] = {args[1] .. "ī"}
data.forms["f_gen_du"] = {args[1] .. "you"}
data.forms["f_dat_du"] = {args[1] .. "ibom"}
data.forms["f_ins_du"] = {args[1] .. "ibim"}
data.forms["f_nom_pl"] = {args[1] .. "īs"}
data.forms["f_voc_pl"] = {args[1] .. "īs"}
data.forms["f_acc_pl"] = {args[1] .. "ins"}
data.forms["f_gen_pl"] = {args[1] .. "yom"}
data.forms["f_dat_pl"] = {args[1] .. "ibos"}
data.forms["f_ins_pl"] = {args[1] .. "ibis"}
data.forms["n_nom_sg"] = {args[1] .. "i"}
data.forms["n_voc_sg"] = {args[1] .. "i"}
data.forms["n_acc_sg"] = {args[1] .. "i"}
data.forms["n_gen_sg"] = {args[1] .. "ois"}
data.forms["n_dat_sg"] = {args[1] .. "ē"}
data.forms["n_ins_sg"] = {args[1] .. "ī"}
data.forms["n_nom_du"] = {args[1] .. "ī"}
data.forms["n_voc_du"] = {args[1] .. "ī"}
data.forms["n_acc_du"] = {args[1] .. "ī"}
data.forms["n_gen_du"] = {args[1] .. "ois"}
data.forms["n_dat_du"] = {args[1] .. "ibom"}
data.forms["n_ins_du"] = {args[1] .. "ibim"}
data.forms["n_nom_pl"] = {args[1] .. "yā"}
data.forms["n_voc_pl"] = {args[1] .. "yā"}
data.forms["n_acc_pl"] = {args[1] .. "yā"}
data.forms["n_gen_pl"] = {args[1] .. "yom"}
data.forms["n_dat_pl"] = {args[1] .. "ibos"}
data.forms["n_ins_pl"] = {args[1] .. "ibis"}
postprocess(args, data)
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
export["comp"] = function(frame)
local params = {
[1] = {required = true, default = "{{{1}}}"},
["nocomp"] = {required = false, default = "{{{nocomp|}}}"}
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local data = {forms = {}, info = "Declension of the comparative"}
-- Reform duplicate -yy- in -yo/-ya adjectives; uncertain if it is the correct way.
local stem = args[1]
local stem2 = mw.ustring.gsub(stem, "y$", "")
data.forms["m_nom_sg"] = {stem2 .. "yūs"}
data.forms["m_voc_sg"] = {stem2 .. "yūs"}
data.forms["m_acc_sg"] = {stem2 .. "yosam"}
data.forms["m_gen_sg"] = {stem .. "isos"}
data.forms["m_dat_sg"] = {stem .. "isei"}
data.forms["m_ins_sg"] = {stem .. "isī"}
data.forms["m_nom_du"] = {"?"}
data.forms["m_voc_du"] = {"?"}
data.forms["m_acc_du"] = {"?"}
data.forms["m_gen_du"] = {"?"}
data.forms["m_dat_du"] = {"?"}
data.forms["m_ins_du"] = {"?"}
data.forms["m_nom_pl"] = {stem2 .. "yoses"}
data.forms["m_voc_pl"] = {stem2 .. "yoses"}
data.forms["m_acc_pl"] = {stem2 .. "yosans"}
data.forms["m_gen_pl"] = {stem .. "isom"}
data.forms["m_dat_pl"] = {stem .. "isbos"}
data.forms["m_ins_pl"] = {stem .. "isbis"}
data.forms["f_nom_sg"] = {stem2 .. "yūs"}
data.forms["f_voc_sg"] = {stem2 .. "yūs"}
data.forms["f_acc_sg"] = {stem2 .. "yosam"}
data.forms["f_gen_sg"] = {stem .. "isos"}
data.forms["f_dat_sg"] = {stem .. "isei"}
data.forms["f_ins_sg"] = {stem .. "isī"}
data.forms["f_nom_du"] = {"?"}
data.forms["f_voc_du"] = {"?"}
data.forms["f_acc_du"] = {"?"}
data.forms["f_gen_du"] = {"?"}
data.forms["f_dat_du"] = {"?"}
data.forms["f_ins_du"] = {"?"}
data.forms["f_nom_pl"] = {stem2 .. "yoses"}
data.forms["f_voc_pl"] = {stem2 .. "yoses"}
data.forms["f_acc_pl"] = {stem2 .. "yosans"}
data.forms["f_gen_pl"] = {stem .. "isom"}
data.forms["f_dat_pl"] = {stem .. "isbos"}
data.forms["f_ins_pl"] = {stem .. "isbis"}
data.forms["n_nom_sg"] = {stem .. "is"}
data.forms["n_voc_sg"] = {stem .. "is"}
data.forms["n_acc_sg"] = {stem .. "is"}
data.forms["n_gen_sg"] = {stem .. "isos"}
data.forms["n_dat_sg"] = {stem .. "isei"}
data.forms["n_ins_sg"] = {stem .. "isī"}
data.forms["n_nom_du"] = {"?"}
data.forms["n_voc_du"] = {"?"}
data.forms["n_acc_du"] = {"?"}
data.forms["n_gen_du"] = {"?"}
data.forms["n_dat_du"] = {"?"}
data.forms["n_ins_du"] = {"?"}
data.forms["n_nom_pl"] = {"?"}
data.forms["n_voc_pl"] = {"?"}
data.forms["n_acc_pl"] = {"?"}
data.forms["n_gen_pl"] = {stem .. "isom"}
data.forms["n_dat_pl"] = {stem .. "isbos"}
data.forms["n_ins_pl"] = {stem .. "isbis"}
postprocess(args, data)
return make_table(data)
end
-- Custom declension for sindos; according to Schrijver and Jasanoff, sindom was not used in the neuter singular and genitive plural; instead respectively sosim/sinde and sindoisom were used
export["sindos"] = function(frame)
local params = {
[1] = {required = true, default = "{{{1}}}"},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local delabial = mw.ustring.gsub(args[1], "ʷ$", "")
local data = {forms = {}, info = "irregular", categories = {lang:getCanonicalName() .. " irregular determiners"}}
data.forms["m_nom_sg"] = {args[1] .. "os"}
data.forms["m_voc_sg"] = {args[1] .. "e"}
data.forms["m_acc_sg"] = {args[1] .. "om"}
data.forms["m_gen_sg"] = {args[1] .. "ī"}
data.forms["m_dat_sg"] = {delabial .. "ūi"}
data.forms["m_ins_sg"] = {delabial .. "ū"}
data.forms["m_nom_du"] = {args[1] .. "ou"}
data.forms["m_voc_du"] = {args[1] .. "ou"}
data.forms["m_acc_du"] = {args[1] .. "ou"}
data.forms["m_gen_du"] = {args[1] .. "ous"}
data.forms["m_dat_du"] = {args[1] .. "obom"}
data.forms["m_ins_du"] = {args[1] .. "obim"}
data.forms["m_nom_pl"] = {args[1] .. "oi"}
data.forms["m_voc_pl"] = {delabial .. "ūs"}
data.forms["m_acc_pl"] = {delabial .. "ons"}
data.forms["m_gen_pl"] = {args[1] .. "oisom"}
data.forms["m_dat_pl"] = {args[1] .. "obos"}
data.forms["m_ins_pl"] = {args[1] .. "obis"}
data.forms["f_nom_sg"] = {args[1] .. "ā"}
data.forms["f_voc_sg"] = {args[1] .. "ā"}
data.forms["f_acc_sg"] = {args[1] .. "am"}
data.forms["f_gen_sg"] = {args[1] .. "ās"}
data.forms["f_dat_sg"] = {args[1] .. "ai"}
data.forms["f_ins_sg"] = {"?"}
data.forms["f_nom_du"] = {args[1] .. "ai"}
data.forms["f_voc_du"] = {args[1] .. "ai"}
data.forms["f_acc_du"] = {args[1] .. "ai"}
data.forms["f_gen_du"] = {args[1] .. "ous"}
data.forms["f_dat_du"] = {args[1] .. "ābom"}
data.forms["f_ins_du"] = {args[1] .. "ābim"}
data.forms["f_nom_pl"] = {args[1] .. "ās"}
data.forms["f_voc_pl"] = {args[1] .. "ās"}
data.forms["f_acc_pl"] = {args[1] .. "ans"}
data.forms["f_gen_pl"] = {args[1] .. "oisom"}
data.forms["f_dat_pl"] = {args[1] .. "ābos"}
data.forms["f_ins_pl"] = {args[1] .. "ābis"}
data.forms["n_nom_sg"] = {"sosim, sinde"}
data.forms["n_voc_sg"] = {"sosim, sinde"}
data.forms["n_acc_sg"] = {"sosim, sinde"}
data.forms["n_gen_sg"] = {args[1] .. "ī"}
data.forms["n_dat_sg"] = {delabial .. "ūi"}
data.forms["n_ins_sg"] = {delabial .. "ū"}
data.forms["n_nom_du"] = {args[1] .. "ou"}
data.forms["n_voc_du"] = {args[1] .. "ou"}
data.forms["n_acc_du"] = {args[1] .. "ou"}
data.forms["n_gen_du"] = {args[1] .. "ous"}
data.forms["n_dat_du"] = {args[1] .. "obom"}
data.forms["n_ins_du"] = {args[1] .. "obim"}
data.forms["n_nom_pl"] = {args[1] .. "ā"}
data.forms["n_voc_pl"] = {args[1] .. "ā"}
data.forms["n_acc_pl"] = {args[1] .. "ā"}
data.forms["n_gen_pl"] = {args[1] .. "oisom"}
data.forms["n_dat_pl"] = {args[1] .. "obos"}
data.forms["n_ins_pl"] = {args[1] .. "obis"}
postprocess(args, data)
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
export["so"] = function(frame)
local params = {
[1] = {required = true, default = "{{{1}}}"},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
local data = {forms = {}, info = "irregular"}
data.forms["m_nom_sg"] = {args[1] .. "o"}
data.forms["m_voc_sg"] = {"?"}
data.forms["m_acc_sg"] = {args[1] .. "om"}
data.forms["m_gen_sg"] = {args[1] .. "osyo"}
data.forms["m_dat_sg"] = {args[1] .. "osmūi"}
data.forms["m_ins_sg"] = {"?"}
data.forms["m_nom_pl"] = {args[1] .. "oi"}
data.forms["m_voc_pl"] = {"?"}
data.forms["m_acc_pl"] = {args[1] .. "ons"}
data.forms["m_gen_pl"] = {args[1] .. "oisom"}
data.forms["m_dat_pl"] = {args[1] .. "oibos"}
data.forms["m_ins_pl"] = {args[1] .. "oibis"}
data.forms["f_nom_sg"] = {args[1] .. "ā"}
data.forms["f_voc_sg"] = {args[1] .. "ā"}
data.forms["f_acc_sg"] = {args[1] .. "ām"}
data.forms["f_gen_sg"] = {args[1] .. "osyās"}
data.forms["f_dat_sg"] = {args[1] .. "osmai"}
data.forms["f_ins_sg"] = {"?"}
data.forms["f_nom_pl"] = {args[1] .. "ās"}
data.forms["f_voc_pl"] = {args[1] .. "ās"}
data.forms["f_acc_pl"] = {args[1] .. "ans"}
data.forms["f_gen_pl"] = {args[1] .. "āsom"}
data.forms["f_dat_pl"] = {args[1] .. "ābos"}
data.forms["f_ins_pl"] = {args[1] .. "ābis"}
data.forms["n_nom_sg"] = {args[1] .. "od"}
data.forms["n_voc_sg"] = {args[1] .. "od"}
data.forms["n_acc_sg"] = {args[1] .. "od"}
data.forms["n_gen_sg"] = {args[1] .. "osyo"}
data.forms["n_dat_sg"] = {args[1] .. "osmūi"}
data.forms["n_ins_sg"] = {"?"}
data.forms["n_nom_pl"] = {args[1] .. "ā"}
data.forms["n_voc_pl"] = {args[1] .. "ā"}
data.forms["n_acc_pl"] = {args[1] .. "ā"}
data.forms["n_gen_pl"] = {args[1] .. "oisom"}
data.forms["n_dat_pl"] = {args[1] .. "oibos"}
data.forms["n_ins_pl"] = {args[1] .. "oibis"}
postprocess(args, data)
return make_table(data)
end
-- Cardinal numerals, each so irregular that each must be hardcoded apiece. *duwo inflection is due to McCone in Stair na Gaeilge
export["duwo"] = function(frame)
local data = {forms = {}, info = "irregular numeral", categories = {lang:getCanonicalName() .. " irregular numerals"}}
data.forms["m_nom_du"] = {"duwo"}
data.forms["m_voc_du"] = {"duwo"}
data.forms["m_acc_du"] = {"duwo"}
data.forms["m_gen_du"] = {"duwo"}
data.forms["m_dat_du"] = {"duwo"}
data.forms["m_ins_du"] = {"duwo"}
data.forms["f_nom_du"] = {"dwei"}
data.forms["f_voc_du"] = {"dwei"}
data.forms["f_acc_du"] = {"dwei"}
data.forms["f_gen_du"] = {"dwiyou"}
data.forms["f_dat_du"] = {"dwibom"}
data.forms["f_ins_du"] = {"dwibim"}
data.forms["n_nom_du"] = {"duwo"}
data.forms["n_voc_du"] = {"duwo"}
data.forms["n_acc_du"] = {"duwo"}
data.forms["n_gen_du"] = {"dwiyou"}
data.forms["n_dat_du"] = {"dwibom"}
data.forms["n_ins_du"] = {"dwibim"}
postprocess(args, data)
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
export["trīs"] = function(frame)
local data = {forms = {}, info = "irregular numeral", categories = {lang:getCanonicalName() .. " irregular numerals"}}
data.forms["m_nom_pl"] = {"trīs"}
data.forms["m_voc_pl"] = {"trīs"}
data.forms["m_acc_pl"] = {"trins"}
data.forms["m_gen_pl"] = {"triyom"}
data.forms["m_dat_pl"] = {"tribom"}
data.forms["m_ins_pl"] = {"tribim"}
data.forms["f_nom_pl"] = {"tisres"}
data.forms["f_voc_pl"] = {"tisres"}
data.forms["f_acc_pl"] = {"tisrans"}
data.forms["f_gen_pl"] = {"tisrom"}
data.forms["f_dat_pl"] = {"tisribom"}
data.forms["f_ins_pl"] = {"tisribim"}
data.forms["n_nom_pl"] = {"trī"}
data.forms["n_voc_pl"] = {"trī"}
data.forms["n_acc_pl"] = {"trī"}
data.forms["n_gen_pl"] = {"triyom"}
data.forms["n_dat_pl"] = {"tribom"}
data.forms["n_ins_pl"] = {"tribim"}
postprocess(args, data)
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
export["kʷetwores"] = function(frame)
local data = {forms = {}, info = "irregular numeral", categories = {lang:getCanonicalName() .. " irregular numerals"}}
data.forms["m_nom_pl"] = {"kʷetwores"}
data.forms["m_voc_pl"] = {"kʷetwores"}
data.forms["m_acc_pl"] = {"kʷetworans"}
data.forms["m_gen_pl"] = {"kʷeturiyom"}
data.forms["m_dat_pl"] = {"kʷeturibom"}
data.forms["m_ins_pl"] = {"kʷeturibim"}
data.forms["f_nom_pl"] = {"kʷetesres"}
data.forms["f_voc_pl"] = {"kʷetesres"}
data.forms["f_acc_pl"] = {"kʷetesrans"}
data.forms["f_gen_pl"] = {"kʷetesriyom"}
data.forms["f_dat_pl"] = {"kʷetesribom"}
data.forms["f_ins_pl"] = {"kʷetesribim"}
data.forms["n_nom_pl"] = {"?"}
data.forms["n_voc_pl"] = {"?"}
data.forms["n_acc_pl"] = {"?"}
data.forms["n_gen_pl"] = {"kʷeturiyom"}
data.forms["n_dat_pl"] = {"kʷeturibom"}
data.forms["n_ins_pl"] = {"kʷeturibim"}
postprocess(args, data)
return make_table(data) .. m_utilities.format_categories(data.categories, lang)
end
local names = {
["nom"] = "nominative",
["voc"] = "vocative",
["acc"] = "accusative",
["gen"] = "genitive",
["dat"] = "dative",
["ins"] = "instrumental",
["sg"] = "singular",
["du"] = "dual",
["pl"] = "plural",
["m"] = "masculine",
["f"] = "feminine",
["n"] = "neuter",
}
-- Make the table
function make_table(data)
local function repl(param)
if param == "info" then
return mw.getContentLanguage():ucfirst(data.info or "")
end
local form = data.forms[param]
if not form or #form == 0 then
return "—"
end
local ret = {}
for key, subform in ipairs(form) do
table.insert(ret, m_links.full_link({lang = lang, alt = "*" .. subform}))
end
return table.concat(ret, ", ")
end
local genders = {"m", "f", "n"}
local numbers = {"sg", "du", "pl"}
local cases = {"nom", "voc", "acc", "gen", "dat", "ins"}
local wikicode = {}
table.insert(wikicode, "{| class=\"inflection-table vsSwitcher\" data-toggle-category=\"inflection\" style=\"background: #FAFAFA; border: 1px solid #d0d0d0; text-align: left;\" cellspacing=\"1\" cellpadding=\"2\"")
table.insert(wikicode, "|- style=\"background: #CCCCFF;\"\n! class=\"vsToggleElement\" style=\"min-width: 41em;\" colspan=\"" .. (#numbers + 1) .. "\" | {{{info}}}")
for _, gender in ipairs(genders) do
table.insert(wikicode, "|- class=\"vsHide\" style=\"background: #CCCCFF;\"")
table.insert(wikicode, "! " .. names[gender])
for _, number in ipairs(numbers) do
table.insert(wikicode, "! style=\"min-width: 11em; background: #CCCCFF;\" | " .. names[number])
end
for _, case in ipairs(cases) do
table.insert(wikicode, "|- class=\"vsHide\" style=\"background-color: #F2F2FF;\"\n! style=\"min-width: 8em; background-color: #E6E6FF;\" | " .. names[case])
for _, number in ipairs(numbers) do
table.insert(wikicode, "| {{{" .. gender .. "_" .. case .. "_" .. number .. "}}}")
end
end
end
table.insert(wikicode, "|}")
wikicode = table.concat(wikicode, "\n")
return (mw.ustring.gsub(wikicode, "{{{([a-z0-9_]+)}}}", repl))
end
return export