ข้ามไปเนื้อหา

มอดูล:la-adj/data

จาก วิกิพจนานุกรม พจนานุกรมเสรี


local decl = {}

local en_utilities_module = "Module:en-utilities"
local la_utilities_module = "Module:la-utilities"
local table_deep_copy_module = "Module:table/deepCopy"
local table_empty_module = "Module:table/empty"
local table_insert_if_not_module = "Module:table/insertIfNot"

local require = require
local umatch = mw.ustring.match
local usub = mw.ustring.sub

local function add_form(...)
	add_form = require(la_utilities_module).add_form
	return add_form(...)
end

local function deep_copy(...)
	deep_copy = require(table_deep_copy_module)
	return deep_copy(...)
end

local function empty_table(...)
	empty_table = require(table_empty_module)
	return empty_table(...)
end

local function insert_if_not(...)
	insert_if_not = require(table_insert_if_not_module)
	return insert_if_not(...)
end

local function remove_forms(...)
	remove_forms = require(la_utilities_module).remove_forms
	return remove_forms(...)
end

local function singularize(...)
	singularize = require(en_utilities_module).singularize
	return singularize(...)
end

local function glossary_link(anchor, text)
	text = text or anchor
	return "[[Appendix:Glossary#" .. anchor .. "|" .. text .. "]]"
end

local function decl_link(english_declension, decl_text)
	decl_text = decl_text or english_declension .. "-declension"
	return "[[Appendix:Latin " .. english_declension .. " declension|" .. decl_text .. "]]"
end

decl["0+"] = function(data, args)
	local forms, categories = data.forms, data.categories
	local stem = args[1]

	forms["nom_sg_m"] = stem
	forms["nom_pl_m"] = stem

	forms["gen_sg_m"] = stem
	forms["gen_pl_m"] = stem

	forms["dat_sg_m"] = stem
	forms["dat_pl_m"] = stem

	forms["acc_sg_m"] = stem
	forms["acc_pl_m"] = stem

	forms["abl_sg_m"] = stem
	forms["abl_pl_m"] = stem

	forms["voc_sg_m"] = stem
	forms["voc_pl_m"] = stem

	forms["loc_sg_m"] = stem
	forms["loc_pl_m"] = stem

	insert_if_not(categories, "Latin indeclinable " .. data.pos)
end

decl["1&2+"] = function(data, args)
	local forms, types, pos, subtitles, categories = data.forms, data.types, data.pos, data.subtitles, data.categories
	local stem = args[1]

	local singpos, gender = singularize(pos), data.gender
	if gender == "F" then
		data.title = decl_link("first") .. " " .. singpos
	elseif gender then
		data.title = decl_link("second") .. " " .. singpos
	else
		data.title = decl_link("first", "first") .. "/" .. decl_link("second") .. " " .. singpos
	end

	local original
	if types.er then
		local final2 = stem:sub(-2)
		if final2 == "er" then
			insert_if_not(subtitles, "nominative masculine singular in ''-er''")
			insert_if_not(categories, "Latin first and second declension "
				.. pos .. " with nominative masculine singular in -er")
		elseif final2 == "ur" then
			insert_if_not(subtitles, "nominative masculine singular in ''-ur''")
			insert_if_not(categories, "Latin first and second declension "
				.. pos .. " with nominative masculine singular in -ur")
		else
			error("Unrecognized ''-r'' stem (doesn't end in ''-er'' or ''-ur''): " .. stem)
		end
		stem, original = args[2], stem
	end

	local us = "us"
	local a_sf = "a"
	local um = "um"
	local ae_gsf = "ae"
	local am = "am"
	local a_macron = "ā"
	local i_pl = stem .. "ī"

	if types.greekA or types.greekE then
		insert_if_not(subtitles, "Greek-type")
		insert_if_not(categories, "Latin first and second declension " .. pos .. " with Greek declension")
		if types.greekA then
			us = "os"
			um = "on"
			am = "ān"
		else
			us = "os"
			a_sf = "ē"
			um = "on"
			ae_gsf = "ēs"
			am = "ēn"
			a_macron = "ē"
		end
		i_pl = {i_pl, stem .. "oe"} -- FIXME: add .oe spec.
	end

	forms["nom_sg_m"] = original or (stem .. us)
	forms["nom_sg_f"] = stem .. a_sf
	forms["nom_sg_n"] = stem .. um
	forms["nom_pl_m"] = i_pl
	forms["nom_pl_f"] = stem .. "ae"
	forms["nom_pl_n"] = stem .. "a"

	forms["gen_sg_m"] = stem .. "ī"
	forms["gen_sg_f"] = stem .. ae_gsf
	forms["gen_sg_n"] = stem .. "ī"
	forms["gen_pl_m"] = stem .. "ōrum"
	forms["gen_pl_f"] = stem .. "ārum"
	forms["gen_pl_n"] = stem .. "ōrum"

	forms["dat_sg_m"] = stem .. "ō"
	forms["dat_sg_f"] = stem .. "ae"
	forms["dat_sg_n"] = stem .. "ō"
	forms["dat_pl_m"] = stem .. "īs"
	forms["dat_pl_f"] = stem .. "īs"
	forms["dat_pl_n"] = stem .. "īs"

	forms["acc_sg_m"] = stem .. um
	forms["acc_sg_f"] = stem .. am
	forms["acc_sg_n"] = stem .. um
	forms["acc_pl_m"] = stem .. "ōs"
	forms["acc_pl_f"] = stem .. "ās"
	forms["acc_pl_n"] = stem .. "a"

	forms["abl_sg_m"] = stem .. "ō"
	forms["abl_sg_f"] = stem .. a_macron
	forms["abl_sg_n"] = stem .. "ō"
	forms["abl_pl_m"] = stem .. "īs"
	forms["abl_pl_f"] = stem .. "īs"
	forms["abl_pl_n"] = stem .. "īs"

	forms["voc_sg_m"] = original or (stem .. "e")
	forms["voc_sg_f"] = stem .. a_sf
	forms["voc_sg_n"] = stem .. um
	forms["voc_pl_m"] = i_pl
	forms["voc_pl_f"] = stem .. "ae"
	forms["voc_pl_n"] = stem .. "a"

	if types.ius then
		insert_if_not(subtitles, "pronominal")
		--insert_if_not(subtitles, "with genitive singular in ''-ī̆us'' and dative singular in ''-ī''")
		insert_if_not(categories, "Latin first and second declension " .. pos .. " with genitive singular in -ī̆us")
		forms["gen_sg_m"] = stem .. "ī̆us"
		forms["gen_sg_f"] = stem .. "ī̆us"
		forms["gen_sg_n"] = stem .. "ī̆us"
		forms["dat_sg_m"] = stem .. "ī"
		forms["dat_sg_f"] = stem .. "ī"
		forms["dat_sg_n"] = stem .. "ī"
	elseif types.not_ius then
		insert_if_not(subtitles, "non-pronominal")
		--insert_if_not(subtitles, "with normal genitive and dative singular")
	end
	if stem == "me" then
		forms["voc_sg_m"] = "mī"
	end
	if types.ic then
		insert_if_not(subtitles, "''hic''-type")
		--insert_if_not(subtitles, "with genitive singular ending in ''-ius'' and dative singular ending in ''-ic''")

		local oc = "oc"
		local oc_macron = "ōc"
		if stem == "ill" then
			oc = "uc"
			oc_macron = "ūc"
		end

		forms["nom_sg_m"] = stem .. "ic"
		forms["nom_sg_f"] = stem .. "aec"
		forms["nom_sg_n"] = stem .. oc
		forms["nom_pl_n"] = stem .. "aec"

		forms["gen_sg_m"] = stem .. "uius"
		forms["gen_sg_f"] = stem .. "uius"
		forms["gen_sg_n"] = stem .. "uius"

		forms["dat_sg_m"] = stem .. "uic"
		forms["dat_sg_f"] = stem .. "uic"
		forms["dat_sg_n"] = stem .. "uic"

		forms["acc_sg_m"] = stem .. "unc"
		forms["acc_sg_f"] = stem .. "anc"
		forms["acc_sg_n"] = stem .. oc
		forms["acc_pl_n"] = stem .. "aec"

		forms["abl_sg_m"] = stem .. "ōc"
		forms["abl_sg_f"] = stem .. "āc"
		forms["abl_sg_n"] = stem .. oc_macron

		forms["voc_sg_m"] = "-"
		forms["voc_sg_f"] = "-"
		forms["voc_sg_n"] = "-"
		forms["voc_pl_m"] = "-"
		forms["voc_pl_f"] = "-"
		forms["voc_pl_n"] = "-"
	end

	if types.distr then
		if stem:sub(-1) == "n" then
			insert_if_not(subtitles, "distributive, normally plural-only; short genitive plurals in ''-num'' preferred")
			forms["gen_pl_m"] = {stem .. "um", stem .. "ōrum"}
			forms["gen_pl_f"] = {stem .. "um", stem .. "ārum"}
			forms["gen_pl_n"] = {stem .. "um", stem .. "ōrum"}
		else
			error("Unrecognized distributive numeral stem (doesn't end in ''n''): " .. stem)
		end
		original = stem
		stem = args[2]
	end

	forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"])
	forms["loc_sg_f"] = deep_copy(forms["gen_sg_f"])
	forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"])
	forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"])
	forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"])
	forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"])

	insert_if_not(categories, "Latin first and second declension " .. pos)
