This module needs documentation.
Please document this module by describing its purpose and usage on the documentation page.

local decl = {}

local lang = require("Module:languages").getByCode("la")
local m_links = require("Module:links")
local m_utilities = require("Module:utilities")

local rmatch = mw.ustring.match

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

local function singularize(plural)
	-- THIS IS A HACK. We may be passed the word "suffix", where we need to remove
	-- the -es. We also include words ending in -ch or -sh for good measure.
	-- In most other cases we need to remove only the -s.
	if plural:find("xes$") or plural:find("[cs]hes$") then
		return plural:gsub("es$", "")
	else
		return plural:gsub("s$", "")
	end
end

decl["0"] = function(data, args)
	data.title = glossary_link("indeclinable") .. " " .. singularize(data.pos)

	local stem = args[1]

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

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

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

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

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

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

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

	table.insert(data.categories, "Latin indeclinable " .. data.pos)
end

decl["1&2"] = function(data, args)
	local singpos = singularize(data.pos)
	if data.gender == "F" then
		data.title = decl_link("first") .. " " .. singpos
	elseif data.gender then
		data.title = decl_link("second") .. " " .. singpos
	else
		data.title = decl_link("first", "first") .. "/" .. decl_link("second") .. " " .. singpos
	end

	local stem = args[1]
	local original = nil

	if data.types.er then
		if mw.ustring.match(stem, "er$") then
			table.insert(data.subtitles, "nominative masculine singular in ''-er''")
			table.insert(data.categories, "Latin first and second declension "
				.. data.pos .. " with nominative masculine singular in -er")
		elseif mw.ustring.match(stem, "ur$") then
			table.insert(data.subtitles, "nominative masculine singular in ''-ur''")
			table.insert(data.categories, "Latin first and second declension "
				.. data.pos .. " with nominative masculine singular in -ur")
		else
			error("Unrecognized ''-r'' stem (doesn't end in ''-er'' or ''-ur''): " .. stem)
		end
		original = stem
		stem = args[2]
	end

	local us = "us"
	local a_sf = "a"
	local um = "um"
	local ae_gsf = "ae"
	local am = "am"
	local a_macron = "ā"

	if data.types.greekA or data.types.greekE then
		table.insert(data.subtitles, "Greek-type")
		table.insert(data.categories, "Latin first and second declension " ..
			data.pos .. " with Greek declension")
		if data.types.greekA then
			us = "os"
			um = "on"
			am = "ān"
		else
			us = "os"
			a_sf = "ē"
			um = "on"
			ae_gsf = "ēs"
			am = "ēn"
			a_macron = "ē"
		end
	end

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

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

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

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

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

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

	data.forms["loc_sg_m"] = stem .. "ī"
	data.forms["loc_sg_f"] = stem .. "ae"
	data.forms["loc_sg_n"] = stem .. "ī"
	data.forms["loc_pl_m"] = stem .. "īs"
	data.forms["loc_pl_f"] = stem .. "īs"
	data.forms["loc_pl_n"] = stem .. "īs"

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

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

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

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

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

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

		data.voc = false
	end

	if data.types.distr then
		if mw.ustring.match(stem, "n$") then
			table.insert(data.subtitles, "distributive, normally plural-only; short genitive plurals in ''-num'' preferred")
			data.forms["gen_pl_m"] = {stem .. "um", stem .. "ōrum"}
			data.forms["gen_pl_f"] = {stem .. "um", stem .. "ārum"}
			data.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
	
	table.insert(data.categories, "Latin first and second declension " ..
		data.pos)
end

decl["1-1"] = function(data, args)
	data.title = decl_link("first") .. " " .. singularize(data.pos)
	table.insert(data.subtitles, "masculine and neuter forms identical to feminine forms")

	local stem = args[1]

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

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

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

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

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

	data.forms["loc_sg_m"] = stem .. "ae"
	data.forms["loc_pl_m"] = stem .. "īs"

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

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

decl["2-2"] = function(data, args)
	data.title = decl_link("second") .. " " .. singularize(data.pos)
	table.insert(data.subtitles, "feminine forms identical to masculine forms")

	local stem = args[1]

	local us = "us"
	local um = "um"
	local i_pl = "ī"

	if data.types.greek then
		table.insert(data.subtitles, "Greek-type")
		table.insert(data.categories, "Latin second declension " .. data.pos ..
			" with Greek declension")
		us = "os"
		um = "on"
		i_pl = "oe"
	end

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

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

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

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

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

	data.forms["loc_sg_m"] = stem .. "ī"
	data.forms["loc_sg_n"] = stem .. "ī"
	data.forms["loc_pl_m"] = stem .. "īs"
	data.forms["loc_pl_n"] = stem .. "īs"

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

	table.insert(data.categories, "Latin second declension " .. data.pos)
