Module:gem-decl-noun/data

local decl_data = {}

decl_data["a-m"] = { params = { [1] = {},		["nopl"] = {}, }, } setmetatable(decl_data["a-m"], {__call = function(self, args, data)	local stem = args[1]	local stem_i = ""	if mw.ustring.sub(stem, -2) == "ij" then		stem_i = mw.ustring.sub(stem, 1, -3) .. "ī"		data.decl_type = "masculine ja-stem"		table.insert(data.categories, "Proto-Germanic ja-stem nouns")	elseif mw.ustring.sub(stem, -1) == "j" then		stem_i = mw.ustring.sub(stem, 1, -2) .. "i"		data.decl_type = "masculine ja-stem"		table.insert(data.categories, "Proto-Germanic ja-stem nouns")	else		stem_i = stem		data.decl_type = "masculine a-stem"		table.insert(data.categories, "Proto-Germanic a-stem nouns")	end

data.forms["nom_sg"] = {stem .. "az"} data.forms["voc_sg"] = {stem_i == stem and stem or stem_i} data.forms["acc_sg"] = {stem .. "ą"} data.forms["gen_sg"] = {stem .. "as", stem_i .. (stem_i == stem and "is" or "s")} data.forms["dat_sg"] = {stem .. "ai"} data.forms["ins_sg"] = {stem .. "ō"}

if not args.nopl then data.forms["nom_pl"] = {stem .. "ōz", args[1] .. "ōs"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = {stem .. "anz"} data.forms["gen_pl"] = {stem .. "ǫ̂"} data.forms["dat_pl"] = {stem .. "amaz"} data.forms["ins_pl"] = {stem .. "amiz"} end end })

decl_data["a-n"] = { params = { [1] = {},		["nopl"] = {}, }, } setmetatable(decl_data["a-n"], {__call = function(self, args, data)	decl_data["a-m"](args, data)	data.decl_type = data.decl_type:gsub("masculine", "neuter")

data.forms["nom_sg"] = data.forms["acc_sg"] data.forms["voc_sg"] = data.forms["acc_sg"]

if not args.nopl then data.forms["nom_pl"] = {args[1] .. "ō"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = data.forms["nom_pl"] data.forms["gen_pl"] = {args[1] .. "ǫ̂"} data.forms["dat_pl"] = {args[1] .. "amaz"} data.forms["ins_pl"] = {args[1] .. "amiz"} end end })

decl_data["acoll-n"] = { params = { [1] = {},		[2] = {},		["nopl"] = {}, }, } setmetatable(decl_data["acoll-n"], {__call = function(self, args, data)	decl_data["a-m"](args, data)	data.decl_type = data.decl_type:gsub("masculine", "neuter")

data.forms["nom_sg"] = data.forms["acc_sg"] data.forms["voc_sg"] = data.forms["acc_sg"]

if not args.nopl then data.forms["nom_pl"] = {args[2] .. "ō"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = data.forms["nom_pl"] data.forms["gen_pl"] = {args[2] .. "ǫ̂"} data.forms["dat_pl"] = {args[2] .. "amaz"} data.forms["ins_pl"] = {args[2] .. "amiz"} end end })

decl_data["cons-mf"] = { params = { [1] = {},		["nopl"] = {}, ["nomsg"] = {}, ["vocsg"] = {}, }, } setmetatable(decl_data["cons-mf"], {__call = function(self, args, data)	local pagename = mw.title.getCurrentTitle.subpageText

local s = mw.ustring.sub(pagename, -1, -1) -- Check for s-stems if mw.ustring.sub(pagename, -1, -1) == "s" and not mw.ustring.find(mw.ustring.sub(pagename, -2, -2), "[fhkptþ]") then s = "" end

-- (mw.ustring.find(mw.ustring.sub(args[1], -1, -1), "[fhkptþ]") and "s" or "z") data.decl_type = "consonant stem" data.forms["nom_sg"] = {args.nomsg or (args[1] .. s)} data.forms["voc_sg"] = {args.vocsg or args[1]} data.forms["acc_sg"] = {args[1] .. "ų"} data.forms["gen_sg"] = {args[1] .. "iz"} data.forms["dat_sg"] = {args[1] .. "i"} data.forms["ins_sg"] = {args[1] .. "ē"}

if not args.nopl then data.forms["nom_pl"] = {args[1] .. "iz"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = {args[1] .. "unz"} data.forms["gen_pl"] = {args[1] .. "ǫ̂"} data.forms["dat_pl"] = {args[1] .. "umaz"} data.forms["ins_pl"] = {args[1] .. "umiz"} end table.insert(data.categories, "Proto-Germanic consonant stem nouns") end })

decl_data["cons-n"] = { params = { [1] = {},		["nopl"] = {}, }, } setmetatable(decl_data["cons-n"], {__call = function(self, args, data)	decl_data["cons-mf"](args, data)	data.decl_type = "neuter consonant stem"

data.forms["nom_sg"] = {args[1]} data.forms["voc_sg"] = data.forms["nom_sg"] data.forms["acc_sg"] = data.forms["nom_sg"] if not args.nopl then data.forms["nom_pl"] = {args[1]} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = data.forms["nom_pl"] end end })

decl_data["i-mf"] = { params = { [1] = {},		["nopl"] = {}, ["j"] = {}, }, } setmetatable(decl_data["i-mf"], {__call = function(self, args, data)	data.decl_type = "i-stem"	local j = args.j or require("Module:gem-pronunc").determine_sievers(args[1])	data.forms["nom_sg"] = {args[1] .. "iz"}	data.forms["voc_sg"] = {args[1] .. "i"}	data.forms["acc_sg"] = {args[1] .. "į"}	data.forms["gen_sg"] = {args[1] .. "īz"}	data.forms["dat_sg"] = {args[1] .. "ī"}	data.forms["ins_sg"] = {args[1] .. "ī"}

if not args.nopl then data.forms["nom_pl"] = {args[1] .. "īz"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = {args[1] .. "inz"} data.forms["gen_pl"] = {args[1] .. (j or "") .. "ǫ̂"} data.forms["dat_pl"] = {args[1] .. "imaz"} data.forms["ins_pl"] = {args[1] .. "imiz"} end table.insert(data.categories, "Proto-Germanic i-stem nouns") end })

decl_data["tis-f"] = { params = { [1] = {},		[2] = {},		["nopl"] = {}, ["j"] = {}, }, } setmetatable(decl_data["tis-f"], {__call = function(self, args, data)	data.decl_type = "feminine i-stem"	local j = args.j or require("Module:gem-pronunc").determine_sievers(args[2])	data.forms["nom_sg"] = {args[1] .. "iz"}	data.forms["voc_sg"] = {args[1] .. "i"}	data.forms["acc_sg"] = {args[1] .. "į"}	data.forms["gen_sg"] = {args[2] .. "īz"}	data.forms["dat_sg"] = {args[2] .. "ī"}	data.forms["ins_sg"] = {args[2] .. "ī"}

if not args.nopl then data.forms["nom_pl"] = {args[1] .. "īz"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = {args[1] .. "inz"} data.forms["gen_pl"] = {args[2] .. (j or "") .. "ǫ̂"} data.forms["dat_pl"] = {args[2] .. "imaz"} data.forms["ins_pl"] = {args[2] .. "imiz"} end table.insert(data.categories, "Proto-Germanic i-stem nouns") end })

decl_data["i-n"] = { params = { [1] = {},		["nopl"] = {}, ["j"] = {}, }, } setmetatable(decl_data["i-n"], {__call = function(self, args, data)	decl_data["i-mf"](args, data)	data.decl_type = "neuter i-stem"	data.forms["nom_sg"] = data.forms["voc_sg"]	data.forms["acc_sg"] = data.forms["voc_sg"]

if not args.nopl then data.forms["nom_pl"] = {args[1] .. "ī"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = data.forms["nom_pl"] end end })

decl_data["ijo-f"] = { params = { [1] = {},		["nopl"] = {}, }, } setmetatable(decl_data["ijo-f"], {__call = function(self, args, data)	data.decl_type = "ī/jō-stem"	local stem = args[1] .. require("Module:gem-pronunc").determine_sievers(args[1])	data.forms["nom_sg"] = {args[1] .. "ī"}	data.forms["voc_sg"] = data.forms["nom_sg"]	data.forms["acc_sg"] = {stem .. "ǭ"}	data.forms["gen_sg"] = {stem.. "ōz"}	data.forms["dat_sg"] = {stem .. "ōi"}	data.forms["ins_sg"] = {stem .. "ō"}

if not args.nopl then data.forms["nom_pl"] = {stem .. "ôz"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = {stem .. "ōz"} data.forms["gen_pl"] = {stem .. "ǫ̂"} data.forms["dat_pl"] = {stem .. "ōmaz"} data.forms["ins_pl"] = {stem .. "ōmiz"} end table.insert(data.categories, "Proto-Germanic ī/jō-stem nouns") end })

decl_data["n-f"] = { params = { [1] = {},		["nopl"] = {}, }, } setmetatable(decl_data["n-f"], {__call = function(self, args, data)	data.decl_type = "ōn-stem"	data.forms["nom_sg"] = {args[1] .. "ǭ"}	data.forms["voc_sg"] = data.forms["nom_sg"]	data.forms["acc_sg"] = {args[1] .. "ōnų"}	data.forms["gen_sg"] = {args[1] .. "ōniz"}	data.forms["dat_sg"] = {args[1] .. "ōni"}	data.forms["ins_sg"] = {args[1] .. "ōnē"}

if not args.nopl then data.forms["nom_pl"] = {args[1] .. "ōniz"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = {args[1] .. "ōnunz"} data.forms["gen_pl"] = {args[1] .. "ōnǫ̂"} data.forms["dat_pl"] = {args[1] .. "ōmaz"} data.forms["ins_pl"] = {args[1] .. "ōmiz"} end table.insert(data.categories, "Proto-Germanic ōn-stem nouns") end })

decl_data["n-m"] = { params = { [1] = {},		["nopl"] = {}, }, } setmetatable(decl_data["n-m"], {__call = function(self, args, data)	data.decl_type = "masculine an-stem"	data.forms["nom_sg"] = {args[1] .. "ô"}	data.forms["voc_sg"] = data.forms["nom_sg"]	data.forms["acc_sg"] = {args[1] .. "anų"}	data.forms["gen_sg"] = {args[1].. "iniz"}	data.forms["dat_sg"] = {args[1] .. "ini"}	data.forms["ins_sg"] = {args[1] .. "inē"}

if not args.nopl then data.forms["nom_pl"] = {args[1] .. "aniz"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = {args[1] .. "anunz"} data.forms["gen_pl"] = {args[1] .. "anǫ̂"} data.forms["dat_pl"] = {args[1] .. "ammaz"} data.forms["ins_pl"] = {args[1] .. "ammiz"} end table.insert(data.categories, "Proto-Germanic an-stem nouns") end })

decl_data["namphi-m"] = { params = { [1] = {},		[2] = {},		[3] = {},		["nopl"] = {}, }, } setmetatable(decl_data["namphi-m"], {__call = function(self, args, data)	data.decl_type = "masculine an-stem"	data.forms["nom_sg"] = {args[1] .. "ô"}	data.forms["voc_sg"] = data.forms["nom_sg"]	data.forms["acc_sg"] = {args[1] .. "anų"}	data.forms["gen_sg"] = {args[2].. "az"}	data.forms["dat_sg"] = {args[3] .. "ini"}	data.forms["ins_sg"] = {args[2] .. "ē"}

if not args.nopl then data.forms["nom_pl"] = {args[1] .. "aniz"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = {args[2] .. "unz"} data.forms["gen_pl"] = {args[2] .. "ǫ̂"} data.forms["dat_pl"] = {args[3] .. "ummaz"} data.forms["ins_pl"] = {args[3] .. "ummiz"} end table.insert(data.categories, "Proto-Germanic an-stem nouns") end })

decl_data["n-n"] = { params = { [1] = {},		["nopl"] = {}, }, } setmetatable(decl_data["n-n"], {__call = function(self, args, data)	decl_data["n-m"](args, data)	data.decl_type = "neuter an-stem"

data.forms["acc_sg"] = data.forms["nom_sg"]

if not args.nopl then data.forms["nom_pl"] = {args[1] .. "ōnō"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = data.forms["nom_pl"] end table.insert(data.categories, "Proto-Germanic an-stem nouns") end })

decl_data["in-f"] = { params = { [1] = {},		["nopl"] = {}, }, } setmetatable(decl_data["in-f"], {__call = function(self, args, data)	data.decl_type = "īn-stem"	data.forms["nom_sg"] = {args[1] .. "į̄"}	data.forms["voc_sg"] = data.forms["nom_sg"]	data.forms["acc_sg"] = {args[1] .. "īnų"}	data.forms["gen_sg"] = {args[1] .. "īniz"}	data.forms["dat_sg"] = {args[1] .. "īni"}	data.forms["ins_sg"] = {args[1] .. "īnē"}

if not args.nopl then data.forms["nom_pl"] = {args[1] .. "īniz"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = {args[1] .. "īnunz"} data.forms["gen_pl"] = {args[1] .. "īnǫ̂"} data.forms["dat_pl"] = {args[1] .. "īmaz"} data.forms["ins_pl"] = {args[1] .. "īmiz"} end table.insert(data.categories, "Proto-Germanic īn-stem nouns") end })

decl_data["o-f"] = { params = { [1] = {},		["nopl"] = {}, }, } setmetatable(decl_data["o-f"], {__call = function(self, args, data)	data.decl_type = "ō-stem"	data.forms["nom_sg"] = {args[1] .. "ō"}	data.forms["voc_sg"] = data.forms["nom_sg"]	data.forms["acc_sg"] = {args[1] .. "ǭ"}	data.forms["gen_sg"] = {args[1] .. "ōz"}	data.forms["dat_sg"] = {args[1] .. "ōi"}	data.forms["ins_sg"] = data.forms["nom_sg"]

if not args.nopl then data.forms["nom_pl"] = {args[1] .. "ôz"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = {args[1] .. "ōz"} data.forms["gen_pl"] = {args[1] .. "ǫ̂"} data.forms["dat_pl"] = {args[1] .. "ōmaz"} data.forms["ins_pl"] = {args[1] .. "ōmiz"} end table.insert(data.categories, "Proto-Germanic ō-stem nouns") end })

decl_data["r-mf"] = { params = { [1] = {},		["nopl"] = {}, }, } setmetatable(decl_data["r-mf"], {__call = function(self, args, data)	data.decl_type = "r-stem"	data.forms["nom_sg"] = {args[1] .. "ēr"}	data.forms["voc_sg"] = {args[1] .. "er"}	data.forms["acc_sg"] = {args[1] .. "erų"}	data.forms["gen_sg"] = {args[1] .. "urz"}	data.forms["dat_sg"] = {args[1] .. "ri"}	data.forms["ins_sg"] = {args[1] .. "rē"}

if not args.nopl then data.forms["nom_pl"] = {args[1] .. "riz"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = {args[1] .. "runz"} data.forms["gen_pl"] = {args[1] .. "rǫ̂"} data.forms["dat_pl"] = {args[1] .. "rumaz"} data.forms["ins_pl"] = {args[1] .. "rumiz"} end table.insert(data.categories, "Proto-Germanic r-stem nouns") end })

decl_data["u-mf"] = { params = { [1] = {},		["nopl"] = {}, }, } setmetatable(decl_data["u-mf"], {__call = function(self, args, data)	data.decl_type = "u-stem"	data.forms["nom_sg"] = {args[1] .. "uz"}	data.forms["voc_sg"] = {args[1] .. "u"}	data.forms["acc_sg"] = {args[1] .. "ų"}	data.forms["gen_sg"] = {args[1] .. "auz"}	data.forms["dat_sg"] = {args[1] .. "iwi"}	data.forms["ins_sg"] = {args[1] .. "ū"}

if not args.nopl then data.forms["nom_pl"] = {args[1] .. "iwiz"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = {args[1] .. "unz"} data.forms["gen_pl"] = {args[1] .. "iwǫ̂"} data.forms["dat_pl"] = {args[1] .. "umaz"} data.forms["ins_pl"] = {args[1] .. "umiz"} end table.insert(data.categories, "Proto-Germanic u-stem nouns") end })

decl_data["u-n"] = { params = { [1] = {},		["nopl"] = {}, }, } setmetatable(decl_data["u-n"], {__call = function(self, args, data)	decl_data["u-mf"](args, data)	data.decl_type = "neuter u-stem"	data.forms["nom_sg"] = data.forms["voc_sg"]	data.forms["acc_sg"] = data.forms["voc_sg"]	if not args.nopl then		data.forms["nom_pl"] = data.forms["ins_sg"]		data.forms["voc_pl"] = data.forms["ins_sg"]		data.forms["acc_pl"] = data.forms["ins_sg"]	end end })

decl_data["z-n"] = { params = { [1] = {},		["nopl"] = {}, }, } setmetatable(decl_data["z-n"], {__call = function(self, args, data)	data.decl_type = "z-stem"	data.forms["nom_sg"] = {args[1] .. "az"}	data.forms["voc_sg"] = data.forms["nom_sg"]	data.forms["acc_sg"] = data.forms["nom_sg"]	data.forms["gen_sg"] = {args[1] .. "iziz"}	data.forms["dat_sg"] = {args[1] .. "izi"}	data.forms["ins_sg"] = {args[1] .. "izē"}

if not args.nopl then data.forms["nom_pl"] = {args[1] .. "izō"} data.forms["voc_pl"] = data.forms["nom_pl"] data.forms["acc_pl"] = data.forms["nom_pl"] data.forms["gen_pl"] = {args[1] .. "izǫ̂"} data.forms["dat_pl"] = {args[1] .. "izumaz"} data.forms["ins_pl"] = {args[1] .. "izumiz"} end table.insert(data.categories, "Proto-Germanic z-stem nouns") end })

decl_data["irreg"] = {} setmetatable(decl_data["irreg"], {__call = function(self, args, data)	local word = mw.title.getCurrentTitle.subpageText	irreg_data = require("Module:gem-decl-noun/data/irreg")	if irreg_data.irreg[word] then		irreg_data.irreg[word](args, data)	else		error("Irregular inflection not found. Please check Module:gem-decl-noun/data.")	end	table.insert(data.categories, "Proto-Germanic irregular nouns") end })

return decl_data