end

decl["1-1+"] = function(data, args)
	local forms, subtitles, categories = data.forms, data.subtitles, data.categories
	local stem = args[1]

	insert_if_not(subtitles, "masculine and neuter forms identical to feminine forms")

	forms["nom_sg_m"] = stem .. "a"
	forms["nom_pl_m"] = stem .. "ae"
	forms["nom_pl_n"] = stem .. "a"

	forms["gen_sg_m"] = stem .. "ae"
	forms["gen_pl_m"] = stem .. "ārum"

	forms["dat_sg_m"] = stem .. "ae"
	forms["dat_pl_m"] = stem .. "īs"

	forms["acc_sg_m"] = stem .. "am"
	forms["acc_sg_n"] = stem .. "a"
	forms["acc_pl_m"] = stem .. "ās"
	forms["acc_pl_n"] = stem .. "a"

	forms["abl_sg_m"] = stem .. "ā"
	forms["abl_pl_m"] = stem .. "īs"

	forms["voc_sg_m"] = stem .. "a"
	forms["voc_pl_m"] = stem .. "ae"
	forms["voc_pl_n"] = stem .. "a"

	forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"])
	forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"])

	insert_if_not(categories, "Latin first declension " .. data.pos)
end

decl["2-2+"] = function(data, args)
	local forms, types, pos, subtitles, categories = data.forms, data.types, data.pos, data.subtitles, data.categories
	local stem = args[1]

	data.title = decl_link("second") .. " " .. singularize(pos)
	insert_if_not(subtitles, "feminine forms identical to masculine forms")

	local us = "us"
	local um = "um"
	local i_pl = stem .. "ī"

	if types.greek then
		insert_if_not(subtitles, "Greek-type")
		insert_if_not(categories, "Latin second declension " .. pos .. " with Greek declension")
		us = "os"
		um = "on"
		i_pl = {i_pl, stem .. "oe"} -- FIXME: add .oe spec.
	end

	forms["nom_sg_m"] = stem .. us
	forms["nom_sg_n"] = stem .. um
	forms["nom_pl_m"] = i_pl
	forms["nom_pl_n"] = stem .. "a"

	forms["gen_sg_m"] = stem .. "ī"
	forms["gen_sg_n"] = stem .. "ī"
	forms["gen_pl_m"] = stem .. "ōrum"
	forms["gen_pl_n"] = stem .. "ōrum"

	forms["dat_sg_m"] = stem .. "ō"
	forms["dat_sg_n"] = stem .. "ō"
	forms["dat_pl_m"] = stem .. "īs"
	forms["dat_pl_n"] = stem .. "īs"

	forms["acc_sg_m"] = stem .. um
	forms["acc_sg_n"] = stem .. um
	forms["acc_pl_m"] = stem .. "ōs"
	forms["acc_pl_n"] = stem .. "a"

	forms["abl_sg_m"] = stem .. "ō"
	forms["abl_sg_n"] = stem .. "ō"
	forms["abl_pl_m"] = stem .. "īs"
	forms["abl_pl_n"] = stem .. "īs"

	forms["voc_sg_m"] = stem .. "e"
	forms["voc_sg_n"] = stem .. um
	forms["voc_pl_m"] = i_pl
	forms["voc_pl_n"] = stem .. "a"

	forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"])
	forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"])
	forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"])
	forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"])

	insert_if_not(categories, "Latin second declension " .. pos)
end

local function abl_i_e(...)
	local function update_slot(forms, slot, f, do_copy)
		if not forms[slot] then
			return do_copy
		elseif do_copy then
			f = deep_copy(f)
		end
		forms[slot] = f
		return true
	end

	function abl_i_e(stem, forms, types)
		local f, do_copy
		if types["abl_e_i"] then
			f = {stem .. "e", stem .. "ī"}
		elseif types["abl_i_e"] then
			f = {stem .. "ī", stem .. "e"}
		else
			return
		end
		do_copy = update_slot(forms, "abl_sg_m", f, do_copy)
		do_copy = update_slot(forms, "abl_sg_f", f, do_copy)
		-- Neuter doesn't take -e with i-stems.
		if not types.I then
			update_slot(forms, "abl_sg_n", f, do_copy)
		end
	end

	return abl_i_e(...)
end

decl["3-1+"] = function(data, args)
	local forms, types, pos, subtitles, notes, categories = data.forms, data.types, data.pos, data.subtitles, data.notes, data.categories
	local stem1, stem2 = args[1], args[2]

	local singpos = singularize(pos)
	if data.gender then
		data.title = decl_link("third") .. " " .. singpos
	else
		data.title = decl_link("third") .. " one-termination " .. singpos
	end

	forms["nom_sg_m"] = stem1
	forms["nom_sg_n"] = stem1
	forms["nom_pl_m"] = stem2 .. "ēs"
	forms["nom_pl_n"] = stem2 .. "ia"

	forms["gen_sg_m"] = stem2 .. "is"
	forms["gen_sg_n"] = stem2 .. "is"
	forms["gen_pl_m"] = stem2 .. "ium"
	forms["gen_pl_n"] = stem2 .. "ium"

	forms["dat_sg_m"] = stem2 .. "ī"
	forms["dat_sg_n"] = stem2 .. "ī"
	forms["dat_pl_m"] = stem2 .. "ibus"
	forms["dat_pl_n"] = stem2 .. "ibus"

	forms["acc_sg_m"] = stem2 .. "em"
	forms["acc_sg_n"] = stem1
	forms["acc_pl_m"] = {stem2 .. "īs", stem2 .. "ēs"}
	forms["acc_pl_n"] = stem2 .. "ia"

	forms["abl_sg_m"] = stem2 .. "ī"
	forms["abl_sg_n"] = stem2 .. "ī"
	forms["abl_pl_m"] = stem2 .. "ibus"
	forms["abl_pl_n"] = stem2 .. "ibus"

	abl_i_e(stem2, forms, types)

	forms["voc_sg_m"] = stem1
	forms["voc_sg_n"] = stem1
	forms["voc_pl_m"] = stem2 .. "ēs"
	forms["voc_pl_n"] = stem2 .. "ia"

	forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"])
	forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"])
	forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"])
	forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"])

	if types.par then
		insert_if_not(subtitles, "non-i-stem")
		forms["nom_pl_n"] = stem2 .. "a"
		forms["gen_pl_m"] = stem2 .. "um"
		forms["gen_pl_n"] = stem2 .. "um"
		forms["abl_sg_m"] = stem2 .. "e"
		forms["abl_sg_n"] = stem2 .. "e"
		forms["loc_sg_m"] = {stem2 .. "ī", stem2 .. "e"} -- Really?
		forms["loc_sg_n"] = {stem2 .. "ī", stem2 .. "e"} -- Why does this happen?
		forms["acc_pl_n"] = stem2 .. "a"
		forms["voc_pl_n"] = stem2 .. "a"
	elseif types.not_par then
		insert_if_not(subtitles, "i-stem")
	end

	local es_base = stem1:match("^(.-)ēs$")
	if es_base and es_base == stem2 then
		if types.greek then
			local note1 = "It is unknown whether adjectives of this type would use i-stem or consonant-stem endings in Classical Latin: the relevant forms are not attested. Depending on the word, either ending or both may be attested in New Latin."
			forms["nom_sg_n"] = stem2 .. "es"
			forms["acc_sg_n"] = stem2 .. "es"
			forms["voc_sg_n"] = stem2 .. "es"
			forms["nom_pl_n"] = {stem2 .. "a", stem2 .. "ia"}
			notes["nom_pl_n2"] = note1
			forms["acc_pl_n"] = {stem2 .. "a", stem2 .. "ia"}
			notes["acc_pl_n2"] = note1
			forms["voc_pl_n"] = {stem2 .. "a", stem2 .. "ia"}
			notes["voc_pl_n2"] = note1
			forms["abl_sg_m"] = {stem2 .. "e", stem2 .. "ī"}
			notes["abl_sg_m2"] = note1
			forms["abl_sg_n"] = {stem2 .. "e", stem2 .. "ī"}
			notes["abl_sg_n2"] = note1
			forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"])
			notes["loc_sg_m2"] = note1
			forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"])
			notes["loc_sg_n2"] = note1
			forms["gen_pl_m"] = {stem2 .. "um", stem2 .. "ium"}
			notes["gen_pl_m2"] = note1
			forms["gen_pl_n"] = {stem2 .. "um", stem2 .. "ium"}
			notes["gen_pl_n2"] = note1
			insert_if_not(subtitles, "Greek-type")
		elseif types.not_greek then
			insert_if_not(subtitles, "non-Greek-type")
		end
	end

	insert_if_not(categories, "Latin third declension " .. pos)
	insert_if_not(categories, "Latin third declension " .. pos .. " of one termination")
