Module:got-noun

local m_utilities = require("Module:utilities") local m_links = require("Module:links") local m_translit = require("Module:Goth-translit")

local lang = require("Module:languages").getByCode("got")

local export = {}

local function postprocess(args, data) data.sg = true data.pl = true if args["n"] == "pl" then data.sg = false table.insert(data.categories, lang:getCanonicalName .. " pluralia tantum") elseif args["n"] == "sg" then data.pl = false table.insert(data.categories, lang:getCanonicalName .. " uncountable nouns") end for key, form in pairs(data.forms) do		-- Do not show singular or plural forms for nominals that don't have them if (args["n"] == "pl" and key:find("_sg$")) or (args["n"] == "sg" and key:find("_pl$")) then form = nil end data.forms[key] = form end -- Check if the lemma form matches the page name if data.forms["nom_" .. (args["n"] or "sg")] and (lang:makeEntryName(m_translit.tr_reverse(data.forms["nom_" .. (args["n"] or "sg")][1]))) ~= mw.title.getCurrentTitle.text then table.insert(data.categories, lang:getCanonicalName .. " entries with inflection not matching pagename") end end

local function make_Latn(args, names) for _, name in ipairs(names) do		if args[name] then if type(args[name]) == "table" then for i, _ in ipairs(args[name]) do					args[name][i] = m_translit.tr(args[name][i]) end else args[name] = m_translit.tr(args[name]) end end end end

-- Inflection functions

