![]() | We're back! Sorry, bad combo of sickness, funeral and a month-long trip abroad. The site is back now. ![]() |
Module:ibe-adjectives
Jump to navigation
Jump to search
Documentation for this module may be created at Module:ibe-adjectives/doc
local m_utilities = require("Module:utilities")
local m_links = require("Module:links")
local export = {}
local lang = require("Module:languages").getByCode("ibe-pro")
local function postprocess(args, data)
-- Nothing here yet
end
-- Inflection functions
export["o+a"] = function(frame)
local params = {
[1] = {required = true, default = "{{{1}}}"},
}
local args = require("Module:parameters").process(frame:getParent().args, params)
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] .. "osjo"}
data.forms["m_dat_sg"] = {args[1] .. "ō"}
data.forms["m_com_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] .. "ous"}
data.forms["m_dat_du"] = {args[1] .. "ovām"}
data.forms["m_com_du"] = {args[1] .. "ovām"}
data.forms["m_nom_pl"] = {args[1] .. "ōs"}
data.forms["m_voc_pl"] = {args[1] .. "ōs"}
data.forms["m_acc_pl"] = {args[1] .. "ons"}
data.forms["m_gen_pl"] = {args[1] .. "ōm"}
data.forms["m_dat_pl"] = {args[1] .. "ōis"}
data.forms["m_com_pl"] = {args[1] .. "ōis"}
data.forms["f_nom_sg"] = {args[1] .. "ā"}
data.forms["f_voc_sg"] = {args[1] .. "e"}
data.forms["f_acc_sg"] = {args[1] .. "ām"}
data.forms["f_gen_sg"] = {args[1] .. "ās"}
data.forms["f_dat_sg"] = {args[1] .. "āe"}
data.forms["f_com_sg"] = {args[1] .. "āē"}
data.forms["f_nom_du"] = {args[1] .. "aī"}
data.forms["f_voc_du"] = {args[1] .. "aī"}
data.forms["f_acc_du"] = {args[1] .. "aī"}
data.forms["f_gen_du"] = {args[1] .. "ous"}
data.forms["f_dat_du"] = {args[1] .. "āvām"}
data.forms["f_com_du"] = {args[1] .. "āvām"}
data.forms["f_nom_pl"] = {args[1] .. "ās"}
data.forms["f_voc_pl"] = {args[1] .. "ās"}
data.forms["f_acc_pl"] = {args[1] .. "āns"}
data.forms["f_gen_pl"] = {args[1] .. "om"}
data.forms["f_dat_pl"] = {args[1] .. "āvos"}
data.forms["f_com_pl"] = {args[1] .. "āvis"}
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] .. "osjo"}
data.forms["n_dat_sg"] = {args[1] .. "ō"}
data.forms["n_com_sg"] = {args[1] .. "ō"}
data.forms["n_nom_du"] = {args[1] .. "oī"}
data.forms["n_voc_du"] = {args[1] .. "oī"}
data.forms["n_acc_du"] = {args[1] .. "oī"}
data.forms["n_gen_du"] = {args[1] .. "ous"}
data.forms["n_dat_du"] = {args[1] .. "ovām"}
data.forms["n_com_du"] = {args[1] .. "ovām"}
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] .. "ōm"}
data.forms["n_dat_pl"] = {args[1] .. "ōis"}
data.forms["n_com_pl"] = {args[1] .. "ōis"}
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},
}
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] .. "osjo"}
data.forms["m_dat_sg"] = {args[4] .. "ō"}
data.forms["m_com_sg"] = {args[4] .. "ō"}
data.forms["m_nom_du"] = {args[4] .. "ō"}
data.forms["m_voc_du"] = {args[4] .. "ō"}
data.forms["m_acc_du"] = {args[4] .. "ō"}
data.forms["m_gen_du"] = {args[4] .. "ous"}
data.forms["m_dat_du"] = {args[4] .. "ovām"}
data.forms["m_com_du"] = {args[4] .. "ovām"}
data.forms["m_nom_pl"] = {args[4] .. "ōs"}
data.forms["m_voc_pl"] = {args[4] .. "ōs"}
data.forms["m_acc_pl"] = {args[4] .. "ons"}
data.forms["m_gen_pl"] = {args[4] .. "ōm"}
data.forms["m_dat_pl"] = {args[4] .. "ōis"}
data.forms["m_com_pl"] = {args[4] .. "ōis"}
data.forms["f_nom_sg"] = {args[4] .. "ā"}
data.forms["f_voc_sg"] = {args[4] .. "e"}
data.forms["f_acc_sg"] = {args[4] .. "ām"}
data.forms["f_gen_sg"] = {args[4] .. "ās"}
data.forms["f_dat_sg"] = {args[4] .. "āe"}
data.forms["f_com_sg"] = {args[4] .. "āē"}
data.forms["f_nom_du"] = {args[4] .. "aī"}
data.forms["f_voc_du"] = {args[4] .. "aī"}
data.forms["f_acc_du"] = {args[4] .. "aī"}
data.forms["f_gen_du"] = {args[4] .. "ous"}
data.forms["f_dat_du"] = {args[4] .. "āvām"}
data.forms["f_com_du"] = {args[4] .. "āvām"}
data.forms["f_nom_pl"] = {args[4] .. "ās"}
data.forms["f_voc_pl"] = {args[4] .. "ās"}
data.forms["f_acc_pl"] = {args[4] .. "āns"}
data.forms["f_gen_pl"] = {args[4] .. "om"}
data.forms["f_dat_pl"] = {args[4] .. "āvos"}
data.forms["f_com_pl"] = {args[4] .. "āvis"}
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] .. "osjo"}
data.forms["n_dat_sg"] = {args[4] .. "ō"}
data.forms["n_com_sg"] = {args[4] .. "ō"}
data.forms["n_nom_du"] = {args[4] .. "oī"}
data.forms["n_voc_du"] = {args[4] .. "oī"}
data.forms["n_acc_du"] = {args[4] .. "oī"}
data.forms["n_gen_du"] = {args[4] .. "ous"}
data.forms["n_dat_du"] = {args[4] .. "ovām"}
data.forms["n_com_du"] = {args[4] .. "ovām"}
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] .. "ōm"}
data.forms["n_dat_pl"] = {args[4] .. "ōis"}
data.forms["n_com_pl"] = {args[4] .. "ōis"}
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] .. "e"}
data.forms["m_acc_sg"] = {args[1] .. "im"}
data.forms["m_gen_sg"] = {args[1] .. "ois"}
data.forms["m_dat_sg"] = {args[1] .. "eie"}
data.forms["m_com_sg"] = {args[1] .. "iē"}
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] .. "jom"}
data.forms["m_dat_du"] = {args[1] .. "ivos"}
data.forms["m_com_du"] = {args[1] .. "ivis"}
data.forms["m_nom_pl"] = {args[1] .. "eies"}
data.forms["m_voc_pl"] = {args[1] .. "eies"}
data.forms["m_acc_pl"] = {args[1] .. "ins"}
data.forms["m_gen_pl"] = {args[1] .. "jom"}
data.forms["m_dat_pl"] = {args[1] .. "ivos"}
data.forms["m_com_pl"] = {args[1] .. "ivis"}
data.forms["f_nom_sg"] = {args[1] .. "is"}
data.forms["f_voc_sg"] = {args[1] .. "e"}
data.forms["f_acc_sg"] = {args[1] .. "im"}
data.forms["f_gen_sg"] = {args[1] .. "ois"}
data.forms["f_dat_sg"] = {args[1] .. "eie"}
data.forms["f_com_sg"] = {args[1] .. "iē"}
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] .. "jom"}
data.forms["f_dat_du"] = {args[1] .. "ivos"}
data.forms["f_com_du"] = {args[1] .. "ivis"}
data.forms["f_nom_pl"] = {args[1] .. "eies"}
data.forms["f_voc_pl"] = {args[1] .. "eies"}
data.forms["f_acc_pl"] = {args[1] .. "ins"}
data.forms["f_gen_pl"] = {args[1] .. "jom"}
data.forms["f_dat_pl"] = {args[1] .. "ivos"}
data.forms["f_com_pl"] = {args[1] .. "ivis"}
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] .. "eie"}
data.forms["n_com_sg"] = {args[1] .. "iē"}
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] .. "jom"}
data.forms["n_dat_du"] = {args[1] .. "ivos"}
data.forms["n_com_du"] = {args[1] .. "ivis"}
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] .. "jom"}
data.forms["n_dat_pl"] = {args[1] .. "ivos"}
data.forms["n_com_pl"] = {args[1] .. "ivis"}
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}}}"},
}
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[1] .. "eus"}
data.forms["m_dat_sg"] = {args[1] .. "ewei"}
data.forms["m_com_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] .. "ewom"}
data.forms["m_dat_du"] = {args[1] .. "umos"}
data.forms["m_com_du"] = {args[1] .. "uvis"}
data.forms["m_nom_pl"] = {args[1] .. "ewes"}
data.forms["m_voc_pl"] = {args[1] .. "ewes"}
data.forms["m_acc_pl"] = {args[1] .. "uns"}
data.forms["m_gen_pl"] = {args[1] .. "ewom"}
data.forms["m_dat_pl"] = {args[1] .. "umos"}
data.forms["m_com_pl"] = {args[1] .. "uvis"}
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[1] .. "eus"}
data.forms["f_dat_sg"] = {args[1] .. "ewei"}
data.forms["f_com_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] .. "ewom"}
data.forms["f_dat_du"] = {args[1] .. "umos"}
data.forms["f_com_du"] = {args[1] .. "uvis"}
data.forms["f_nom_pl"] = {args[1] .. "ewes"}
data.forms["f_voc_pl"] = {args[1] .. "ewes"}
data.forms["f_acc_pl"] = {args[1] .. "uns"}
data.forms["f_gen_pl"] = {args[1] .. "ewom"}
data.forms["f_dat_pl"] = {args[1] .. "umos"}
data.forms["f_com_pl"] = {args[1] .. "uvis"}
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[1] .. "eus"}
data.forms["n_dat_sg"] = {args[1] .. "ewei"}
data.forms["n_com_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] .. "ewom"}
data.forms["n_dat_du"] = {args[1] .. "umos"}
data.forms["n_ins_du"] = {args[1] .. "uvis"}
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] .. "ewom"}
data.forms["n_dat_pl"] = {args[1] .. "umos"}
data.forms["n_ins_pl"] = {args[1] .. "uvis"}
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] .. "e"}
data.forms["m_acc_sg"] = {args[1] .. "im"}
data.forms["m_gen_sg"] = {args[1] .. "ois"}
data.forms["m_dat_sg"] = {args[1] .. "eie"}
data.forms["m_com_sg"] = {args[1] .. "iē"}
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] .. "jom"}
data.forms["m_dat_du"] = {args[1] .. "ivos"}
data.forms["m_com_du"] = {args[1] .. "ivis"}
data.forms["m_nom_pl"] = {args[1] .. "eies"}
data.forms["m_voc_pl"] = {args[1] .. "eies"}
data.forms["m_acc_pl"] = {args[1] .. "ins"}
data.forms["m_gen_pl"] = {args[1] .. "jom"}
data.forms["m_dat_pl"] = {args[1] .. "ivos"}
data.forms["m_com_pl"] = {args[1] .. "ivis"}
data.forms["f_nom_sg"] = {args[1] .. "is"}
data.forms["f_voc_sg"] = {args[1] .. "e"}
data.forms["f_acc_sg"] = {args[1] .. "im"}
data.forms["f_gen_sg"] = {args[1] .. "ois"}
data.forms["f_dat_sg"] = {args[1] .. "eie"}
data.forms["f_com_sg"] = {args[1] .. "iē"}
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] .. "jom"}
data.forms["f_dat_du"] = {args[1] .. "ivos"}
data.forms["f_com_du"] = {args[1] .. "ivis"}
data.forms["f_nom_pl"] = {args[1] .. "eies"}
data.forms["f_voc_pl"] = {args[1] .. "eies"}
data.forms["f_acc_pl"] = {args[1] .. "ins"}
data.forms["f_gen_pl"] = {args[1] .. "jom"}
data.forms["f_dat_pl"] = {args[1] .. "ivos"}
data.forms["f_com_pl"] = {args[1] .. "ivis"}
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] .. "eie"}
data.forms["n_com_sg"] = {args[1] .. "iē"}
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] .. "jom"}
data.forms["n_dat_du"] = {args[1] .. "ivos"}
data.forms["n_com_du"] = {args[1] .. "ivis"}
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] .. "jom"}
data.forms["n_dat_pl"] = {args[1] .. "ivos"}
data.forms["n_com_pl"] = {args[1] .. "ivis"}
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",
["com"] = "comitative",
["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", "com"}
local wikicode = {}
table.insert(wikicode, "{| class=\"inflection-table vsSwitcher mw-collapsible mw-collapsed\" data-toggle-category=\"inflection\" style=\"background: #FAFAFA; border: 1px solid #d0d0d0; text-align: left;\" cellspacing=\"1\" cellpadding=\"2\"")
table.insert(wikicode, "|- style=\"background: #FFCCCC;\"\n! class=\"vsToggleElement\" style=\"min-width: 41em;\" colspan=\"" .. (#numbers + 1) .. "\" | {{{info}}}")
for _, gender in ipairs(genders) do
table.insert(wikicode, "|- class=\"vsHide\" style=\"background: #FFCCCC;\"")
table.insert(wikicode, "! " .. names[gender])
for _, number in ipairs(numbers) do
table.insert(wikicode, "! style=\"min-width: 11em; background: #FFCCCC;\" | " .. names[number])
end
for _, case in ipairs(cases) do
table.insert(wikicode, "|- class=\"vsHide\" style=\"background-color: #FFF2F2;\"\n! style=\"min-width: 8em; background-color: #FFE6E6;\" | " .. 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