end

decl["3-1"] = function(data, args)
	local singpos = singularize(data.pos)
	if data.gender then
		data.title = decl_link("third") .. " " .. singpos
	else
		data.title = decl_link("third") .. " one-termination " .. singpos
	end

	local stem1 = args[1]
	local stem2 = args[2]

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

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

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

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

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

	data.forms["loc_sg_m"] = stem2 .. "ī"
	data.forms["loc_sg_n"] = stem2 .. "ī"
	data.forms["loc_pl_m"] = stem2 .. "ibus"
	data.forms["loc_pl_n"] = stem2 .. "ibus"

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

	if data.types.par then
		table.insert(data.subtitles, "non-i-stem")
		data.forms["nom_pl_n"] = stem2 .. "a"
		data.forms["gen_pl_m"] = stem2 .. "um"
		data.forms["gen_pl_n"] = stem2 .. "um"
		data.forms["abl_sg_m"] = stem2 .. "e"
		data.forms["abl_sg_n"] = stem2 .. "e"
		data.forms["loc_sg_m"] = {stem2 .. "ī", stem2 .. "e"}
		data.forms["loc_sg_n"] = {stem2 .. "ī", stem2 .. "e"}
		data.forms["acc_pl_n"] = stem2 .. "a"
		data.forms["voc_pl_n"] = stem2 .. "a"
	elseif data.types.not_par then
		table.insert(data.subtitles, "i-stem")
	end

	local es_base = rmatch(stem1, "^(.*)ēs$")
	if es_base and es_base == stem2 then
		if data.types.greek then
			local note = "It is unknown if Classical Latin preserved (or would have preserved) the shortness of the original Greek short ending."
			data.forms["nom_sg_n"] = {stem2 .. "es", stem2 .. "ēs"}
			data.notes["nom_sg_n1"] = note
			data.forms["acc_sg_n"] = {stem2 .. "es", stem2 .. "ēs"}
			data.notes["acc_sg_n1"] = note
			data.forms["voc_sg_m"] = {stem2 .. "es", stem2 .. "ēs"}
			data.notes["voc_sg_m1"] = note
			data.forms["voc_sg_n"] = {stem2 .. "es", stem2 .. "ēs"}
			data.notes["voc_sg_n1"] = note
			table.insert(data.subtitles, "Greek-type")
		elseif data.types.not_greek then
			table.insert(data.subtitles, "non-Greek-type")
		end
	end

	table.insert(data.categories, "Latin third declension " .. data.pos)
	table.insert(data.categories, "Latin third declension " .. data.pos .. " of one termination")
end

decl["3-C"] = function(data, args)
	local stem = args[1]

	data.types.par = true
	decl["3-1"](data, {stem .. "or", stem .. "ōr"})

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

	data.forms["nom_sg_n"] = stem .. "us"
	data.forms["acc_sg_n"] = stem .. "us"
	data.forms["voc_sg_n"] = stem .. "us"
end

decl["3-P"] = function(data, args)
	local stem1 = args[1]
	local stem2 = args[2]

	decl["3-1"](data, args)
	data.title = decl_link("third") .. " participle"

	data.forms["abl_sg_m"] = {stem2 .. "e", stem2 .. "ī"}
	data.notes["abl_sg_m2"] = "When used purely as an adjective."
	data.forms["abl_sg_n"] = {stem2 .. "e", stem2 .. "ī"}
	data.notes["abl_sg_n2"] = "When used purely as an adjective."
	data.forms["acc_pl_m"] = {stem2 .. "ēs", stem2 .. "īs"}
end

decl["3-2"] = function(data, args)
	local singpos = singularize(data.pos)
	if data.gender then
		data.title = decl_link("third") .. " " .. singpos
	else
		data.title = decl_link("third") .. " two-termination " .. singpos
	end

	local stem = args[1]
	local stem2 = args[2]

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

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

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

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

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

	data.forms["loc_sg_m"] = stem .. "ī"
	data.forms["loc_sg_n"] = stem .. "ī"
	data.forms["loc_pl_m"] = stem .. "ibus"
	data.forms["loc_pl_n"] = stem .. "ibus"

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

	table.insert(data.categories, "Latin third declension " .. data.pos)
	table.insert(data.categories, "Latin third declension " .. data.pos .. " of two terminations")