end

decl["3-def+"] = function(data, args)
	local forms, types, pos, subtitles, notes, categories = data.forms, data.types, data.pos, data.subtitles, data.notes, data.categories
	local stem1, stem2 = args[1], args[2]

	local singpos = singularize(pos)
	if data.gender then
		data.title = decl_link("third") .. " " .. singpos
	else
		data.title = decl_link("third") .. " defective " .. singpos
	end

	forms["nom_sg_m"] = stem1
	forms["nom_sg_n"] = stem1
	forms["nom_pl_m"] = stem2 .. "ēs"
	forms["nom_pl_n"] = stem2 .. "ia"

	forms["gen_sg_m"] = stem2 .. "is"
	forms["gen_sg_n"] = stem2 .. "is"
	forms["gen_pl_m"] = stem2 .. "ium"
	forms["gen_pl_n"] = stem2 .. "ium"

	forms["dat_sg_m"] = stem2 .. "ī"
	forms["dat_sg_n"] = stem2 .. "ī"
	forms["dat_pl_m"] = stem2 .. "ibus"
	forms["dat_pl_n"] = stem2 .. "ibus"

	forms["acc_sg_m"] = stem2 .. "em"
	forms["acc_sg_n"] = stem1
	forms["acc_pl_m"] = stem2 .. "ēs"
	forms["acc_pl_n"] = stem2 .. "ia"

	forms["abl_sg_m"] = stem2 .. "ī"
	forms["abl_sg_n"] = stem2 .. "ī"
	forms["abl_pl_m"] = stem2 .. "ibus"
	forms["abl_pl_n"] = stem2 .. "ibus"

	forms["voc_sg_m"] = stem1
	forms["voc_sg_n"] = stem1
	forms["voc_pl_m"] = stem2 .. "ēs"
	forms["voc_pl_n"] = stem2 .. "ia"

	if types.tor then
		data.title = decl_link("third") .. " masculine-only " .. singpos
		insert_if_not(subtitles, "non-i-stem")
		remove_forms(forms, {"_f$", "_n$"})

		forms["nom_sg_m"] = stem1
		forms["gen_sg_m"] = stem2 .. "is"
		forms["dat_sg_m"] = stem2 .. "ī"
		forms["acc_sg_m"] = stem2 .. "em"
		forms["abl_sg_m"] = stem2 .. "e"
		forms["voc_sg_m"] = stem1
		forms["nom_pl_m"] = stem2 .. "ēs"
		forms["gen_pl_m"] = stem2 .. "um"
		forms["dat_pl_m"] = stem2 .. "ibus"
		forms["acc_pl_m"] = stem2 .. "ēs"
		forms["abl_pl_m"] = stem2 .. "ibus"
		forms["voc_pl_m"] = stem2 .. "ēs"

		insert_if_not(categories, "Latin third declension masculine-only adjectives")
	end

	if types.trix then
		insert_if_not(subtitles, "feminine-only when singular, feminine or neuter when plural")
		remove_forms(forms, {"_m$", "sg_n$"})

		forms["nom_sg_f"] = stem1
		forms["gen_sg_f"] = stem2 .. "is"
		forms["dat_sg_f"] = stem2 .. "ī"
		forms["acc_sg_f"] = stem2 .. "em"
		forms["abl_sg_f"] = {stem2 .. "e", stem2 .. "ī"}
		forms["voc_sg_f"] = stem1
		forms["nom_pl_f"] = stem2 .. "ēs"
		forms["gen_pl_f"] = stem2 .. "ium"
		forms["dat_pl_f"] = stem2 .. "ibus"
		forms["acc_pl_f"] = stem2 .. "ēs"
		forms["abl_pl_f"] = stem2 .. "ibus"
		forms["voc_pl_f"] = stem2 .. "ēs"

		insert_if_not(categories, "Latin third declension feminine- and neuter-only adjectives")
	end

	if types.trixf then
		data.title = decl_link("third") .. " feminine-only " .. singpos
		remove_forms(forms, {"_m$", "_n$"})

		forms["nom_sg_f"] = stem1
		forms["gen_sg_f"] = stem2 .. "is"
		forms["dat_sg_f"] = stem2 .. "ī"
		forms["acc_sg_f"] = stem2 .. "em"
		forms["abl_sg_f"] = {stem2 .. "e", stem2 .. "ī"}
		forms["voc_sg_f"] = stem1
		forms["nom_pl_f"] = stem2 .. "ēs"
		forms["gen_pl_f"] = stem2 .. "ium"
		forms["dat_pl_f"] = stem2 .. "ibus"
		forms["acc_pl_f"] = stem2 .. "ēs"
		forms["abl_pl_f"] = stem2 .. "ibus"
		forms["voc_pl_f"] = stem2 .. "ēs"

		insert_if_not(categories, "Latin third declension feminine-only adjectives")
	end

	if types.idis then
		data.title = decl_link("third") .. " feminine-only " .. singpos
		insert_if_not(subtitles, "non-i-stem")
		remove_forms(forms, {"_m$", "_n$"})

		forms["nom_sg_f"] = stem1
		forms["gen_sg_f"] = {stem2 .. "is", stem2 .. "os"}
		forms["dat_sg_f"] = stem2 .. "ī"
		forms["acc_sg_f"] = {stem2 .. "em", stem2 .. "a"}
		forms["abl_sg_f"] = stem2 .. "e"
		forms["voc_sg_f"] = stem1
		forms["nom_pl_f"] = {stem2 .. "ēs", stem2 .. "es"}
		forms["gen_pl_f"] = stem2 .. "um"
		forms["dat_pl_f"] = stem2 .. "ibus"
		forms["acc_pl_f"] = {stem2 .. "ēs", stem2 .. "as"}
		forms["abl_pl_f"] = stem2 .. "ibus"
		forms["voc_pl_f"] = {stem2 .. "ēs", stem2 .. "es"}

		insert_if_not(categories, "Latin third declension feminine-only adjectives")
	end

	forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"])
	forms["loc_sg_f"] = deep_copy(forms["abl_sg_f"])
	forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"])
	forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"])
	forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"])
	forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"])

	insert_if_not(categories, "Latin third declension " .. pos)
end

decl["3-C+"] = function(data, args)
	local forms, types, pos, categories = data.forms, data.types, data.pos, data.categories
	local stem1 = args[1]
	local stem2 = stem1 .. "ōr"

    data.title = decl_link("third") .. " comparative " .. singularize(pos)

	forms["nom_sg_m"] = stem1 .. "or"
	forms["nom_sg_n"] = stem1 .. "us"
	forms["nom_pl_m"] = stem2 .. "ēs"
	forms["nom_pl_n"] = stem2 .. "a"

	forms["gen_sg_m"] = stem2 .. "is"
	forms["gen_sg_n"] = stem2 .. "is"
	forms["gen_pl_m"] = stem2 .. "um"
	forms["gen_pl_n"] = stem2 .. "um"

	forms["dat_sg_m"] = stem2 .. "ī"
	forms["dat_sg_n"] = stem2 .. "ī"
	forms["dat_pl_m"] = stem2 .. "ibus"
	forms["dat_pl_n"] = stem2 .. "ibus"

	forms["acc_sg_m"] = stem2 .. "em"
	forms["acc_sg_n"] = stem1 .. "us"
	forms["acc_pl_m"] = {stem2 .. "ēs", stem2 .. "īs"}
	forms["acc_pl_n"] = stem2 .. "a"

	forms["abl_sg_m"] = stem2 .. "ī"
	forms["abl_sg_n"] = stem2 .. "ī"
	forms["abl_pl_m"] = stem2 .. "ibus"
	forms["abl_pl_n"] = stem2 .. "ibus"

	abl_i_e(stem2, forms, types)

	forms["voc_sg_m"] = stem1 .. "or"
	forms["voc_sg_n"] = stem1 .. "us"
	forms["voc_pl_m"] = stem2 .. "ēs"
	forms["voc_pl_n"] = stem2 .. "a"

	forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"])
	forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"])
	forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"])
	forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"])

	insert_if_not(categories, "Latin third declension " .. pos)
	insert_if_not(categories, "Latin comparative adjectives")
end