export["a-m"] = function(frame) local params = { [1] = {required = true, default = ""}, [2] = {},		["nomsg"] = {}, ["j"] = {}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {1, 2, "nomsg"}) if args["j"] and not (args["j"] == "ji" or args["j"] == "ei") then error("Invalid value for parameter j=, must be \"ji\", \"ei\" or empty.") end local data = {forms = {}, info = "masculine " .. (args["j"] and "j" or "") .. "a-stem", categories = {lang:getCanonicalName .. " masculine a-stem nouns"}} data.forms["nom_sg"] = {args["nomsg"] or ((args[2] or args[1]) .. (args["j"] or "") .. "s")} data.forms["voc_sg"] = {(args[2] or args[1]) .. (args["j"] and "i" or "")} data.forms["acc_sg"] = {(args[2] or args[1]) .. (args["j"] and "i" or "")} data.forms["gen_sg"] = {args[1] .. (args["j"] or "i") .. "s"} data.forms["dat_sg"] = {args[1] .. (args["j"] and "j" or "") .. "a"} data.forms["nom_pl"] = {args[1] .. (args["j"] and "j" or "") .. "ōs"} data.forms["voc_pl"] = {args[1] .. (args["j"] and "j" or "") .. "ōs"} data.forms["acc_pl"] = {args[1] .. (args["j"] and "j" or "") .. "ans"} data.forms["gen_pl"] = {args[1] .. (args["j"] and "j" or "") .. "ē"} data.forms["dat_pl"] = {args[1] .. (args["j"] and "j" or "") .. "am"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["a-n"] = function(frame) local params = { [1] = {required = true, default = ""}, [2] = {},		["j"] = {}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {1, 2}) if args["j"] and not (args["j"] == "ji" or args["j"] == "ei") then error("Invalid value for parameter j=, must be \"ji\", \"ei\" or empty.") end local data = {forms = {}, info = "neuter " .. (args["j"] and "j" or "") .. "a-stem", categories = {lang:getCanonicalName .. " neuter a-stem nouns"}} data.forms["nom_sg"] = {(args[2] or args[1]) .. (args["j"] and "i" or "")} data.forms["voc_sg"] = {(args[2] or args[1]) .. (args["j"] and "i" or "")} data.forms["acc_sg"] = {(args[2] or args[1]) .. (args["j"] and "i" or "")} data.forms["gen_sg"] = {args[1] .. (args["j"] or "i") .. "s"} data.forms["dat_sg"] = {args[1] .. (args["j"] and "j" or "") .. "a"} data.forms["nom_pl"] = {args[1] .. (args["j"] and "j" or "") .. "a"} data.forms["voc_pl"] = {args[1] .. (args["j"] and "j" or "") .. "a"} data.forms["acc_pl"] = {args[1] .. (args["j"] and "j" or "") .. "a"} data.forms["gen_pl"] = {args[1] .. (args["j"] and "j" or "") .. "ē"} data.forms["dat_pl"] = {args[1] .. (args["j"] and "j" or "") .. "am"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["an-m"] = function(frame) local params = { [1] = {required = true, default = ""}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {1}) local data = {forms = {}, info = "masculine an-stem", categories = {lang:getCanonicalName .. " masculine an-stem nouns"}} data.forms["nom_sg"] = {args[1] .. "a"} data.forms["voc_sg"] = {args[1] .. "a"} data.forms["acc_sg"] = {args[1] .. "an"} data.forms["gen_sg"] = {args[1] .. "ins"} data.forms["dat_sg"] = {args[1] .. "in"} data.forms["nom_pl"] = {args[1] .. "ans"} data.forms["voc_pl"] = {args[1] .. "ans"} data.forms["acc_pl"] = {args[1] .. "ans"} data.forms["gen_pl"] = {args[1] .. "anē"} data.forms["dat_pl"] = {args[1] .. "am"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["an-n"] = function(frame) local params = { [1] = {required = true, default = ""}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {1}) local data = {forms = {}, info = "neuter an-stem", categories = {lang:getCanonicalName .. " neuter an-stem nouns"}} data.forms["nom_sg"] = {args[1] .. "ō"} data.forms["voc_sg"] = {args[1] .. "ō"} data.forms["acc_sg"] = {args[1] .. "ō"} data.forms["gen_sg"] = {args[1] .. "ins"} data.forms["dat_sg"] = {args[1] .. "in"} data.forms["nom_pl"] = {args[1] .. "ōna"} data.forms["voc_pl"] = {args[1] .. "ōna"} data.forms["acc_pl"] = {args[1] .. "ōna"} data.forms["gen_pl"] = {args[1] .. "anē"} data.forms["dat_pl"] = {args[1] .. "am"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["cons-mf"] = function(frame) local params = { [1] = {required = true, default = ""}, ["datpl"] = {}, ["nomsg"] = {}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {1, "nomsg", "datpl"}) local data = {forms = {}, info = "masculine/feminine consonant stem", categories = {lang:getCanonicalName .. " consonant stem nouns"}} data.forms["nom_sg"] = {args["nomsg"] or args[1] .. "s"} data.forms["voc_sg"] = {args[1] .. ""}	data.forms["acc_sg"] = {args[1] .. ""}	data.forms["gen_sg"] = {args[1] .. "s"} data.forms["dat_sg"] = {args[1] .. ""}	data.forms["nom_pl"] = {args[1] .. "s"} data.forms["voc_pl"] = {args[1] .. "s"} data.forms["acc_pl"] = {args[1] .. "s"} data.forms["gen_pl"] = {args[1] .. "ē"} data.forms["dat_pl"] = {args["datpl"] or args[1] .. "um"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["eins"] = function(frame) local params = { [1] = {required = true, default = ""}, [2] = {},		["nomsg"] = {}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {1, 2, "nomsg"}) local data = {forms = {}, info = "feminine i/ō-stem", categories = {lang:getCanonicalName .. " i/ō-stem nouns"}} data.forms["nom_sg"] = {args["nomsg"] or (args[2] or args[1]) .. "s"} data.forms["voc_sg"] = {(args[2] or args[1]) .. ""}	data.forms["acc_sg"] = {(args[2] or args[1]) .. ""}	data.forms["gen_sg"] = {args[1] .. "ais"} data.forms["dat_sg"] = {args[1] .. "ai"} data.forms["nom_pl"] = {args[1] .. "ōs"} data.forms["voc_pl"] = {args[1] .. "ōs"} data.forms["acc_pl"] = {args[1] .. "ins"} data.forms["gen_pl"] = {args[1] .. "ō"} data.forms["dat_pl"] = {args[1] .. "im"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["i-f"] = function(frame) local params = { [1] = {required = true, default = ""}, [2] = {},		["nomsg"] = {}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {1, 2, "nomsg"}) local data = {forms = {}, info = "feminine i-stem", categories = {lang:getCanonicalName .. " feminine i-stem nouns"}} data.forms["nom_sg"] = {args["nomsg"] or (args[2] or args[1]) .. "s"} data.forms["voc_sg"] = {(args[2] or args[1]) .. ""}	data.forms["acc_sg"] = {(args[2] or args[1]) .. ""}	data.forms["gen_sg"] = {args[1] .. "ais"} data.forms["dat_sg"] = {args[1] .. "ai"} data.forms["nom_pl"] = {args[1] .. "eis"} data.forms["voc_pl"] = {args[1] .. "eis"} data.forms["acc_pl"] = {args[1] .. "ins"} data.forms["gen_pl"] = {args[1] .. "ē"} data.forms["dat_pl"] = {args[1] .. "im"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["i-m"] = function(frame) local params = { [1] = {required = true, default = ""}, [2] = {},		["nomsg"] = {}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {1, 2, "nomsg"}) local data = {forms = {}, info = "masculine i-stem", categories = {lang:getCanonicalName .. " masculine i-stem nouns"}} data.forms["nom_sg"] = {args["nomsg"] or (args[2] or args[1]) .. "s"} data.forms["voc_sg"] = {(args[2] or args[1]) .. ""}	data.forms["acc_sg"] = {(args[2] or args[1]) .. ""}	data.forms["gen_sg"] = {args[1] .. "is"} data.forms["dat_sg"] = {args[1] .. "a"} data.forms["nom_pl"] = {args[1] .. "eis"} data.forms["voc_pl"] = {args[1] .. "eis"} data.forms["acc_pl"] = {args[1] .. "ins"} data.forms["gen_pl"] = {args[1] .. "ē"} data.forms["dat_pl"] = {args[1] .. "im"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["in-f"] = function(frame) local params = { [1] = {required = true, default = ""}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {1}) local data = {forms = {}, info = "feminine īn-stem", categories = {lang:getCanonicalName .. " īn-stem nouns"}} data.forms["nom_sg"] = {args[1] .. "ei"} data.forms["voc_sg"] = {args[1] .. "ei"} data.forms["acc_sg"] = {args[1] .. "ein"} data.forms["gen_sg"] = {args[1] .. "eins"} data.forms["dat_sg"] = {args[1] .. "ein"} data.forms["nom_pl"] = {args[1] .. "eins"} data.forms["voc_pl"] = {args[1] .. "eins"} data.forms["acc_pl"] = {args[1] .. "eins"} data.forms["gen_pl"] = {args[1] .. "einō"} data.forms["dat_pl"] = {args[1] .. "eim"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["loanword"] = function(frame) local params = { ["nom_sg"] = {list = true, default = mw.title.getCurrentTitle.nsText == "Template" and "" or nil}, ["voc_sg"] = {list = true, default = mw.title.getCurrentTitle.nsText == "Template" and "" or nil}, ["acc_sg"] = {list = true, default = mw.title.getCurrentTitle.nsText == "Template" and "" or nil}, ["gen_sg"] = {list = true, default = mw.title.getCurrentTitle.nsText == "Template" and "" or nil}, ["dat_sg"] = {list = true, default = mw.title.getCurrentTitle.nsText == "Template" and "" or nil}, ["nom_pl"] = {list = true, default = mw.title.getCurrentTitle.nsText == "Template" and "" or nil}, ["voc_pl"] = {list = true, default = mw.title.getCurrentTitle.nsText == "Template" and "" or nil}, ["acc_pl"] = {list = true, default = mw.title.getCurrentTitle.nsText == "Template" and "" or nil}, ["gen_pl"] = {list = true, default = mw.title.getCurrentTitle.nsText == "Template" and "" or nil}, ["dat_pl"] = {list = true, default = mw.title.getCurrentTitle.nsText == "Template" and "" or nil}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {"nom_sg", "voc_sg", "acc_sg", "gen_sg", "dat_sg", "nom_pl", "voc_pl", "acc_pl", "gen_pl", "dat_pl"}) local data = {forms = {}, info = "loanword; irregular/mixed declension", categories = {lang:getCanonicalName .. " irregularly declined borrowed nouns"}} data.forms["nom_sg"] = args["nom_sg"] data.forms["voc_sg"] = args["voc_sg"] data.forms["acc_sg"] = args["acc_sg"] data.forms["gen_sg"] = args["gen_sg"] data.forms["dat_sg"] = args["dat_sg"] data.forms["nom_pl"] = args["nom_pl"] data.forms["voc_pl"] = args["voc_pl"] data.forms["acc_pl"] = args["acc_pl"] data.forms["gen_pl"] = args["gen_pl"] data.forms["dat_pl"] = args["dat_pl"] postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["nd-m"] = function(frame) local params = { [1] = {required = true, default = ""}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {1}) local data = {forms = {}, info = "masculine nd-stem", categories = {lang:getCanonicalName .. " nd-stem nouns"}} data.forms["nom_sg"] = {args[1] .. "s"} data.forms["voc_sg"] = {args[1] .. ""}	data.forms["acc_sg"] = {args[1] .. ""}	data.forms["gen_sg"] = {args[1] .. "is"} data.forms["dat_sg"] = {args[1] .. ""}	data.forms["nom_pl"] = {args[1] .. "s"} data.forms["voc_pl"] = {args[1] .. "s"} data.forms["acc_pl"] = {args[1] .. "s"} data.forms["gen_pl"] = {args[1] .. "ē"} data.forms["dat_pl"] = {args[1] .. "am"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["o-f"] = function(frame) local params = { [1] = {required = true, default = ""}, ["nomsg"] = {}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {1, "nomsg"}) local data = {forms = {}, info = "feminine ō-stem", categories = {lang:getCanonicalName .. " ō-stem nouns"}} data.forms["nom_sg"] = {args["nomsg"] or args[1] .. "a"} data.forms["voc_sg"] = {args["nomsg"] or args[1] .. "a"} data.forms["acc_sg"] = {args[1] .. "a"} data.forms["gen_sg"] = {args[1] .. "ōs"} data.forms["dat_sg"] = {args[1] .. "ai"} data.forms["nom_pl"] = {args[1] .. "ōs"} data.forms["voc_pl"] = {args[1] .. "ōs"} data.forms["acc_pl"] = {args[1] .. "ōs"} data.forms["gen_pl"] = {args[1] .. "ō"} data.forms["dat_pl"] = {args[1] .. "ōm"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["on-f"] = function(frame) local params = { [1] = {required = true, default = ""}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {1}) local data = {forms = {}, info = "feminine ōn-stem", categories = {lang:getCanonicalName .. " ōn-stem nouns"}} data.forms["nom_sg"] = {args[1] .. "ō"} data.forms["voc_sg"] = {args[1] .. "ō"} data.forms["acc_sg"] = {args[1] .. "ōn"} data.forms["gen_sg"] = {args[1] .. "ōns"} data.forms["dat_sg"] = {args[1] .. "ōn"} data.forms["nom_pl"] = {args[1] .. "ōns"} data.forms["voc_pl"] = {args[1] .. "ōns"} data.forms["acc_pl"] = {args[1] .. "ōns"} data.forms["gen_pl"] = {args[1] .. "ōnō"} data.forms["dat_pl"] = {args[1] .. "ōm"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["r-mf"] = function(frame) local params = { [1] = {required = true, default = ""}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {1}) local data = {forms = {}, info = "masculine/feminine r-stem", categories = {lang:getCanonicalName .. " r-stem nouns"}} data.forms["nom_sg"] = {args[1] .. "ar"} data.forms["voc_sg"] = {args[1] .. "ar"} data.forms["acc_sg"] = {args[1] .. "ar"} data.forms["gen_sg"] = {args[1] .. "rs"} data.forms["dat_sg"] = {args[1] .. "r"} data.forms["nom_pl"] = {args[1] .. "rjus"} data.forms["voc_pl"] = {args[1] .. "rjus"} data.forms["acc_pl"] = {args[1] .. "runs"} data.forms["gen_pl"] = {args[1] .. "rē"} data.forms["dat_pl"] = {args[1] .. "rum"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["u-mf"] = function(frame) local params = { [1] = {required = true, default = ""}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {1}) local data = {forms = {}, info = "masculine/feminine u-stem", categories = {lang:getCanonicalName .. " masculine/feminine u-stem nouns"}} data.forms["nom_sg"] = {args[1] .. "us"} data.forms["voc_sg"] = {args[1] .. "au"} data.forms["acc_sg"] = {args[1] .. "u"} data.forms["gen_sg"] = {args[1] .. "aus"} data.forms["dat_sg"] = {args[1] .. "au"} data.forms["nom_pl"] = {args[1] .. "jus"} data.forms["voc_pl"] = {args[1] .. "jus"} data.forms["acc_pl"] = {args[1] .. "uns"} data.forms["gen_pl"] = {args[1] .. "iwē"} data.forms["dat_pl"] = {args[1] .. "um"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["u-n"] = function(frame) local params = { [1] = {required = true, default = ""}, ["n"] = {}, }	local args = require("Module:parameters").process(frame:getParent.args, params) make_Latn(args, {1})

local data = {forms = {}, info = "neuter u-stem", categories = {lang:getCanonicalName .. " neuter u-stem nouns"}} args["n"] = "sg" -- No plural forms attested data.forms["nom_sg"] = {args[1] .. "u"} data.forms["voc_sg"] = {args[1] .. "u"} data.forms["acc_sg"] = {args[1] .. "u"} data.forms["gen_sg"] = {args[1] .. "aus"} data.forms["dat_sg"] = {args[1] .. "au"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

-- Irregular nouns

export["aba"] = function(frame) local params = { }	local args = require("Module:parameters").process(frame:getParent.args, params) local data = {forms = {}, info = "masculine an-stem, contraction in plural", categories = {lang:getCanonicalName .. " an-stem nouns", lang:getCanonicalName .. " irregular nouns"}} data.forms["nom_sg"] = {"aba"} data.forms["voc_sg"] = {"*aba"} data.forms["acc_sg"] = {"aban"} data.forms["gen_sg"] = {"abins"} data.forms["dat_sg"] = {"abin"} data.forms["nom_pl"] = {"abans"} data.forms["voc_pl"] = {"*abans"} data.forms["acc_pl"] = {"*abans"} data.forms["gen_pl"] = {"abnē"} data.forms["dat_pl"] = {"abnam"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["aiws"] = function(frame) local params = { }	local args = require("Module:parameters").process(frame:getParent.args, params) local data = {forms = {}, info = "masculine mixed i/a-stem", categories = {lang:getCanonicalName .. " i-stem nouns", lang:getCanonicalName .. " a-stem nouns", lang:getCanonicalName .. " irregular nouns"}} data.forms["nom_sg"] = {"aiws"} data.forms["voc_sg"] = {"aiw"} data.forms["acc_sg"] = {"aiw"} data.forms["gen_sg"] = {"aiwis"} data.forms["dat_sg"] = {"aiwa"} data.forms["nom_pl"] = {"*aiweis", "*aiwōs"} data.forms["voc_pl"] = {"*aiweis", "*aiwōs"} data.forms["acc_pl"] = {"aiwins"} data.forms["gen_pl"] = {"aiwē"} data.forms["dat_pl"] = {"aiwam"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["andeis"] = function(frame) local params = { }	local args = require("Module:parameters").process(frame:getParent.args, params) local data = {forms = {}, info = "masculine mixed i/a-stem", categories = {lang:getCanonicalName .. " i-stem nouns", lang:getCanonicalName .. " a-stem nouns", lang:getCanonicalName .. " irregular nouns"}} data.forms["nom_sg"] = {"andeis"} data.forms["voc_sg"] = {"*andi"} data.forms["acc_sg"] = {"andi"} data.forms["gen_sg"] = {"*andeis"} data.forms["dat_sg"] = {"andja"} data.forms["nom_pl"] = {"*andjōs"} data.forms["voc_pl"] = {"*andjōs"} data.forms["acc_pl"] = {"andins"} data.forms["gen_pl"] = {"*andjē", "*andē"} data.forms["dat_pl"] = {"andjam"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["auhsa"] = function(frame) local params = { }	local args = require("Module:parameters").process(frame:getParent.args, params) local data = {forms = {}, info = "masculine mixed an/u stem, contraction in the plural", categories = {lang:getCanonicalName .. " an-stem nouns", lang:getCanonicalName .. " irregular nouns"}} data.forms["nom_sg"] = {"auhsa"} data.forms["voc_sg"] = {"*auhsa"} data.forms["acc_sg"] = {"auhsau"} data.forms["gen_sg"] = {"*auhsaus?"} data.forms["dat_sg"] = {"auhsau"} data.forms["nom_pl"] = {"*auhsnjus"} data.forms["voc_pl"] = {"*auhsnjus"} data.forms["acc_pl"] = {"auhsnuns"} data.forms["gen_pl"] = {"auhsne"} data.forms["dat_pl"] = {"*auhsum"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["fon"] = function(frame) local params = { }	local args = require("Module:parameters").process(frame:getParent.args, params) local data = {forms = {}, info = "neuter an-stem, irregular nominative", categories = {lang:getCanonicalName .. " an-stem nouns", lang:getCanonicalName .. " irregular nouns"}} args["n"] = "sg" data.forms["nom_sg"] = {"fōn"} data.forms["voc_sg"] = {"fōn"} data.forms["acc_sg"] = {"fōn"} data.forms["gen_sg"] = {"funins"} data.forms["dat_sg"] = {"funin"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["haims"] = function(frame) local params = { }	local args = require("Module:parameters").process(frame:getParent.args, params) local data = {forms = {}, info = "feminine mixed i/ō-stem", categories = {lang:getCanonicalName .. " i/ō-stem nouns", lang:getCanonicalName .. " irregular nouns"}} data.forms["nom_sg"] = {"*haims"} data.forms["voc_sg"] = {"*haim"} data.forms["acc_sg"] = {"haim"} data.forms["gen_sg"] = {"*haimais"} data.forms["dat_sg"] = {"haimai"} data.forms["nom_pl"] = {"*haimōs"} data.forms["voc_pl"] = {"*haimōs"} data.forms["acc_pl"] = {"haimōs"} data.forms["gen_pl"] = {"haimō"} data.forms["dat_pl"] = {"haimōm"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["manna"] = function(frame) local params = { }	local args = require("Module:parameters").process(frame:getParent.args, params) local data = {forms = {}, info = "masculine mixed an/consonant stem", categories = {lang:getCanonicalName .. " an-stem nouns", lang:getCanonicalName .. " consonant stem nouns", lang:getCanonicalName .. " irregular nouns"}} data.forms["nom_sg"] = {"manna"} data.forms["voc_sg"] = {"manna"} data.forms["acc_sg"] = {"mannan"} data.forms["gen_sg"] = {"mans"} data.forms["dat_sg"] = {"mann"} data.forms["nom_pl"] = {"mans", "mannans"} data.forms["voc_pl"] = {"mans", "mannans"} data.forms["acc_pl"] = {"mans", "mannans"} data.forms["gen_pl"] = {"mannē"} data.forms["dat_pl"] = {"mannam"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["namo"] = function(frame) local params = { }	local args = require("Module:parameters").process(frame:getParent.args, params) local data = {forms = {}, info = "neuter an-stem, contraction in plural", categories = {lang:getCanonicalName .. " an-stem nouns", lang:getCanonicalName .. " irregular nouns"}} data.forms["nom_sg"] = {"namō"} data.forms["voc_sg"] = {"namō"} data.forms["acc_sg"] = {"namō"} data.forms["gen_sg"] = {"namins"} data.forms["dat_sg"] = {"namin"} data.forms["nom_pl"] = {"namna"} data.forms["voc_pl"] = {"namna"} data.forms["acc_pl"] = {"namna"} data.forms["gen_pl"] = {"namnē"} data.forms["dat_pl"] = {"namnam"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["reiks"] = function(frame) local params = { }	local args = require("Module:parameters").process(frame:getParent.args, params) local data = {forms = {}, info = "masculine mixed consonant/a-stem", categories = {lang:getCanonicalName .. " consonant stem nouns", lang:getCanonicalName .. " a-stem nouns", lang:getCanonicalName .. " irregular nouns"}} data.forms["nom_sg"] = {"reiks"} data.forms["voc_sg"] = {"*reik"} data.forms["acc_sg"] = {"*reik"} data.forms["gen_sg"] = {"reikis"} data.forms["dat_sg"] = {"reik"} data.forms["nom_pl"] = {"reiks"} data.forms["voc_pl"] = {"*reiks"} data.forms["acc_pl"] = {"*reiks"} data.forms["gen_pl"] = {"reikē"} data.forms["dat_pl"] = {"reikam"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["wato"] = function(frame) local params = { }	local args = require("Module:parameters").process(frame:getParent.args, params) local data = {forms = {}, info = "neuter an-stem, contraction in plural", categories = {lang:getCanonicalName .. " an-stem nouns", lang:getCanonicalName .. " irregular nouns"}} data.forms["nom_sg"] = {"watō"} data.forms["voc_sg"] = {"watō"} data.forms["acc_sg"] = {"watō"} data.forms["gen_sg"] = {"watins"} data.forms["dat_sg"] = {"watin"} data.forms["nom_pl"] = {"*watna"} data.forms["voc_pl"] = {"*watna"} data.forms["acc_pl"] = {"*watna"} data.forms["gen_pl"] = {"*watnē"} data.forms["dat_pl"] = {"watnam"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

export["wegs"] = function(frame) local params = { }	local args = require("Module:parameters").process(frame:getParent.args, params) local data = {forms = {}, info = "masculine mixed i/a-stem", categories = {lang:getCanonicalName .. " i-stem nouns", lang:getCanonicalName .. " a-stem nouns", lang:getCanonicalName .. " irregular nouns"}} data.forms["nom_sg"] = {"wēgs"} data.forms["voc_sg"] = {"*wēg"} data.forms["acc_sg"] = {"*wēg"} data.forms["gen_sg"] = {"*wēgis"} data.forms["dat_sg"] = {"wēga"} data.forms["nom_pl"] = {"wēgōs"} data.forms["voc_pl"] = {"wēgōs"} data.forms["acc_pl"] = {"*wēgans", "*wēgins"} data.forms["gen_pl"] = {"*wēgē"} data.forms["dat_pl"] = {"wēgim"} postprocess(args, data) return make_table(data) .. m_utilities.format_categories(data.categories, lang) end

-- 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 "&mdash;" end local ret_Goth = {} local ret_Latn = {} for key, subform in ipairs(form) do			table.insert(ret_Latn, m_links.full_link({lang = lang, term = subform, tr = "-"})) table.insert(ret_Goth, m_links.full_link({lang = lang, term = m_translit.tr_reverse(subform), tr = "-"})) end return table.concat(ret_Goth, ", ") .. " " .. table.concat(ret_Latn, ", ") end local names = { ["nom"] = "nominative", ["voc"] = "vocative", ["acc"] = "accusative", ["gen"] = "genitive", ["dat"] = "dative", ["sg"] = "singular", ["pl"] = "plural", }	local numbers = {"sg", "pl"} local cases = {"nom", "voc", "acc", "gen", "dat"} local wikicode = {} table.insert(wikicode, "{| class=\"wikitable inflection-table vsSwitcher\" style=\"border-style: double; border-width: 3px;\" cellspacing=\"1\"") table.insert(wikicode, "|-") table.insert(wikicode, "! class=\"vsToggleElement\" style=\"background: #CCC; min-width: 32em; text-align: left;\" colspan=\"3\" | ") table.insert(wikicode, "|- class=\"vsHide\"") table.insert(wikicode, "| style=\"min-width: 8em;\" |") for _, number in ipairs(numbers) do table.insert(wikicode, "! style=\"min-width: 12em;\" | " .. mw.getContentLanguage:ucfirst(names[number])) end for _, case in ipairs(cases) do		table.insert(wikicode, "|- class=\"vsHide\"") table.insert(wikicode, "! " .. mw.getContentLanguage:ucfirst(names[case])) for _, number in ipairs(numbers) do			table.insert(wikicode, "| ") end end table.insert(wikicode, "|}") wikicode = table.concat(wikicode, "\n") return mw.ustring.gsub(wikicode, "", repl) end

return export