end

decl["3-3"] = function(data, args)
	local singpos = singularize(data.pos)
	if data.gender then
		data.title = decl_link("third") .. " " .. singpos
	else
		data.title = decl_link("third") .. " three-termination " .. singpos
	end

	local stem1 = args[1]
	local stem2 = args[2]

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

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

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

	data.forms["acc_sg_m"] = stem2 .. "em"
	data.forms["acc_sg_f"] = stem2 .. "em"
	data.forms["acc_sg_n"] = stem2 .. "e"
	data.forms["acc_pl_m"] = stem2 .. "ēs"
	data.forms["acc_pl_f"] = stem2 .. "ēs"
	data.forms["acc_pl_n"] = stem2 .. "ia"

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

	data.forms["loc_sg_m"] = stem2 .. "ī"
	data.forms["loc_sg_f"] = stem2 .. "ī"
	data.forms["loc_sg_n"] = stem2 .. "ī"
	data.forms["loc_pl_m"] = stem2 .. "ibus"
	data.forms["loc_pl_f"] = stem2 .. "ibus"
	data.forms["loc_pl_n"] = stem2 .. "ibus"

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

	table.insert(data.categories, "Latin third declension " .. data.pos)
	table.insert(data.categories, "Latin third declension " .. data.pos .. " of three terminations")
end

decl["irreg"] = function(data,args)
	if args[1] == "duo" or args[1] == "ambō" then
		local stem = args[1] == "duo" and "du" or "amb"
		data.title = stem == "amb" and glossary_link("irregular") .. " adjective" or "numeral"
		data.num = "pl"

		local stem_with_o = stem .. (stem == "amb" and "ō" or "o")

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

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

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

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

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

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

		if stem == "du" then
			data.footnote = "Note: The genitive masculine and neuter can also be found in the contracted form ''[[duum]]'' (also spelt ''[[duûm]]'')."
		end

	elseif args[1] == "mīlle" then
		data.title = "semi-" .. glossary_link("indeclinable") .. " numeral"
		data.forms["nom_sg_m"] = "mīlle"
		data.forms["nom_pl_m"] = {"mīlia", "mīllia"}

		data.forms["gen_sg_m"] = "mīlle"
		data.forms["gen_pl_m"] = {"mīlium", "mīllium"}

		data.forms["dat_sg_m"] = "mīlle"
		data.forms["dat_pl_m"] = {"mīlibus", "mīllibus"}

		data.forms["acc_sg_m"] = "mīlle"
		data.forms["acc_pl_m"] = {"mīlia", "mīllia"}

		data.forms["abl_sg_m"] = "mīlle"
		data.forms["abl_pl_m"] = {"mīlibus", "mīllibus"}

		data.forms["voc_sg_m"] = "mīlle"
		data.forms["voc_pl_m"] = {"mīlia", "mīllia"}
		
	elseif args[1] == "sēsquimīlle" then
		data.title = "semi-" .. glossary_link("indeclinable") .. " numeral"
		data.forms["nom_sg_m"] = "sēsquimīlle"
		data.forms["nom_pl_m"] = {"sēsquimīlia", "sēsquimīllia"}

		data.forms["gen_sg_m"] = "sēsquimīlle"
		data.forms["gen_pl_m"] = {"sēsquimīlium", "sēsquimīllium"}

		data.forms["dat_sg_m"] = "sēsquimīlle"
		data.forms["dat_pl_m"] = {"sēsquimīlibus", "sēsquimīllibus"}

		data.forms["acc_sg_m"] = "sēsquimīlle"
		data.forms["acc_pl_m"] = {"sēsquimīlia", "sēsquimīllia"}

		data.forms["abl_sg_m"] = "sēsquimīlle"
		data.forms["abl_pl_m"] = {"sēsquimīlibus", "sēsquimīllibus"}

		data.forms["voc_sg_m"] = "sēsquimīlle"
		data.forms["voc_pl_m"] = {"sēsquimīlia", "sēsquimīllia"}

	elseif args[1] == "illic" then
		data.title = glossary_link("demonstrative") .. " pronoun"

		data.forms["nom_sg_m"] = "illic"
		data.forms["nom_sg_f"] = "illaec"
		data.forms["nom_sg_n"] = {"illuc", "illoc"}
		data.forms["nom_pl_m"] = ""
		data.forms["nom_pl_f"] = ""
		data.forms["nom_pl_n"] = "illaec"

		data.forms["gen_sg_m"] = ""
		data.forms["gen_sg_f"] = ""
		data.forms["gen_sg_n"] = ""
		data.forms["gen_pl_m"] = ""
		data.forms["gen_pl_f"] = ""
		data.forms["gen_pl_n"] = ""

		data.forms["dat_sg_m"] = ""
		data.forms["dat_sg_f"] = ""
		data.forms["dat_sg_n"] = ""
		data.forms["dat_pl_m"] = ""
		data.forms["dat_pl_f"] = ""
		data.forms["dat_pl_n"] = ""

		data.forms["acc_sg_m"] = "illunc"
		data.forms["acc_sg_f"] = "illanc"
		data.forms["acc_sg_n"] = {"illuc", "illoc"}
		data.forms["acc_pl_m"] = ""
		data.forms["acc_pl_f"] = ""
		data.forms["acc_pl_n"] = "illaec"

		data.forms["abl_sg_m"] = "illōc"
		data.forms["abl_sg_f"] = "illāc"
		data.forms["abl_sg_n"] = "illōc"
		data.forms["abl_pl_m"] = ""
		data.forms["abl_pl_f"] = ""
		data.forms["abl_pl_n"] = ""

		data.voc = false

	elseif args[1] == "hice" then
		data.title = glossary_link("demonstrative") .. " pronoun"

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

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

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

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

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

		data.voc = false

	elseif args[1] == "plūs" then
		data.title = glossary_link("irregular") .. " " .. decl_link("third") .. " comparative adjective"

		data.forms["nom_sg_m"] = ""
		data.forms["nom_sg_n"] = "plūs"
		data.forms["nom_pl_m"] = "plūrēs"
		data.forms["nom_pl_n"] = "plūra"

		data.forms["gen_sg_m"] = ""
		data.forms["gen_sg_n"] = "plūris"
		data.forms["gen_pl_m"] = "plūrium"
		data.forms["gen_pl_n"] = "plūrium"

		data.forms["dat_sg_m"] = ""
		data.forms["dat_sg_n"] = ""
		data.forms["dat_pl_m"] = "plūribus"
		data.forms["dat_pl_n"] = "plūribus"

		data.forms["acc_sg_m"] = ""
		data.forms["acc_sg_n"] = "plūs"
		data.forms["acc_pl_m"] = "plūrēs"
		data.forms["acc_pl_n"] = "plūra"

		data.forms["abl_sg_m"] = ""
		data.forms["abl_sg_n"] = "plūre"
		data.forms["abl_pl_m"] = "plūribus"
		data.forms["abl_pl_n"] = "plūribus"

		data.forms["voc_sg_m"] = ""
		data.forms["voc_sg_n"] = "plūs"
		data.forms["voc_pl_m"] = "plūrēs"
		data.forms["voc_pl_n"] = "plūra"

		data.footnote = "Note: Singular forms take the genitive of the whole and do not function as adjectives."

		table.insert(data.categories, "Latin third declension " .. data.pos)
		table.insert(data.categories, "Latin third declension " .. data.pos .. " of one termination")
	elseif args[1] == "is" or args[1] == "ī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>."

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

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


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

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

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

		data.voc = false

		if args[1] == "īdem" then
			data.forms["nom_sg_m"] = "ī"
			data.forms["nom_sg_n"] = "i"
			data.forms["nom_pl_m"] = "ī"
			data.forms["acc_sg_n"] = "i"
		end
	elseif args[1] == "ille" then
		data.types.ius = true

		decl["1&2"](data, {"ill"})

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

		data.forms["nom_sg_m"] = "ille"
		data.forms["nom_sg_n"] = "illud"

		data.forms["acc_sg_n"] = "illud"

		data.voc = false

		data.categories = {}
	elseif args[1] == "iste" then
		data.types.ius = true

		decl["1&2"](data, {"ist"})

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

		data.forms["nom_sg_m"] = "iste"
		data.forms["nom_sg_n"] = "istud"

		data.forms["acc_sg_n"] = "istud"

		data.voc = false

		data.categories = {}
	elseif args[1] == "ipse" then
		data.types.ius = true

		decl["1&2"](data, {"ips"})

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

		data.forms["nom_sg_m"] = "ipse"
		data.forms["nom_sg_n"] = "ipsum"

		data.forms["acc_sg_n"] = "ipsum"

		data.voc = false

		data.categories = {}
	elseif args[1] == "quis" or args[1] == "quī" then

		local note1 = "When used as an indefinite word (pronoun or adjective), 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 adjective."

		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 id = "id"
		if args[1] == "quī" then
			id = "od"
			data.forms["nom_sg_m"] = {"quī", "quis"}
			data.notes["nom_sg_m1"] = note2
			data.forms["nom_sg_f"] = {"quae", "qua"}
			data.notes["nom_sg_f2"] = note1
			data.forms["acc_sg_f"] = "quam"
			data.forms["abl_sg_m"] = "quō"
			data.forms["abl_sg_f"] = "quā"
			data.forms["abl_sg_n"] = "quō"
		else
			data.forms["nom_sg_m"] = {"quis", "quī"}
			data.notes["nom_sg_m2"] = note2
			data.forms["nom_sg_f"] = {"quae", "qua", "quis"}
			data.notes["nom_sg_f2"] = note1
			data.forms["acc_sg_f"] = {"quam", "quem"}
			data.forms["abl_sg_m"] = {"quō", "quī"}
			data.forms["abl_sg_f"] = {"quā", "quī"}
			data.forms["abl_sg_n"] = {"quō", "quī"}
		end
		data.title = glossary_link("relative") .. "/" .. glossary_link("interrogative") .. " pronoun"

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

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

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

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

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

		data.voc = false

	elseif args[1] == "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)."
		
		data.forms["nom_sg_m"] = {"aliquī", "aliquis"}
		data.notes["nom_sg_m2"] = note1
		data.forms["nom_sg_f"] = "aliqua"
		data.notes["nom_sg_f1"] = note2
		data.forms["nom_sg_n"] = "aliquod"
		data.forms["nom_pl_m"] = "aliquī"
		data.forms["nom_pl_f"] = "aliquae"
		data.notes["nom_pl_f1"] = note2
		data.forms["nom_pl_n"] = "aliqua"
		data.notes["nom_pl_n1"] = note2

		data.forms["gen_sg_m"] = "alicuius"
		data.notes["gen_sg_m1"] = note3
		data.forms["gen_sg_f"] = "alicuius"
		data.notes["gen_sg_f1"] = note3
		data.forms["gen_sg_n"] = "alicuius"
		data.notes["gen_sg_n1"] = note3
		data.forms["gen_pl_m"] = "aliquōrum"
		data.forms["gen_pl_f"] = "aliquārum"
		data.forms["gen_pl_n"] = "aliquōrum"
		
		data.forms["dat_sg_m"] = "alicui"
		data.notes["dat_sg_m1"] = note5
		data.forms["dat_sg_f"] = "alicui"
		data.notes["dat_sg_f1"] = note5
		data.forms["dat_sg_n"] = "alicui"
		data.notes["dat_sg_n1"] = note5
		data.forms["dat_pl_m"] = {"aliquīs", "aliquibus"}
		data.notes["dat_pl_m1"] = note4
		data.forms["dat_pl_f"] = {"aliquīs", "aliquibus"}
		data.notes["dat_pl_f1"] = note4
		data.forms["dat_pl_n"] = {"aliquīs", "aliquibus"}
		data.notes["dat_pl_n1"] = note4
	
		data.forms["acc_sg_m"] = "aliquem"
		data.forms["acc_sg_f"] = "aliquam"
		data.forms["acc_sg_n"] = "aliquod"
		data.forms["acc_pl_m"] = "aliquōs"
		data.forms["acc_pl_f"] = "aliquās"
		data.forms["acc_pl_n"] = "aliqua"
		data.notes["acc_pl_n1"] = note2
		
		data.forms["abl_sg_m"] = "aliquō"
		data.forms["abl_sg_f"] = "aliquā"
		data.forms["abl_sg_n"] = "aliquō"
		data.forms["abl_pl_m"] = {"aliquīs", "aliquibus"}
		data.notes["abl_pl_m1"] = note4
		data.forms["abl_pl_f"] = {"aliquīs", "aliquibus"}
		data.notes["abl_pl_f1"] = note4
		data.forms["abl_pl_n"] = {"aliquīs", "aliquibus"}
		data.notes["abl_pl_n1"] = note4
		
		data.voc = false
		
	elseif args[1] == "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")
		
		data.forms["nom_sg_m"] = "quisquam"
		data.forms["nom_sg_f"] = {"quaequam", "quisquam"}
		data.notes["nom_sg_f1"] = note1
		data.notes["nom_sg_f2"] = note2
		data.forms["nom_sg_n"] = "quodquam"
		data.notes["nom_sg_n1"] = note1
		data.forms["nom_pl_m"] = "quīquam"
		data.notes["nom_pl_m1"] = note1
		data.forms["nom_pl_f"] = "quaequam"
		data.notes["nom_pl_f1"] = note1
		data.forms["nom_pl_n"] = "quaequam"
		data.notes["nom_pl_n1"] = note1

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

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

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

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

		data.forms["voc_sg_m"] = "quisquam"
		data.notes["voc_sg_m1"] = note1
		data.forms["voc_sg_f"] = "quaequam"
		data.notes["voc_sg_f1"] = note1
		data.forms["voc_sg_n"] = "quodquam"
		data.notes["voc_sg_n1"] = note1
		data.forms["voc_pl_m"] = "quīquam"
		data.notes["voc_pl_m1"] = note1
		data.forms["voc_pl_f"] = "quaequam"
		data.notes["voc_pl_f1"] = note1
		data.forms["voc_pl_n"] = "quaequam"
		data.notes["voc_pl_n1"] = note1
		
		data.voc = true
		
	elseif args[1] == "quisquis" then
		data.title = glossary_link("relative") .. "/" .. glossary_link("interrogative") .. " pronoun"

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

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

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

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

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

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

		data.voc = true

	elseif args[1] == "ecquis" then
		local note1 = "Unattested in classical Latin."
		local note2 = "Attested only twice in Classical Latin."
		
		data.title = glossary_link("interrogative") .. " pronoun"
		
		data.forms["nom_sg_m"] = {"ecquis", "ecquī"}
		data.forms["nom_sg_f"] = {"ecqua", "ecquae"}
		data.forms["nom_sg_n"] = "ecquid"
		data.forms["nom_pl_m"] = "ecquī"
		data.forms["nom_pl_f"] = "ecquae"
		data.forms["nom_pl_n"] = {"ecqua", "ecquae"}

		data.forms["gen_sg_m"] = "eccuius"
		data.forms["gen_sg_f"] = "eccuius"
		data.forms["gen_sg_n"] = "eccuius"
		data.notes["gen_sg_m1"] = note1
		data.notes["gen_sg_f1"] = note1
		data.notes["gen_sg_n1"] = note1
		data.forms["gen_pl_m"] = ""
		data.forms["gen_pl_f"] = ""
		data.forms["gen_pl_n"] = ""

		data.forms["dat_sg_m"] = "eccui"
		data.forms["dat_sg_f"] = "eccui"
		data.forms["dat_sg_n"] = "eccui"
		data.notes["dat_sg_m1"] = note2
		data.notes["dat_sg_f1"] = note2
		data.notes["dat_sg_n1"] = note2
		data.forms["dat_pl_m"] = ""
		data.forms["dat_pl_f"] = ""
		data.forms["dat_pl_n"] = ""

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

		data.forms["abl_sg_m"] = {"ecquō", "ecquī"}
		data.forms["abl_sg_f"] = {"ecquā", "ecquī"}
		data.forms["abl_sg_n"] = {"ecquō", "ecquī"}
		data.forms["abl_pl_m"] = ""
		data.forms["abl_pl_f"] = ""
		data.forms["abl_pl_n"] = ""
		
		data.voc = false

	elseif args[1] == "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"
		
		data.forms["nom_sg_m"] = "quīdam"
		data.forms["nom_sg_f"] = "quaedam"
		data.forms["nom_sg_n"] = "quiddam"
		data.forms["nom_pl_m"] = "quīdam"
		data.notes["nom_pl_m1"] = note3
		data.forms["nom_pl_f"] = "quaedam"
		data.forms["nom_pl_n"] = "quaedam"

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

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

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

		data.forms["abl_sg_m"] = "quōdam"
		data.forms["abl_sg_f"] = "quādam"
		data.forms["abl_sg_n"] = "quōdam"
		data.forms["abl_pl_m"] = "quibusdam"
		data.forms["abl_pl_f"] = "quibusdam"
		data.forms["abl_pl_n"] = "quibusdam"
		data.notes["abl_pl_m1"] = note4
		data.notes["abl_pl_f1"] = note4
		data.notes["abl_pl_n1"] = note4
		
		data.voc = false		
	else
		error('adjective ' .. args[1] .. ' not recognized')
	end
end

return decl

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