decl["3-P+"] = function(data, args)
	local forms, notes = data.forms, data.notes
	local stem2 = args[2]

	decl["3-1+"](data, args)
	data.title = decl_link("third") .. " participle"
	local note1 = "When used purely as an adjective."

	forms["abl_sg_m"] = {stem2 .. "e", stem2 .. "ī"}
	notes["abl_sg_m2"] = note1
	forms["abl_sg_n"] = {stem2 .. "e", stem2 .. "ī"}
	notes["abl_sg_n2"] = note1
	forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"])
	notes["loc_sg_m2"] = note1
	forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"])
	notes["loc_sg_n2"] = note1
	forms["acc_pl_m"] = {stem2 .. "ēs", stem2 .. "īs"}
end

decl["3-2+"] = function(data, args)
	local forms, types, pos, categories = data.forms, data.types, data.pos, data.categories
	local stem = args[1]

	local singpos = singularize(pos)
	if data.gender then
		data.title = decl_link("third") .. " " .. singpos
	else
		data.title = decl_link("third") .. " two-termination " .. singpos
	end

	forms["nom_sg_m"] = stem .. "is"
	forms["nom_sg_n"] = stem .. "e"
	forms["nom_pl_m"] = stem .. "ēs"
	forms["nom_pl_n"] = stem .. "ia"

	forms["gen_sg_m"] = stem .. "is"
	forms["gen_sg_n"] = stem .. "is"
	forms["gen_pl_m"] = stem .. "ium"
	forms["gen_pl_n"] = stem .. "ium"

	forms["dat_sg_m"] = stem .. "ī"
	forms["dat_sg_n"] = stem .. "ī"
	forms["dat_pl_m"] = stem .. "ibus"
	forms["dat_pl_n"] = stem .. "ibus"

	forms["acc_sg_m"] = stem .. "em"
	forms["acc_sg_n"] = stem .. "e"
	forms["acc_pl_m"] = {stem .. "īs", stem .. "ēs"}
	forms["acc_pl_n"] = stem .. "ia"

	forms["abl_sg_m"] = stem .. "ī"
	forms["abl_sg_n"] = stem .. "ī"
	forms["abl_pl_m"] = stem .. "ibus"
	forms["abl_pl_n"] = stem .. "ibus"

	-- abl_i_e(stem, forms, types) -- enable once [[Module:la-nominal]] has ben updated

	forms["voc_sg_m"] = stem .. "is"
	forms["voc_sg_n"] = stem .. "e"
	forms["voc_pl_m"] = stem .. "ēs"
	forms["voc_pl_n"] = stem .. "ia"

	forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"])
	forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"])
	forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"])
	forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"])

	insert_if_not(categories, "Latin third declension " .. pos)
	insert_if_not(categories, "Latin third declension " .. pos .. " of two terminations")
end

decl["3-3+"] = function(data, args)
	local forms, types, pos, categories = data.forms, data.types, data.pos, data.categories
	local stem1, stem2 = args[1], args[2]

	local singpos = singularize(pos)
	if data.gender then
		data.title = decl_link("third") .. " " .. singpos
	else
		data.title = decl_link("third") .. " three-termination " .. singpos
	end

	forms["nom_sg_m"] = stem1
	forms["nom_sg_f"] = stem2 .. "is"
	forms["nom_sg_n"] = stem2 .. "e"
	forms["nom_pl_m"] = stem2 .. "ēs"
	forms["nom_pl_f"] = stem2 .. "ēs"
	forms["nom_pl_n"] = stem2 .. "ia"

	forms["gen_sg_m"] = stem2 .. "is"
	forms["gen_sg_f"] = stem2 .. "is"
	forms["gen_sg_n"] = stem2 .. "is"
	forms["gen_pl_m"] = stem2 .. "ium"
	forms["gen_pl_f"] = stem2 .. "ium"
	forms["gen_pl_n"] = stem2 .. "ium"

	forms["dat_sg_m"] = stem2 .. "ī"
	forms["dat_sg_f"] = stem2 .. "ī"
	forms["dat_sg_n"] = stem2 .. "ī"
	forms["dat_pl_m"] = stem2 .. "ibus"
	forms["dat_pl_f"] = stem2 .. "ibus"
	forms["dat_pl_n"] = stem2 .. "ibus"

	forms["acc_sg_m"] = stem2 .. "em"
	forms["acc_sg_f"] = stem2 .. "em"
	forms["acc_sg_n"] = stem2 .. "e"
	forms["acc_pl_m"] = {stem2 .. "īs", stem2 .. "ēs"}
	forms["acc_pl_f"] = {stem2 .. "īs", stem2 .. "ēs"}
	forms["acc_pl_n"] = stem2 .. "ia"

	forms["abl_sg_m"] = stem2 .. "ī"
	forms["abl_sg_f"] = stem2 .. "ī"
	forms["abl_sg_n"] = stem2 .. "ī"
	forms["abl_pl_m"] = stem2 .. "ibus"
	forms["abl_pl_f"] = stem2 .. "ibus"
	forms["abl_pl_n"] = stem2 .. "ibus"

	-- abl_i_e(stem2, forms, types) -- enable once [[Module:la-nominal]] has ben updated

	forms["voc_sg_m"] = stem1
	forms["voc_sg_f"] = stem2 .. "is"
	forms["voc_sg_n"] = stem2 .. "e"
	forms["voc_pl_m"] = stem2 .. "ēs"
	forms["voc_pl_f"] = stem2 .. "ēs"
	forms["voc_pl_n"] = stem2 .. "ia"

	forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"])
	forms["loc_sg_f"] = deep_copy(forms["abl_sg_f"])
	forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"])
	forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"])
	forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"])
	forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"])

	insert_if_not(categories, "Latin third declension " .. pos)
	insert_if_not(categories, "Latin third declension " .. pos .. " of three terminations")
end

decl["indecl+"] = function(data, args)
	local forms, subtitles, categories = data.forms, data.subtitles, data.categories
	local stem = args[1]

	insert_if_not(subtitles, "used only in the nominative and accusative")

	forms["nom_sg_m"] = stem
	forms["nom_pl_m"] = "-"

	forms["gen_sg_m"] = "-"
	forms["gen_pl_m"] = "-"

	forms["dat_sg_m"] = "-"
	forms["dat_pl_m"] = "-"

	forms["acc_sg_m"] = stem
	forms["acc_pl_m"] = "-"

	forms["abl_sg_m"] = "-"
	forms["abl_pl_m"] = "-"

	forms["voc_sg_m"] = "-"
	forms["voc_pl_m"] = "-"

	forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"])
	forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"])

	insert_if_not(categories, "Latin indeclinable " .. data.pos)
end

decl["irreg+"] = function(data,args)
	local forms, types, pos, notes, categories = data.forms, data.types, data.pos, data.notes, data.categories
	local arg1 = args[1]

	if arg1 == "duo" or arg1 == "ambō" then
		local stem = usub(arg1, 1, -2)
		data.title = stem == "amb" and glossary_link("irregular") .. " adjective" or "numeral"
		data.num = "pl"

		local stem_with_o = stem .. (stem == "amb" and "ō" or "o")
		local note1 = "''[[duom#Latin|duom]]'' in Old Latin."

		forms["nom_pl_m"] = stem_with_o
		forms["nom_pl_f"] = stem .. "ae"
		forms["nom_pl_n"] = stem_with_o

		forms["gen_pl_m"] = stem .. "ōrum"
		forms["gen_pl_f"] = stem .. "ārum"
		forms["gen_pl_n"] = stem .. "ōrum"

		forms["dat_pl_m"] = stem .. "ōbus"
		forms["dat_pl_f"] = stem .. "ābus"
		forms["dat_pl_n"] = stem .. "ōbus"

		forms["acc_pl_m"] = {stem .. "ōs", stem_with_o}
		forms["acc_pl_f"] = stem .. "ās"
		forms["acc_pl_n"] = stem_with_o

		forms["abl_pl_m"] = stem .. "ōbus"
		forms["abl_pl_f"] = stem .. "ābus"
		forms["abl_pl_n"] = stem .. "ōbus"

		forms["voc_pl_m"] = stem_with_o
		forms["voc_pl_f"] = stem .. "ae"
		forms["voc_pl_n"] = stem_with_o

		if stem == "du" then
			forms["gen_pl_m"] = {forms["gen_pl_m"], "duum"}
			notes["gen_pl_m2"] = note1
			forms["gen_pl_n"] = {forms["gen_pl_n"], "duum"}
			notes["gen_pl_n2"] = note1
		end

	elseif arg1:sub(-6) == "mīlle" then
		data.title = "semi-" .. glossary_link("indeclinable") .. " numeral"

		local stem = arg1:sub(1, -3)

		forms["nom_sg_m"] = stem .. "le"
		forms["nom_pl_m"] = {stem .. "ia", stem .. "lia"}

		forms["gen_sg_m"] = stem .. "le"
		forms["gen_pl_m"] = {stem .. "ium", stem .. "lium"}

		forms["dat_sg_m"] = stem .. "le"
		forms["dat_pl_m"] = {stem .. "ibus", stem .. "libus"}

		forms["acc_sg_m"] = stem .. "le"
		forms["acc_pl_m"] = {stem .. "ia", stem .. "lia"}

		forms["abl_sg_m"] = stem .. "le"
		forms["abl_pl_m"] = {stem .. "ibus", stem .. "libus"}

		forms["voc_sg_m"] = stem .. "le"
		forms["voc_pl_m"] = {stem .. "ia", stem .. "lia"}

		forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"])
		forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"])

	elseif arg1 == "ille" or arg1 == "iste" or arg1 == "ipse" or arg1 == "olle"  then
		local stem = arg1:sub(1, -2)
		types.ius = true
		decl["1&2+"](data, {stem})

		data.title = glossary_link("demonstrative") .. " " .. singularize(data.pos)

		forms["nom_sg_m"] = arg1
		if arg1 == "ipse" then
			local note1 = "Medieval Latin."

			add_form(forms, "nom_sg_n", stem, "ud")
			notes["nom_sg_n2"] = note1

			add_form(forms, "acc_sg_n", stem, "ud")
			notes["acc_sg_n2"] = note1
		else
			forms["nom_sg_n"] = stem .. "ud"
			forms["acc_sg_n"] = stem .. "ud"
		end

		forms["voc_sg_m"] = "-"
		forms["voc_sg_f"] = "-"
		forms["voc_sg_n"] = "-"
		forms["voc_pl_m"] = "-"
		forms["voc_pl_f"] = "-"
		forms["voc_pl_n"] = "-"

		empty_table(categories)

	elseif arg1 == "illic" or arg1 == "istic" or arg1 == "isthic" then
		data.title = glossary_link("demonstrative") .. " " .. singularize(data.pos)

		local stem, unattested = arg1:sub(1, -3), data.unattested

		forms["nom_sg_m"] = stem .. "ic"
		forms["nom_sg_f"] = stem .. "aec"
		forms["nom_sg_n"] = {stem .. "uc", stem .. "ucce", stem .. "oc"}

		forms["gen_sg_m"] = stem .. "ī̆usce"
		forms["gen_sg_f"] = stem .. "ī̆usce"
		forms["gen_sg_n"] = stem .. "ī̆usce"

		forms["dat_sg_m"] = stem .. "īc"
		forms["dat_sg_f"] = stem .. "īc"
		forms["dat_sg_n"] = stem .. "īc"

		forms["acc_sg_m"] = stem .. "unc"
		forms["acc_sg_f"] = stem .. "anc"
		forms["acc_sg_n"] = {stem .. "uc", stem .. "ucce", stem .. "oc"}

		forms["abl_sg_m"] = stem .. "ōc"
		forms["abl_sg_f"] = stem .. "āc"
		forms["abl_sg_n"] = stem .. "ōc"

		forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"])
		forms["loc_sg_f"] = deep_copy(forms["gen_sg_f"])
		forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"])

		forms["nom_pl_m"] = stem .. "īsce"
		forms["nom_pl_f"] = stem .. "aec"
		forms["nom_pl_n"] = stem .. "aec"

		forms["gen_pl_m"] = stem .. "ōrunc"
		unattested["gen_pl_m"] = true
		forms["gen_pl_f"] = stem .. "ārunc"
		unattested["gen_pl_f"] = true
		forms["gen_ok_n"] = stem .. "ōrunc"
		unattested["gen_pl_n"] = true

		forms["dat_pl_m"] = stem .. "īsce"
		forms["dat_pl_f"] = stem .. "īsce"
		forms["dat_pl_n"] = stem .. "īsce"

		forms["acc_pl_m"] = stem .. "ōsce"
		forms["acc_pl_f"] = stem .. "āsce"
		forms["acc_pl_n"] = stem .. "aec"

		forms["abl_pl_m"] = stem .. "īsce"
		forms["abl_pl_f"] = stem .. "īsce"
		forms["abl_pl_n"] = stem .. "īsce"

		forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"])
		forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"])
		forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"])

	elseif arg1 == "hice" then
		data.title = glossary_link("demonstrative") .. " pronoun"

		forms["nom_sg_m"] = "hice"
		forms["nom_sg_f"] = "haece"
		forms["nom_sg_n"] = "hoce"
		forms["nom_pl_m"] = "hīce"
		forms["nom_pl_f"] = "haece"
		forms["nom_pl_n"] = "haece"

		forms["gen_sg_m"] = "huiusce"
		forms["gen_sg_f"] = "huiusce"
		forms["gen_sg_n"] = "huiusce"
		forms["gen_pl_m"] = {"hōrunce", "hōrumce"}
		forms["gen_pl_f"] = {"hārunce", "hārumce"}
		forms["gen_pl_n"] = {"hōrunce", "hōrumce"}

		forms["dat_sg_m"] = "huīce"
		forms["dat_sg_f"] = "huīce"
		forms["dat_sg_n"] = "huīce"
		forms["dat_pl_m"] = "hīsce"
		forms["dat_pl_f"] = "hīsce"
		forms["dat_pl_n"] = "hīsce"

		forms["acc_sg_m"] = "hunce"
		forms["acc_sg_f"] = "hance"
		forms["acc_sg_n"] = "hoce"
		forms["acc_pl_m"] = "hōsce"
		forms["acc_pl_f"] = "hāsce"
		forms["acc_pl_n"] = "haece"

		forms["abl_sg_m"] = "hōce"
		forms["abl_sg_f"] = "hāce"
		forms["abl_sg_n"] = "hōce"
		forms["abl_pl_m"] = "hīsce"
		forms["abl_pl_f"] = "hīsce"
		forms["abl_pl_n"] = "hīsce"

		forms["loc_sg_m"] = deep_copy(forms["gen_sg_m"])
		forms["loc_sg_f"] = deep_copy(forms["gen_sg_f"])
		forms["loc_sg_n"] = deep_copy(forms["gen_sg_n"])
		forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"])
		forms["loc_pl_f"] = deep_copy(forms["abl_pl_f"])
		forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"])

	elseif arg1 == "plūs" then
		data.title = glossary_link("irregular") .. " " .. decl_link("third") .. " comparative " .. singularize(pos) .. ", plural-only in Classical Latin"
		local note1 = "None of the singular forms are used as adjectives in Classical Latin."

		forms["nom_sg_n"] = "plūs"
		notes["nom_sg_n1"] = note1
		forms["nom_pl_m"] = "plūrēs"
		forms["nom_pl_n"] = "plūra"

		forms["gen_sg_m"] = "plūris"
		notes["gen_sg_m1"] = note1
		forms["gen_sg_n"] = "plūris"
		notes["gen_sg_n1"] = note1
		forms["gen_pl_m"] = "plūrium"
		forms["gen_pl_n"] = "plūrium"

		forms["dat_sg_m"] = "plūrī"
		notes["dat_sg_m1"] = note1
		forms["dat_sg_n"] = "plūrī"
		notes["dat_sg_n1"] = note1
		forms["dat_pl_m"] = "plūribus"
		forms["dat_pl_n"] = "plūribus"

		forms["acc_sg_m"] = "plūrem"
		notes["acc_sg_m1"] = note1
		forms["acc_sg_f"] = "plūrem"
		notes["acc_sg_f1"] = note1
		forms["acc_sg_n"] = "plūs"
		notes["acc_sg_n1"] = note1
		forms["acc_pl_m"] = {"plūrēs", "plūrīs"}
		forms["acc_pl_n"] = "plūra"

		forms["abl_sg_m"] = {"plūrī", "plūre"}
		notes["abl_sg_m1"] = note1
		notes["abl_sg_m2"] = note1
		forms["abl_sg_f"] = {"plūrī", "plūre"}
		notes["abl_sg_f1"] = note1
		notes["abl_sg_f2"] = note1
		forms["abl_sg_n"] = {"plūrī", "plūre"}
		notes["abl_sg_n1"] = note1
		notes["abl_sg_n2"] = note1
		forms["abl_pl_m"] = "plūribus"
		forms["abl_pl_n"] = "plūribus"

		forms["voc_sg_n"] = "plūs"
		notes["voc_sg_n1"] = note1
		forms["voc_pl_m"] = "plūrēs"
		forms["voc_pl_n"] = "plūra"

		forms["loc_sg_m"] = deep_copy(forms["abl_sg_m"])
		notes["loc_sg_m1"] = note1
		notes["loc_sg_m2"] = note1
		forms["loc_sg_f"] = deep_copy(forms["abl_sg_f"])
		notes["loc_sg_f1"] = note1
		notes["loc_sg_f2"] = note1
		forms["loc_sg_n"] = deep_copy(forms["abl_sg_n"])
		notes["loc_sg_n1"] = note1
		notes["loc_sg_n2"] = note1
		forms["loc_pl_m"] = deep_copy(forms["abl_pl_m"])
		forms["loc_pl_n"] = deep_copy(forms["abl_pl_n"])

		insert_if_not(categories, "Latin third declension " .. pos)
		insert_if_not(categories, "Latin third declension " .. pos .. " of one termination")

	elseif umatch(arg1, "^egō̆?$") or arg1 == "nōs" then
		data.title = glossary_link("personal") .. " pronoun"

		forms["nom_sg_m"] = arg1
		forms["nom_pl_m"] = "nōs"

		forms["gen_sg_m"] = "meī"
		forms["gen_pl_m"] = {"nostrī", "nostrum"}

		forms["dat_sg_m"] = "mihī̆"
		forms["dat_pl_m"] = "nōbīs"

		forms["acc_sg_m"] = {"mē", "mēmē"}
		forms["acc_pl_m"] = "nōs"

		forms["abl_sg_m"] = {"mē", "mēmē"}
		forms["abl_pl_m"] = "nōbīs"

		forms["voc_sg_m"] = arg1
		forms["voc_pl_m"] = "nōs"

	elseif arg1 == "tū" or arg1 == "vōs" then
		data.title = glossary_link("personal") .. " pronoun"

		forms["nom_sg_m"] = arg1
		forms["nom_pl_m"] = "vōs"

		forms["gen_sg_m"] = "tuī"
		forms["gen_pl_m"] = {"vestrī", "vestrum"}

		forms["dat_sg_m"] = "tibī̆"
		forms["dat_pl_m"] = "vōbīs"

		forms["acc_sg_m"] = {"tē", "tētē"}
		forms["acc_pl_m"] = "vōs"

		forms["abl_sg_m"] = {"tē", "tētē"}
		forms["abl_pl_m"] = "vōbīs"

		forms["voc_sg_m"] = arg1
		forms["voc_pl_m"] = "vōs"

	elseif arg1 == "suī" then
		data.title = glossary_link("reflexive") .. " pronoun"

		forms["nom_sg_m"] = "-"
		forms["nom_pl_m"] = "-"

		forms["gen_sg_m"] = arg1
		forms["gen_pl_m"] = forms["gen_sg_m"]

		forms["dat_sg_m"] = "sibī̆"
		forms["dat_pl_m"] = forms["dat_sg_m"]

		forms["acc_sg_m"] = {"sē", "sēsē"}
		forms["acc_pl_m"] = {"sē", "sēsē"}

		forms["abl_sg_m"] = {"sē", "sēsē"}
		forms["abl_pl_m"] = {"sē", "sēsē"}

		forms["voc_sg_m"] = "-"
		forms["voc_pl_m"] = "-"

	elseif arg1 == "is" or arg1 == "īdem" then
		data.title = glossary_link("demonstrative") .. " pronoun"

		local note1 = "The dat. singular is found spelled <small>EIEI</small> (here represented as ''ēī'') and scanned as two longs in Plautus, but also as a monosyllable. The latter is its normal scansion in Classical. Other spellings include <small>EEI, IEI</small>."

		local note2 = "The nom./dat./abl. plural forms regularly developed into a monosyllable  /iː(s)/, with later remodelling - compare the etymology of [[deus]]. This /iː/ was normally spelled as <small>EI</small> during and as <small>II</small> after the Republic; a disyllabic ''iī'', spelled <small>II, Iꟾ</small>, appears in Silver Age poetry, while disyllabic ''eīs'' is only post-Classical. Other spellings include <small>EEI(S), EIEI(S), IEI(S)</small>."

		forms["nom_sg_m"] = "is"
		forms["nom_sg_f"] = "ea"
		forms["nom_sg_n"] = "id"
		forms["nom_pl_m"] = {"iī", "eī", "ī"}
		notes["nom_pl_m1"] = note2
		forms["nom_pl_f"] = "eae"
		forms["nom_pl_n"] = "ea"

		forms["gen_sg_m"] = {"eius", "ejus"}
		forms["gen_sg_f"] = {"eius", "ejus"}
		forms["gen_sg_n"] = {"eius", "ejus"}
		forms["gen_pl_m"] = {"eōrum", "eum"}
		forms["gen_pl_f"] = "eārum"
		forms["gen_pl_n"] = {"eōrum", "eum"}


		forms["dat_sg_m"] = {"eī", "e͡i", "ēī"}
		notes["dat_sg_m1"] = note1
		forms["dat_sg_f"] = {"eī", "e͡i", "ēī", "eae"}
		notes["dat_sg_f1"] = note1
		forms["dat_sg_n"] = {"eī", "e͡i", "ēī"}
		notes["dat_sg_n1"] = note1
		forms["dat_pl_m"] = {"iīs", "eīs", "īs"}
		notes["dat_pl_m1"] = note2
		forms["dat_pl_f"] = {"iīs", "eīs", "īs", "eābus"}
		notes["dat_pl_f1"] = note2
		forms["dat_pl_n"] = {"iīs", "eīs", "īs"}
		notes["dat_pl_n1"] = note2

		forms["acc_sg_m"] = "eum"
		forms["acc_sg_f"] = "eam"
		forms["acc_sg_n"] = "id"
		forms["acc_pl_m"] = "eōs"
		forms["acc_pl_f"] = "eās"
		forms["acc_pl_n"] = "ea"

		forms["abl_sg_m"] = "eō"
		forms["abl_sg_f"] = "eā"
		forms["abl_sg_n"] = "eō"
		forms["abl_pl_m"] = {"iīs", "eīs", "īs"}
		notes["abl_pl_m1"] = note2
		forms["abl_pl_f"] = {"iīs", "eīs", "īs"}
		notes["abl_pl_f1"] = note2
		forms["abl_pl_n"] = {"iīs", "eīs", "īs"}
		notes["abl_pl_n1"] = note2

		if arg1 == "īdem" then
			forms["nom_sg_m"] = "ī"
			forms["nom_sg_n"] = "i"
			forms["acc_sg_n"] = "i"
		end

	elseif arg1 == "quis" or arg1 == "quī" then

		local note1 = "When used as an indefinite word (pronoun or determiner), the feminine nominative singular and neuter nominative/accusative plural is usually ''qua'' (with short ''ă'') instead of ''quae''. Indefinite ''quă'' is generally only found directly after ''[[si#Latin|sī]]'', ''[[nisi#Latin|nisi]]'', ''[[num#Latin|num]]'', or ''[[ne#Latin|nē]]'' and may be considered to be either enclitic to the preceding word or (in Priscian's view) forming a compound with it; accordingly, ''[[siqua#Latin|sīqua]]'', ''[[numqua#Latin|numqua]]'', and ''[[nequa#Latin|nēqua]]'' are sometimes written together (as also are the masculines ''[[siquis#Latin|sīquis]]'', ''[[numquis#Latin|numquis]]'', and ''[[nequis#Latin|nēquis]]''). The form ''quă'' is never used for the feminine plural, nor for any form of the relative pronoun or of the interrogative pronoun or determiner."

		local note2 = "In Republican Latin or earlier, alternative spellings could be found for the following forms of ''[[qui#Latin|quī]]''/''[[quis#Latin|quis]]'' and its compounds: the masculine nominative singular or plural ''quī'' (old spelling ''[[quei]]''), the genitive singular ''cuius'' (old spelling ''[[quoius]]''), the dative singular ''cui'' (old spelling ''[[quoi]]'' or ''[[quoiei]]''), the dative/ablative plural ''quīs'' (old spelling ''[[queis]]'')."

		local note3 = "Feminine ''quis'' and ''quem'' are attested mainly in early Latin authors (Ennius, Pacuvius, and Plautus)."

		local id = "id"
		if arg1 == "quī" then
			id = "od"
			forms["nom_sg_m"] = {"quī", "quis"}
			notes["nom_sg_m1"] = note2
			forms["nom_sg_f"] = {"quae", "qua"}
			notes["nom_sg_f2"] = note1
			forms["acc_sg_f"] = "quam"
			forms["abl_sg_m"] = "quō"
			forms["abl_sg_f"] = "quā"
			forms["abl_sg_n"] = "quō"
			data.title = glossary_link("relative") .. "/" .. glossary_link("interrogative") .. " determiner"
		else
			forms["nom_sg_m"] = {"quis", "quī"}
			notes["nom_sg_m2"] = note2
			forms["nom_sg_f"] = {"quae", "qua", "quis"}
			notes["nom_sg_f2"] = note1
			notes["nom_sg_f3"] = note3
			forms["acc_sg_f"] = {"quam", "quem"}
			notes["acc_sg_f2"] = note3
			forms["abl_sg_m"] = {"quō", "quī"}
			forms["abl_sg_f"] = {"quā", "quī"}
			forms["abl_sg_n"] = {"quō", "quī"}
			data.title = glossary_link("relative") .. "/" .. glossary_link("interrogative") .. " pronoun"
		end

		forms["nom_sg_n"] = "qu"..id
		forms["nom_pl_m"] = "quī"
		notes["nom_pl_m1"] = note2
		forms["nom_pl_f"] = "quae"
		forms["nom_pl_n"] = {"quae", "qua"}
		notes["nom_pl_n2"] = note1

		forms["gen_sg_m"] = "cuius"
		forms["gen_sg_f"] = "cuius"
		forms["gen_sg_n"] = "cuius"
		notes["gen_sg_m1"] = note2
		notes["gen_sg_f1"] = note2
		notes["gen_sg_n1"] = note2
		forms["gen_pl_m"] = "quōrum"
		forms["gen_pl_f"] = "quārum"
		forms["gen_pl_n"] = "quōrum"

		forms["dat_sg_m"] = "cui"
		forms["dat_sg_f"] = "cui"
		forms["dat_sg_n"] = "cui"
		notes["dat_sg_m1"] = note2
		notes["dat_sg_f1"] = note2
		notes["dat_sg_n1"] = note2
		forms["dat_pl_m"] = {"quibus", "quīs"}
		forms["dat_pl_f"] = {"quibus", "quīs"}
		forms["dat_pl_n"] = {"quibus", "quīs"}
		notes["dat_pl_m2"] = note2
		notes["dat_pl_f2"] = note2
		notes["dat_pl_n2"] = note2

		forms["acc_sg_m"] = "quem"
		forms["acc_sg_n"] = "qu"..id
		forms["acc_pl_m"] = "quōs"
		forms["acc_pl_f"] = "quās"
		forms["acc_pl_n"] = {"quae", "qua"}
		notes["acc_pl_n2"] = note1

		forms["abl_pl_m"] = {"quibus", "quīs"}
		forms["abl_pl_f"] = {"quibus", "quīs"}
		forms["abl_pl_n"] = {"quibus", "quīs"}
		notes["abl_pl_m2"] = note2
		notes["abl_pl_f2"] = note2
		notes["abl_pl_n2"] = note2

	elseif arg1 == "aliquī" then
		data.title = glossary_link("indefinite") .. " " .. glossary_link("determiner")

		local note1 = "Normatively, [[aliqui#Latin|aliquī]] is a determiner (used adjectivally) and [[aliquis#Latin|aliquis]] is a pronoun (used substantively), but the opposite usages can be found, even among the best Classical writers."
		local note2 = "The feminine nominative singular form is usually ''aliqua'', but there are a handful of possible examples of ''aliquae'' as a feminine nominative singular form; see [[Citations:aliquae]]. The feminine nominative plural can only be ''aliquae'', and there are perhaps no solid examples of the neuter nominative/accusative plural taking any form other than ''aliqua''."
		local note3 = "Alternative spelling [[aliquoius]] (used in Republican Latin or earlier)."
		local note4 = "Alternative spelling [[aliqueis]] (used in Republican Latin or earlier)."
		local note5 = "Alternative spelling [[aliquoi]] (used in Republican Latin or earlier)."

		forms["nom_sg_m"] = {"aliquī", "aliquis"}
		notes["nom_sg_m2"] = note1
		forms["nom_sg_f"] = "aliqua"
		notes["nom_sg_f1"] = note2
		forms["nom_sg_n"] = "aliquod"
		forms["nom_pl_m"] = "aliquī"
		forms["nom_pl_f"] = "aliquae"
		notes["nom_pl_f1"] = note2
		forms["nom_pl_n"] = "aliqua"
		notes["nom_pl_n1"] = note2

		forms["gen_sg_m"] = "alicuius"
		notes["gen_sg_m1"] = note3
		forms["gen_sg_f"] = "alicuius"
		notes["gen_sg_f1"] = note3
		forms["gen_sg_n"] = "alicuius"
		notes["gen_sg_n1"] = note3
		forms["gen_pl_m"] = "aliquōrum"
		forms["gen_pl_f"] = "aliquārum"
		forms["gen_pl_n"] = "aliquōrum"

		forms["dat_sg_m"] = "alicui"
		notes["dat_sg_m1"] = note5
		forms["dat_sg_f"] = "alicui"
		notes["dat_sg_f1"] = note5
		forms["dat_sg_n"] = "alicui"
		notes["dat_sg_n1"] = note5
		forms["dat_pl_m"] = {"aliquīs", "aliquibus"}
		notes["dat_pl_m1"] = note4
		forms["dat_pl_f"] = {"aliquīs", "aliquibus"}
		notes["dat_pl_f1"] = note4
		forms["dat_pl_n"] = {"aliquīs", "aliquibus"}
		notes["dat_pl_n1"] = note4

		forms["acc_sg_m"] = "aliquem"
		forms["acc_sg_f"] = "aliquam"
		forms["acc_sg_n"] = "aliquod"
		forms["acc_pl_m"] = "aliquōs"
		forms["acc_pl_f"] = "aliquās"
		forms["acc_pl_n"] = "aliqua"
		notes["acc_pl_n1"] = note2

		forms["abl_sg_m"] = "aliquō"
		forms["abl_sg_f"] = "aliquā"
		forms["abl_sg_n"] = "aliquō"
		forms["abl_pl_m"] = {"aliquīs", "aliquibus"}
		notes["abl_pl_m1"] = note4
		forms["abl_pl_f"] = {"aliquīs", "aliquibus"}
		notes["abl_pl_f1"] = note4
		forms["abl_pl_n"] = {"aliquīs", "aliquibus"}
		notes["abl_pl_n1"] = note4

	elseif arg1 == "quisquam" then
		local note1 = "Only attested in postclassical Latin. In Classical Latin, forms of [[ullus#Latin|ūllus]] were used instead."
		local note2 = "Only attested as a feminine form in the preclassical Latin of authors like Plautus."
		local note3 = "Attested only once in Classical Latin. Usually [[ullus#Latin|ūllam]] was used instead."
		local note4 = "Attested, but rare in Classical Latin. Usually [[ullus#Latin|ūllō]] was used instead."

		data.title = glossary_link("negative polarity item", "negative polarity") .. " " .. glossary_link("indefinite") .. " " .. glossary_link("determiner")

		forms["nom_sg_m"] = "quisquam"
		forms["nom_sg_f"] = {"quaequam", "quisquam"}
		notes["nom_sg_f1"] = note1
		notes["nom_sg_f2"] = note2
		forms["nom_sg_n"] = "quodquam"
		notes["nom_sg_n1"] = note1
		forms["nom_pl_m"] = "quīquam"
		notes["nom_pl_m1"] = note1
		forms["nom_pl_f"] = "quaequam"
		notes["nom_pl_f1"] = note1
		forms["nom_pl_n"] = "quaequam"
		notes["nom_pl_n1"] = note1

		forms["gen_sg_m"] = "cuiusquam"
		forms["gen_sg_f"] = "cuiusquam"
		forms["gen_sg_n"] = "cuiusquam"
		forms["gen_pl_m"] = "quōrumquam"
		notes["gen_pl_m1"] = note1
		forms["gen_pl_f"] = "quārumquam"
		notes["gen_pl_f1"] = note1
		forms["gen_pl_n"] = "quōrumquam"
		notes["gen_pl_n1"] = note1

		forms["dat_sg_m"] = "cuiquam"
		forms["dat_sg_f"] = "cuiquam"
		forms["dat_sg_n"] = "cuiquam"
		forms["dat_pl_m"] = "quibusquam"
		notes["dat_pl_m1"] = note1
		forms["dat_pl_f"] = "quibusquam"
		notes["dat_pl_f1"] = note1
		forms["dat_pl_n"] = "quibusquam"
		notes["dat_pl_n1"] = note1

		forms["acc_sg_m"] = "quemquam"
		forms["acc_sg_f"] = {"quamquam", "quemquam"}
		notes["acc_sg_f1"] = note3
		notes["acc_sg_f2"] = note2
		forms["acc_sg_n"] = "quodquam"
		notes["acc_sg_n1"] = note1
		forms["acc_pl_m"] = "quōsquam"
		notes["acc_pl_m1"] = note1
		forms["acc_pl_f"] = "quāsquam"
		notes["acc_pl_f1"] = note1
		forms["acc_pl_n"] = "quaequam"
		notes["acc_pl_n1"] = note1

		forms["abl_sg_m"] = {"quōquam", "quīquam"}
		notes["abl_sg_m1"] = note4
		notes["abl_sg_m2"] = note2
		forms["abl_sg_f"] = "quāquam"
		notes["abl_sg_f1"] = note1
		forms["abl_sg_n"] = "quōquam"
		notes["abl_sg_n1"] = note4
		forms["abl_pl_m"] = "quibusquam"
		notes["abl_pl_m1"] = note1
		forms["abl_pl_f"] = "quibusquam"
		notes["abl_pl_f1"] = note1
		forms["abl_pl_n"] = "quibusquam"
		notes["abl_pl_n1"] = note1

		forms["voc_sg_m"] = "quisquam"
		notes["voc_sg_m1"] = note1
		forms["voc_sg_f"] = "quaequam"
		notes["voc_sg_f1"] = note1
		forms["voc_sg_n"] = "quodquam"
		notes["voc_sg_n1"] = note1
		forms["voc_pl_m"] = "quīquam"
		notes["voc_pl_m1"] = note1
		forms["voc_pl_f"] = "quaequam"
		notes["voc_pl_f1"] = note1
		forms["voc_pl_n"] = "quaequam"
		notes["voc_pl_n1"] = note1

	elseif arg1 == "quisquis" then
		data.title = glossary_link("relative") .. "/" .. glossary_link("interrogative") .. " pronoun"

		forms["nom_sg_m"] = "quisquis"
		forms["nom_sg_f"] = "quisquis"
		forms["nom_sg_n"] = {"quidquid", "quicquid"}
		forms["nom_pl_m"] = "quīquī"
		forms["nom_pl_f"] = "quaequae"
		forms["nom_pl_n"] = "quaequae"

		forms["gen_sg_m"] = "cuiuscuius"
		forms["gen_sg_f"] = "cuiuscuius"
		forms["gen_sg_n"] = "cuiuscuius"
		forms["gen_pl_m"] = "quōrumquōrum"
		forms["gen_pl_f"] = "quārumquārum"
		forms["gen_pl_n"] = "quōrumquōrum"

		forms["dat_sg_m"] = "cuicui"
		forms["dat_sg_f"] = "cuicui"
		forms["dat_sg_n"] = "cuicui"
		forms["dat_pl_m"] = {"quibusquibus", "quīsquīs"}
		forms["dat_pl_f"] = {"quibusquibus", "quīsquīs"}
		forms["dat_pl_n"] = {"quibusquibus", "quīsquīs"}

		forms["acc_sg_m"] = "quemquem"
		forms["acc_sg_f"] = "quamquam"
		forms["acc_sg_n"] = {"quidquid", "quicquid"}
		forms["acc_pl_m"] = "quōsquōs"
		forms["acc_pl_f"] = "quāsquās"
		forms["acc_pl_n"] = "quaequae"

		forms["abl_sg_m"] = "quōquō"
		forms["abl_sg_f"] = "quāquā"
		forms["abl_sg_n"] = "quōquō"
		forms["abl_pl_m"] = {"quibusquibus", "quīsquīs"}
		forms["abl_pl_f"] = {"quibusquibus", "quīsquīs"}
		forms["abl_pl_n"] = {"quibusquibus", "quīsquīs"}

		forms["voc_sg_m"] = "quisquis"
		forms["voc_sg_f"] = "quisquis"
		forms["voc_sg_n"] = {"quidquid", "quicquid"}
		forms["voc_pl_m"] = "quīquī"
		forms["voc_pl_f"] = "quaequae"
		forms["voc_pl_n"] = "quaequae"

	elseif arg1 == "ecquis" then
		local note1 = "Unattested in classical Latin."
		local note2 = "Attested only twice in Classical Latin."

		data.title = glossary_link("interrogative") .. " pronoun"

		forms["nom_sg_m"] = {"ecquis", "ecquī"}
		forms["nom_sg_f"] = {"ecqua", "ecquae"}
		forms["nom_sg_n"] = "ecquid"
		forms["nom_pl_m"] = "ecquī"
		forms["nom_pl_f"] = "ecquae"
		forms["nom_pl_n"] = {"ecqua", "ecquae"}

		forms["gen_sg_m"] = "eccuius"
		forms["gen_sg_f"] = "eccuius"
		forms["gen_sg_n"] = "eccuius"
		notes["gen_sg_m1"] = note1
		notes["gen_sg_f1"] = note1
		notes["gen_sg_n1"] = note1

		forms["dat_sg_m"] = "eccui"
		forms["dat_sg_f"] = "eccui"
		forms["dat_sg_n"] = "eccui"
		notes["dat_sg_m1"] = note2
		notes["dat_sg_f1"] = note2
		notes["dat_sg_n1"] = note2

		forms["acc_sg_m"] = "ecquem"
		forms["acc_sg_f"] = "ecquam"
		forms["acc_sg_n"] = "ecquod"
		forms["acc_pl_m"] = "ecquōs"
		forms["acc_pl_f"] = "ecquās"
		forms["acc_pl_n"] = {"ecqua", "ecquae"}

		forms["abl_sg_m"] = {"ecquō", "ecquī"}
		forms["abl_sg_f"] = {"ecquā", "ecquī"}
		forms["abl_sg_n"] = {"ecquō", "ecquī"}

	elseif arg1 == "quīdam" then
		local note1 = "The genitive singular was spelled [[quoiusdam#Latin|''quoiusdam'']] before the Augustan period."
		local note2 = "The dative singular was spelled [[quoidam#Latin|''quoidam'']] before the Augustan period."
		local note3 = "An alternative masculine nominative/accusative plural form [[quesdam#Latin|''quēsdam'']] occurs in Accius."
		local note4 = "The dative/ablative plural has a rare alternative form [[quisdam#Latin|''quīsdam'']]/[[queisdam#Latin|''queisdam'']]."

		data.title = glossary_link("indefinite") .. " pronoun"

		forms["nom_sg_m"] = "quīdam"
		forms["nom_sg_f"] = "quaedam"
		forms["nom_sg_n"] = "quiddam"
		forms["nom_pl_m"] = "quīdam"
		notes["nom_pl_m1"] = note3
		forms["nom_pl_f"] = "quaedam"
		forms["nom_pl_n"] = "quaedam"

		forms["gen_sg_m"] = "cuiusdam"
		forms["gen_sg_f"] = "cuiusdam"
		forms["gen_sg_n"] = "cuiusdam"
		notes["gen_sg_m1"] = note1
		notes["gen_sg_f1"] = note1
		notes["gen_sg_n1"] = note1
		forms["gen_pl_m"] = {"quōrundam", "quōrumdam"}
		forms["gen_pl_f"] = {"quārundam", "quārumdam"}
		forms["gen_pl_n"] = {"quōrundam", "quōrumdam"}

		forms["dat_sg_m"] = "cuidam"
		forms["dat_sg_f"] = "cuidam"
		forms["dat_sg_n"] = "cuidam"
		notes["dat_sg_m1"] = note2
		notes["dat_sg_f1"] = note2
		notes["dat_sg_n1"] = note2
		forms["dat_pl_m"] = "quibusdam"
		forms["dat_pl_f"] = "quibusdam"
		forms["dat_pl_n"] = "quibusdam"
		notes["dat_pl_m1"] = note4
		notes["dat_pl_f1"] = note4
		notes["dat_pl_n1"] = note4

		forms["acc_sg_m"] = {"quendam", "quemdam"}
		forms["acc_sg_f"] = {"quandam", "quamdam"}
		forms["acc_sg_n"] = "quiddam"
		forms["acc_pl_m"] = "quōsdam"
		notes["acc_pl_m1"] = note3
		forms["acc_pl_f"] = "quāsdam"
		forms["acc_pl_n"] = "quaedam"

		forms["abl_sg_m"] = "quōdam"
		forms["abl_sg_f"] = "quādam"
		forms["abl_sg_n"] = "quōdam"
		forms["abl_pl_m"] = "quibusdam"
		forms["abl_pl_f"] = "quibusdam"
		forms["abl_pl_n"] = "quibusdam"
		notes["abl_pl_m1"] = note4
		notes["abl_pl_f1"] = note4
		notes["abl_pl_n1"] = note4

	elseif arg1 == "nēmō" then
		local note1 = "The genitive [[neminis|''nēminis'']] is not used in Classical Latin, and is generally also avoided by later authors."
		local note2 = "The ablative [[nemine|''nēmine'']] is not used in Classical Latin, but can be seen in authors from the Imperial period onwards."

		data.title = "Negative pronoun and " .. glossary_link("determiner")

		forms["nom_sg_m"] = "nēmō"
		forms["nom_sg_f"] = "nēmō"

		forms["gen_sg_m"] = {"nūllī̆us", "nēminis"}
		forms["gen_sg_f"] = {"nūllī̆us", "nēminis"}
		notes["gen_sg_m2"] = note1
		notes["gen_sg_f2"] = note1

		forms["dat_sg_m"] = "nēminī"
		forms["dat_sg_f"] = "nēminī"

		forms["acc_sg_m"] = "nēminem"
		forms["acc_sg_f"] = "nēminem"

		forms["abl_sg_m"] = {"nūllō", "nēmine"}
		forms["abl_sg_f"] = {"nūllā", "nēmine"}
		notes["abl_sg_m2"] = note2
		notes["abl_sg_f2"] = note2

	else
		error('adjective ' .. arg1 .. ' not recognized')
	end
end

return decl

-- For Vim, so we get 4-space tabs
-- vim: set ts=4 sw=4 noet: