Hello, you have come here looking for the meaning of the word . In DICTIOUS you will not only get to know all the dictionary meanings for the word , but we will also tell you about its etymology, its characteristics and you will know how to say in singular and plural. Everything you need to know about the word you have here. The definition of the word will help you to be more precise and correct when speaking or writing your texts. Knowing the definition of, as well as those of other words, enriches your vocabulary and provides you with more and better linguistic resources.

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

local decl = {}

local la_utilities_module = "Module:la-utilities"
local string_char_module = "Module:string/char"
local table_deep_copy_module = "Module:table/deepCopy"
local table_insert_if_not_module = "Module:table/insertIfNot"

local pairs = pairs
local toNFD = mw.ustring.toNFD
local u = require(string_char_module)
local umatch = mw.ustring.match
local usub = mw.ustring.sub

local MACRON = u(0x304)
local BREVE = u(0x306)
local DIAER = u(0x308)
local accent = "*"

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 insert_if_not(...)
	insert_if_not = require(table_insert_if_not_module)
	return insert_if_not(...)
end

local function glossary_link(anchor, text)
	text = text or anchor
	return "]"
end

decl = function(data, args)
	local forms = data.forms
	local stem = args

	forms = stem
	forms = stem
	forms = stem
	forms = stem
	forms = stem
	forms = stem

	forms = stem
	forms = stem
	forms = stem
	forms = stem
	forms = stem
	forms = stem

	-- with locative
	if data.loc then
		forms = stem
		forms = stem
	end
end

local function dat_abl_pl_subtitle(dat_abl_loc_pl, loc)
	return ("dative/ablative%s plural in ''-%s''"):format(loc and "/locative" or "", dat_abl_loc_pl)
end

decl = function(data, args)
	local forms, types, loc, subtitles = data.forms, data.types, data.loc, data.subtitles
	local stem = args

	-- normal 1st
	local nom_sg = "a"
	local gen_loc_sg = "ae"
	local dat_sg = "ae"
	local acc_sg = "am"
	local abl_sg = "ā"
	local voc_sg = "a"

	local nom_voc_pl = "ae"
	local gen_pl = "ārum"
	local dat_abl_loc_pl = "īs"
	local acc_pl = "ās"

	-- ām
	if types.am then
		insert_if_not(subtitles, "nominative/vocative singular in ''-ām''")

		nom_sg = "ām"
		acc_sg = "ām"
		abl_sg = {"ām", "ā"}
		voc_sg = "ām"

	-- all Greek
	elseif types.Greek then
		--Greek M
		if types.M then
			insert_if_not(subtitles, "masculine")
		end

		insert_if_not(subtitles, "Greek-type")

		--Greek Ma
		if types.Ma then
			insert_if_not(subtitles, "nominative singular in ''-ās''")

			nom_sg = "ās"
			acc_sg = "ān"
			voc_sg = "ā"

		-- Greek Me
		elseif types.Me then
			insert_if_not(subtitles, "nominative singular in ''-ēs''")

			nom_sg = "ēs"
			acc_sg = "ēn"
			abl_sg = "ē"
			voc_sg = "ē"

		-- Greek
		else
			nom_sg = "ē"
			gen_loc_sg = "ēs"
			acc_sg = "ēn"
			abl_sg = "ē"
			voc_sg = "ē"

		end
	end

	-- ābus
	if types.abus then
		dat_abl_loc_pl = "ābus"
		insert_if_not(subtitles, dat_abl_pl_subtitle(dat_abl_loc_pl, loc))
	elseif types.not_abus then
		insert_if_not(subtitles, dat_abl_pl_subtitle(dat_abl_loc_pl, loc))
	end

	add_form(forms, "nom_sg", stem, nom_sg)
	add_form(forms, "gen_sg", stem, gen_loc_sg)
	add_form(forms, "dat_sg", stem, dat_sg)
	add_form(forms, "acc_sg", stem, acc_sg)
	add_form(forms, "abl_sg", stem, abl_sg)
	add_form(forms, "voc_sg", stem, voc_sg)

	add_form(forms, {"nom_pl", "voc_pl"}, stem, nom_voc_pl)
	add_form(forms, "gen_pl", stem, gen_pl)
	add_form(forms, {"dat_pl", "abl_pl"}, stem, dat_abl_loc_pl)
	add_form(forms, "acc_pl", stem, acc_pl)

	-- with locative
	if loc then
		add_form(forms, "loc_sg", stem, gen_loc_sg)
		add_form(forms, "loc_pl", stem, dat_abl_loc_pl)
	end
end

decl = function(data, args)
	local forms, types, subtitles, notes = data.forms, data.types, data.subtitles, data.notes
	local stem1, stem2 = args, args

	-- normal 2nd
	forms = stem1 .. "us"
	forms = stem1 .. "ī"
	forms = stem1 .. "ō"
	forms = stem1 .. "um"
	forms = stem1 .. "ō"
	forms = stem1 .. "e"

	forms = stem1 .. "ī"
	forms = stem1 .. "ōrum"
	forms = stem1 .. "īs"
	forms = stem1 .. "ōs"
	forms = stem1 .. "īs"
	forms = stem1 .. "ī"

	-- all neuter
	if types.N then
		insert_if_not(subtitles, "neuter")

		forms = stem1 .. "um"
		forms = stem1 .. "um"

		forms = stem1 .. "a"
		forms = stem1 .. "a"
		forms = stem1 .. "a"

		-- neuter ium
		if types.ium then
			forms = stem1 .. "ium"
			forms = {stem1 .. "iī", stem1 .. "ī"}
			forms = stem1 .. "iō"
			forms = stem1 .. "ium"
			forms = stem1 .. "iō"
			forms = stem1 .. "ium"

			forms = stem1 .. "ia"
			forms = stem1 .. "iōrum"
			forms = stem1 .. "iīs"
			forms = stem1 .. "ia"
			forms = stem1 .. "iīs"
			forms = stem1 .. "ia"

			notes = "Found in older Latin (until the Augustan Age)."
			
		-- neuter us, plural a
		elseif types.a then
			insert_if_not(subtitles, "nominative/accusative/vocative plural in ''-a''")

			forms = stem1 .. "us"
			forms = stem1 .. "us"
			forms = stem1 .. "us"

			forms = stem1 .. "a"
			forms = stem1 .. "a"
			forms = stem1 .. "a"
		-- -vom (aevom, etc.)
		elseif types.vom then
			insert_if_not(subtitles, "nominative singular in ''-om'' after ''v''")
			forms = stem1 .. "om"
			forms = stem1 .. "om"
			forms = stem1 .. "om"

		-- neuter Greek in -os (cētos)
		elseif types.Greek and types.us then
			insert_if_not(subtitles, "Greek-type")
			insert_if_not(subtitles, "nominative/accusative/vocative in ''-os''")

			forms = stem1 .. "os"
			forms = stem1 .. "os"
			forms = stem1 .. "os"

			forms = stem1 .. "ē"
			forms = stem1 .. "ōn"
			forms = stem1 .. "ē"
			forms = stem1 .. "ē"

		-- neuter Greek
		elseif types.Greek then
			insert_if_not(subtitles, "Greek-type")

			forms = stem1 .. "on"
			forms = stem1 .. "on"
			forms = stem1 .. "on"

		-- neuter us
		elseif types.us then
			insert_if_not(subtitles, "nominative/accusative/vocative in ''-us''")

			forms = stem1 .. "us"
			forms = stem1 .. "us"
			forms = stem1 .. "us"

			forms = stem1 .. "ī"
			forms = stem1 .. "ōs"
			forms = stem1 .. "ī"

		elseif types.not_Greek or types.not_us then
			insert_if_not(subtitles, "nominative/accusative/vocative in ''-um''")
		end

	-- er
	elseif types.er then
		insert_if_not(subtitles, ("nominative singular in ''-%s''"):format(umatch(toNFD(stem1), "" .. accent .. "r$") and "er" or "r"))

		forms = stem1
		forms = stem2 .. "ī"
		forms = stem2 .. "ō"
		forms = stem2 .. "um"
		forms = stem2 .. "ō"
		forms = stem1

		forms = stem2 .. "ī"
		forms = stem2 .. "ōrum"
		forms = stem2 .. "īs"
		forms = stem2 .. "ōs"
		forms = stem2 .. "īs"
		forms = stem2 .. "ī"

	-- ius
	elseif types.ius then
		forms = stem1 .. "ius"
		forms = {stem1 .. "iī", stem1 .. "ī"}
		forms = stem1 .. "iō"
		forms = stem1 .. "ium"
		forms = stem1 .. "iō"
		if types.voci then
			-- Only for proper names and fīlius, genius
			forms = stem1 .. "ī"
		else
			forms = stem1 .. "ie"
		end

		forms = stem1 .. "iī"
		forms = stem1 .. "iōrum"
		forms = stem1 .. "iīs"
		forms = stem1 .. "iōs"
		forms = stem1 .. "iīs"
		forms = stem1 .. "iī"

		notes = "Found in older Latin (until the Augustan Age)."

	-- -vos (servos, etc.)
	elseif types.vos then
		insert_if_not(subtitles, "nominative singular in ''-os'' after ''v''")

		forms = stem1 .. "os"
		forms = stem1 .. "om"

	-- Greek
	elseif types.Greek then
		insert_if_not(subtitles, "Greek-type")

		forms = stem1 .. "os"
		forms = stem1 .. "on"
		
		if data.num == "pl" then
			forms = stem1 .. "oe"
			forms = stem1 .. "oe"
		else
			forms = {stem1 .. "ī", stem1 .. "oe"}
			forms = {stem1 .. "ī", stem1 .. "oe"}
		end

	elseif types.not_Greek then
		insert_if_not(subtitles, "non-Greek-type")
	end

	-- with -um genitive plural
	if types.genplum then
		insert_if_not(subtitles, "contracted genitive plural")
		notes = "Contraction found in poetry."
		if types.ius or  types.ium then
			forms = {stem2 .. "iōrum", stem2 .. "ium"}
		else
			forms = {stem2 .. "ōrum", stem2 .. "um"}
		end
	elseif types.not_genplum then
		insert_if_not(subtitles, "uncontracted genitive plural")
	end

	-- with locative
	if data.loc then
		if types.ius or types.ium then
			forms = stem2 .. "iī"
			forms = stem2 .. "iīs"
		else
			forms = stem2 .. "ī"
			forms = stem2 .. "īs"
		end
	end
end

local acc_sg_i_stem_subtypes = {
	acc_im = {
		-- amussis, basis, buris, cucumis, gummis, mephitis, paraphrasis, poesis, ravis, sitis, tussis, (vis) ;
		-- cannabis, senapis, sinapis 
		acc_sg = {"im"},
		title = {"accusative singular in ''-im''"},
	},
	acc_im_in = {
		-- cities, rivers, gods, e.g. Bilbilis, Syrtis, Tiberis, Anubis, Osiris ;
		-- Baetis, Tigris 
		acc_sg = {"im", "in"},
		title = {"accusative singular in ''-im'' or ''-in''"},
	},
	acc_im_in_em = {
		-- e.g. tigris, river Līris
		acc_sg = {"im", "in", "em"},
		title = {"accusative singular in ''-im'', ''-in'' or ''-em''"},
	},
	acc_im_em = {
		acc_sg = {"im", "em"},
		title = {"accusative singular in ''-im'' or ''-em''"},
	},
	acc_im_occ_em = {
		-- febris, pelvis, puppis, restis, securis, turris 
		acc_sg = {"im", "em"},
		title = {"accusative singular in ''-im'' or occasionally ''-em''"},
	},
	acc_em_im = {
		-- aqualis, clavis, lens, navis ;
		-- cutis, restis 
		acc_sg = {"em", "im"},
		title = {"accusative singular in ''-em'' or ''-im''"},
	},
}

local abl_sg_i_stem_subtypes = {
	abl_i = {
		-- amussis, basis, buris, cucumis, gummis, mephitis, paraphrasis, poesis, ravis, sitis, tussis, (vis) ;
		-- cities, rivers, gods, e.g. Bilbilis, Syrtis, Tiberis, Anubis, Osiris ;
		-- canalis "water pipe", months in -is or -er, nouns originally i-stem adjectives such as aedilis, affinis, bipennis, familiaris, sodalis, volucris, etc. 
		abl_sg = {"ī"},
		title = {"ablative singular in ''-ī''"},
	},
	abl_i_e = {
		-- febris, pelvis, puppis, restis, securis, turris 
		abl_sg = {"ī", "e"},
		title = {"ablative singular in ''-ī'' or ''-e''"},
	},
	abl_e_i = {
		-- cannabis, senapis, sinapis ;
		-- Baetis, Tigris ;
		-- aqualis, clavis, lens, navis ;
		-- finis, mugilis, occiput, pugil, rus, supellex, vectis 
		abl_sg = {"e", "ī"},
		title = {"ablative singular in ''-e'' or ''-ī''"},
	},
	abl_e_occ_i = {
		-- amnis, anguis, avis, civis, classis, fustis, ignis, imber, orbis, pars, postis, sors, unguis, vesper 
		abl_sg = {"e", "ī"},
		title = {"ablative singular in ''-e'' or occasionally ''-ī''"},
	},
}

local function extract_stem(form, ending)
	local base = umatch(form, "^(.*)" .. ending .. "$")
	if not base then
		error("Form " .. form .. " should end in -" .. ending)
	end
	return base
end

local function count_vowels(stem)
	return select(2, toNFD(stem):gsub("", ""))
end

decl = function(data, args)
	local forms, types, subtitles, notes = data.forms, data.types, data.subtitles, data.notes
	local stem1, stem2 = args, args

	local function non_i_stem_type()
		return (count_vowels(stem1) > count_vowels(stem2) and "parisyllabic" or "imparisyllabic") .. " non-i-stem"
	end

	--normal 3rd
	forms = stem1
	forms = stem2 .. "is"
	forms = stem2 .. "ī"
	forms = stem2 .. "em"
	forms = stem2 .. "e"
	forms = stem1

	forms = stem2 .. "ēs"
	forms = stem2 .. "um"
	forms = stem2 .. "ibus"
	forms = stem2 .. "ēs"
	forms = stem2 .. "ibus"
	forms = stem2 .. "ēs"

	local acc_sg_i_stem_subtype = false
	local not_acc_sg_i_stem_subtype = false
	for subtype, _ in pairs(types) do
		if acc_sg_i_stem_subtypes then
			acc_sg_i_stem_subtype = true
			break
		end
	end
	for acc_sg_subtype, _ in pairs(acc_sg_i_stem_subtypes) do
		if types then
			not_acc_sg_i_stem_subtype = true
			break
		end
	end
	local abl_sg_i_stem_subtype = false
	local not_abl_sg_i_stem_subtype = false
	for subtype, _ in pairs(types) do
		if abl_sg_i_stem_subtypes then
			abl_sg_i_stem_subtype = true
			break
		end
	end
	for abl_sg_subtype, _ in pairs(abl_sg_i_stem_subtypes) do
		if types then
			not_abl_sg_i_stem_subtype = true
			break
		end
	end

	-- all Greek
	if types.Greek then
		insert_if_not(subtitles, "Greek-type")

		-- Greek er
		if types.er then
			insert_if_not(subtitles, "variant with nominative singular in ''-ēr''")
			stem1 = extract_stem(stem1, "ēr")

			forms = stem1 .. "ēr"
			forms = stem1 .. "eris"
			forms = stem1 .. "erī"
			forms = {stem1 .. "era", stem1 .. "erem"}
			forms = stem1 .. "ere"
			forms = stem1 .. "ēr"

			forms = stem1 .. "erēs"
			forms = stem1 .. "erum"
			forms = stem1 .. "eribus"
			forms = stem1 .. "erēs"
			forms = stem1 .. "eribus"
			forms = stem1 .. "erēs"

		-- Greek on
		elseif types.on then
			insert_if_not(subtitles, "variant with nominative singular in ''-ōn''")
			stem1 = extract_stem(stem1, "ōn")

			forms = stem1 .. "ōn"
			forms = {stem1 .. "ontis", stem1 .. "ontos"}
			forms = stem1 .. "ontī"
			forms = stem1 .. "onta"
			forms = stem1 .. "onte"
			forms = stem1 .. "ōn"

			forms = stem1 .. "ontēs"
			forms = {stem1 .. "ontum", stem1 .. "ontium"}
			forms = stem1 .. "ontibus"
			forms = {stem1 .. "ontēs", stem1 .. "ontās"}
			forms = stem1 .. "ontibus"
			forms = stem1 .. "ontēs"

		-- Greek i-stem
		elseif types.I then
			insert_if_not(subtitles, "i-stem")
			forms = {stem2 .. "is", stem2 .. "eōs", stem2 .. "ios"}
			forms = {stem2 .. "im", stem2 .. "in", stem2 .. "em"}
			forms = {stem2 .. "ī", stem2 .. "e"}
			forms = {stem2 .. "is", stem2 .. "i"}

			notes = "Found sometimes in Medieval and New Latin."
			notes = "Found sometimes in Medieval and New Latin."

			forms = {stem2 .. "ēs", stem2 .. "eis"}
			forms = {stem2 .. "ium", stem2 .. "eōn"}
			forms = {stem2 .. "ēs", stem2 .. "eis"}
			forms = {stem2 .. "ēs", stem2 .. "eis"}

			if types.poetic_esi then
				forms = {stem2 .. "ibus", stem2 .. "esi"}
				forms = {stem2 .. "ibus", stem2 .. "esi"}
				notes = "Primarily in poetry."
				notes = "Primarily in poetry."
			end

		-- normal Greek
		else
			insert_if_not(subtitles, "normal variant")
			forms = stem2 .. "os"
			if umatch(toNFD(stem2), "" .. accent .. "$") then
				forms = stem2 .. "n"
			else
				forms = stem2 .. "a"
			end

			forms = stem2 .. "es"
			forms = stem2 .. "as"
			forms = stem2 .. "es"
			if umatch(toNFD(stem1), "" .. accent .. "s$") then
				-- Per Hiley, words in -is and -ys have a poetic vocative
				-- without the -s, but otherwise the vocative is the same
				-- as the nominative.
				forms = {stem1, (stem1:gsub("s$", ""))}
				notes = "In poetry."
			end
		end
	elseif types.not_Greek then
		insert_if_not(subtitles, "non-Greek-type")
	end

	-- polis
	if types.polis then
		stem1 = extract_stem(stem1, "polis")
		insert_if_not(subtitles, "i-stem")
		insert_if_not(subtitles, "partially Greek-type")

		forms = stem1 .. "polis"
		forms = stem1 .. "polis"
		forms = stem1 .. "polī"
		forms = {stem1 .. "polim", stem1 .. "polin"}
		forms = stem1 .. "polī"
		forms = {stem1 .. "polis", stem1 .. "polī"}
	elseif types.not_polis then
		insert_if_not(subtitles, non_i_stem_type())
	end

	-- all neuter
	if types.N then
		insert_if_not(subtitles, "neuter")

		forms = stem1

		-- neuter I stem
		if types.I then

			-- pure variety
			if types.pure then
				insert_if_not(subtitles, "pure i-stem")
				forms = stem2 .. "ī"

				forms = stem2 .. "ia"
				forms = stem2 .. "ium"
				forms = stem2 .. "ia"
				forms = stem2 .. "ia"

			-- non-pure variety (rare)
			else
				insert_if_not(subtitles, "i-stem")
				forms = stem2 .. "a"
				forms = {stem2 .. "ium", stem2 .. "um"}
				forms = stem2 .. "a"
				forms = stem2 .. "a"
			end

		-- normal neuter
		else
			insert_if_not(subtitles, non_i_stem_type())
			forms = stem2 .. "a"
			forms = stem2 .. "a"
			forms = stem2 .. "a"
		end

	-- I stem
	elseif types.I or acc_sg_i_stem_subtype or abl_sg_i_stem_subtype then
		if types.not_N then
			insert_if_not(subtitles, "non-neuter i-stem")
		else
			insert_if_not(subtitles, "i-stem")
		end

		forms = stem2 .. "ium"
		-- Per Allen and Greenough, Hiley and others, the acc_pl in -īs
		-- applied originally to all i-stem nouns, and was current as an
		-- alternative form up through Caesar.
		forms = {stem2 .. "ēs", stem2 .. "īs"}

		local num = data.num
		for subtype, _ in pairs(types) do
			local acc_sg_i_stem_props = acc_sg_i_stem_subtypes
			if acc_sg_i_stem_props then
				forms = {}
				for _, ending in ipairs(acc_sg_i_stem_props.acc_sg) do
					insert_if_not(forms, stem2 .. ending)
				end
				if num ~= "pl" then
					for _, t in ipairs(acc_sg_i_stem_props.title) do
						insert_if_not(subtitles, t)
					end
				end
				break
			end
		end

		for subtype, _ in pairs(types) do
			local abl_sg_i_stem_props = abl_sg_i_stem_subtypes
			if abl_sg_i_stem_props then
				forms = {}
				for _, ending in ipairs(abl_sg_i_stem_props.abl_sg) do
					insert_if_not(forms, stem2 .. ending)
				end
				if num ~= "pl" then
					for _, t in ipairs(abl_sg_i_stem_props.title) do
						insert_if_not(subtitles, t)
					end
				end
				break
			end
		end
	elseif types.not_N and types.not_I then
		insert_if_not(subtitles, "non-neuter " .. non_i_stem_type())
	elseif types.not_N then
		insert_if_not(subtitles, "non-neuter")
	elseif types.not_I then
		insert_if_not(subtitles, non_i_stem_type())
	end

	-- with locative
	if data.loc then
		-- As far as I can tell, in general both dative singular and
		-- ablative singular could be used for the third-declension locative,
		-- with different time periods preferring different forms.
		-- http://dcc.dickinson.edu/grammar/latin/3rd-declension-locative-case
		-- mentions rūrī along with either Carthāginī or Carthāgine.
		-- Wikipedia in https://en.wikipedia.orghttps://dictious.com/en/Locative_case#Latin
		-- says this:
		--
		-- In archaic times, the locative singular of third declension nouns
		-- was still interchangeable between ablative and dative forms, but in
		-- the Augustan Period the use of the ablative form became fixed.
		-- Therefore, both forms "rūrī" and "rūre" may be encountered.
		--
		-- Lewis and Short confirm this.
		local loc_sg = forms
		if type(loc_sg) == "table" then
			loc_sg = deep_copy(loc_sg)
		else
			loc_sg = {loc_sg}
		end
		local abl_sg = forms
		if type(abl_sg) == "table" then
			for _, form in ipairs(abl_sg) do
				insert_if_not(loc_sg, deep_copy(form))
			end
		else
			insert_if_not(loc_sg, abl_sg)
		end
		forms = loc_sg
		forms = deep_copy(forms)
		--The following is what we used to have, but I simply cannot believe it.
		--if types.Greek and not types.s then
		--	forms = stem2 .. "ēs"
		--end
	end
end

decl = function(data, args)
	local forms, types, subtitles, notes = data.forms, data.types, data.subtitles, data.notes
	local stem = args

	-- normal 4th
	forms = stem .. "us"
	forms = stem .. "ūs"
	forms = stem .. "uī"
	forms = stem .. "um"
	forms = stem .. "ū"
	forms = stem .. "us"

	forms = stem .. "ūs"
	forms = stem .. "uum"
	forms = stem .. "ibus"
	forms = stem .. "ūs"
	forms = stem .. "ibus"
	forms = stem .. "ūs"

	if types.echo then
		insert_if_not(subtitles, "all cases except the genitive and accusative singular in ''-ō''")

		for slot in pairs(forms) do
			if slot ~= "gen_sg" then
				forms = stem .. "ō"
			end
		end

		add_form(forms, "acc_sg", stem, "ōn")

	elseif types.Callisto then
		insert_if_not(subtitles, "all cases except the genitive singular in ''-ō''")
		
		for slot in pairs(forms) do
			if slot ~= "gen_sg" then
				forms = stem .. "ō"
			end
		end

	end

	-- neuter
	if types.N then
		insert_if_not(subtitles, "neuter")

		forms = stem .. "ū̆"
		forms = {stem .. "ūs", stem .. "ū"}
		forms = {stem .. "ū", stem .. "uī"}
		forms = stem .. "ū̆"
		forms = stem .. "ū̆"

		forms = stem .. "ua"
		forms = stem .. "ua"
		forms = stem .. "ua"
		
		local note1 = "The length of the final vowel is uncertain in the nominative/accusative/vocative singular; ] considers it to end with ''-ū'', while ] considers it to end with ''-ŭ''."
		local note2 = "According to ]."
		local note3 = "According to ]."
		local note4 = "According to both."
		notes = note1
		notes = note2
		notes = note3
		notes = note4
		notes = note2
		notes = note1
		notes = note4
		notes = note1
		
	end

	-- ubus
	if types.ubus then
		insert_if_not(subtitles, "dative/ablative plural in ''-ubus''")

		forms = stem .. "ubus"
		forms = stem .. "ubus"
	elseif types.not_ubus then
		insert_if_not(subtitles, "dative/ablative plural in ''-ibus''")
	end

	-- with locative
	if data.loc then
		forms = forms
		forms = forms
	end
end

decl = function(data, args)
	local forms, types = data.forms, data.types
	local stem = args

	-- ies
	if types.i then
		stem = stem .. "i"
	end

	forms = stem .. "ēs"
	forms = stem .. "eī"
	forms = stem .. "eī"
	forms = stem .. "em"
	forms = stem .. "ē"
	forms = stem .. "ēs"

	forms = stem .. "ēs"
	forms = stem .. "ērum"
	forms = stem .. "ēbus"
	forms = stem .. "ēs"
	forms = stem .. "ēbus"
	forms = stem .. "ēs"

	-- ies
	if types.i then
		forms = stem .. "ēī"
		forms = stem .. "ēī"
	end

	--with locative
	if data.loc then
		forms = stem .. "ē"
		forms = stem .. "ēbus"
	end
end

decl = function(data, args)
	local forms = data.forms
	local stem1, stem2 = args, args
	insert_if_not(data.subtitles, "with a distinct plural")

	forms = stem1
	forms = stem1
	forms = stem1
	forms = stem1
	forms = stem1
	forms = stem1

	forms = stem2
	forms = stem2
	forms = stem2
	forms = stem2
	forms = stem2
	forms = stem2

	-- with locative
	if data.loc then
		forms = stem1
		forms = stem2
	end
end

decl = function(data, args)
	local forms = data.forms
	local stem = args
	insert_if_not(data.subtitles, "used only in the nominative and accusative")

	forms = stem
	forms = "-"
	forms = "-"
	forms = stem
	forms = "-"
	forms = "-"

	forms = "-"
	forms = "-"
	forms = "-"
	forms = "-"
	forms = "-"
	forms = "-"

	-- with locative (for multiword terms)
	if data.loc then
		forms = "-"
		forms = "-"
	end

	data.num = "sg"
end

decl = function(data, args)
	local forms, subtitles, notes = data.forms, data.subtitles, data.notes
	local stem = args

	forms = "-"
	forms = "-"
	forms = "-"
	forms = "-"
	forms = "-"
	forms = "-"

	forms = "-"
	forms = "-"
	forms = "-"
	forms = "-"
	forms = "-"
	forms = "-"

	if stem == "bōs" then
		data.decl = "3"
		local stem1, stem2 = "bōs", "bov"
		
		decl(data, {stem1, stem2})

		add_form(forms, "abl_sg", stem2, "īd")
		notes] = "Old Latin."

		add_form(forms, "gen_pl", "bo", "um", 1)
		add_form(forms, "gen_pl", stem2, "erum")
		add_form(forms, "dat_pl", "", "bōbus", 1)
		add_form(forms, "dat_pl", "", "būbus", 2)
		add_form(forms, "abl_pl", "", "bōbus", 1)
		add_form(forms, "abl_pl", "", "būbus", 2)

	elseif stem:match("^eus$") then
		data.decl = "2"
		local dD = stem:sub(1, 1)
		
		forms = dD .. "eus"
		forms = dD .. "eī"
		forms = dD .. "eō"
		forms = dD .. "eum"
		forms = dD .. "eō"
		forms = {dD .. "eus", dD .. "ee"}
		notes = "Rare during the Classical period."
		notes = "From Late Latin onwards."
		
		if stem == "deus" then
			forms = {"dī", "diī", "deī"}
			forms = {"deōrum", "deûm"}
			forms = {"dīs", "diīs", "deīs"}
			forms = "deōs"
			forms = {"dīs", "diīs", "deīs"}
			forms = {"dī", "diī", "deī"}
		end

	elseif stem == "domus" then
		data.decl = "4,2"
		data.title = "]/] noun"

		forms = "domus"
		forms = {"domūs", "domī"}
		forms = {"domuī", "domō", "domū"}
		forms = "domum"
		forms = {"domū", "domō"}
		forms = "domus"
		forms = "domī"

		forms = "domūs"
		forms = {"domuum", "domōrum"}
		forms = "domibus"
		forms = {"domūs", "domōs"}
		forms = "domibus"
		forms = "domūs"
		forms = "-"

		data.loc = true

	elseif umatch(stem, "^ēs" .. BREVE .. "?s$") then
		local ij = usub(stem, 1, 1)
		local uu = umatch(stem, "" .. BREVE .. "?")

		forms = stem
		forms = ij .. "ēsū"
		forms = ij .. "ēsū"
		forms = ij .. "ēs" .. uu .. "m"
		forms = ij .. "ēsū"
		forms = ij .. "ēsū"
		data.num = "sg"
	elseif stem:match("^ūgerum$") then
		data.decl = "2,3"
		local ij = stem:sub(1, 1)
		data.title = "]–] hybrid noun"
		insert_if_not(subtitles, "neuter")

		forms = ij .. "ūgerum"
		forms = ij .. "ūgerī"
		forms = ij .. "ūgerō"
		forms = ij .. "ūgerum"
		forms = ij .. "ūgerō"
		forms = ij .. "ūgerum"
		forms = ij .. "ūgera"
		forms = ij .. "ūgerum"
		forms = ij .. "ūgeribus"
		forms = ij .. "ūgera"
		forms = {ij .. "ūgeribus", ij .. "ūgerīs"}
		forms = ij .. "ūgera"

		notes = "Once only, in:<br/>M. Terentius Varro, ''Res Rusticae'', bk I, ch. x"

	elseif stem == "sūs" then
		data.decl = "3"

		forms = "sūs"
		forms = "suis"
		forms = "suī"
		forms = "suem"
		forms = "sue"
		forms = "sūs"

		forms = "suēs"
		forms = "suum"
		forms = {"suibus", "sūbus", "subus"}
		forms = "suēs"
		forms = {"suibus", "sūbus", "subus"}
		forms = "suēs"

	elseif stem == "ēthos" then
		data.decl = "3"
		insert_if_not(subtitles, glossary_link("irregular"))
		insert_if_not(subtitles, "Greek-type")

		forms = "ēthos"
		forms = "ētheos"
		forms = "ēthos"
		forms = "ēthos"

		forms = {"ēthea", "ēthē"}
		forms = {"ēthesi", "ēthesin"}
		forms = {"ēthea", "ēthē"}
		forms = {"ēthesi", "ēthesin"}
		forms = {"ēthea", "ēthē"}

	elseif stem == "Athōs" then
		data.decl = "2"
		insert_if_not(subtitles, "highly " .. glossary_link("irregular"))
		insert_if_not(subtitles, "Greek-type")

		forms = "Athōs"
		forms = "Athō"
		forms = "Athō"
		forms = {"Athō", "Athōn"}
		forms = "Athō"
		forms = "Athōs"
		data.num = "sg"

	elseif stem:match("^ēnum$") then
		data.decl = "4,2"
		local uv = stem:sub(1, 1)
		data.title = "]/] noun"
		insert_if_not(subtitles, glossary_link("defective"))

		forms = {uv .. "ēnuī", uv .. "ēnō"}
		forms = uv .. "ēnum"
		data.num = "sg"

	elseif stem:match("^īs$") then
		data.decl = "3"
		local uv = stem:sub(1, 1)
		insert_if_not(subtitles, glossary_link("irregular"))
		insert_if_not(subtitles, glossary_link("defective"))

		forms = uv .. "īs"
		forms = uv .. "īs"
		forms = uv .. "ī"
		forms = uv .. "im"
		forms = uv .. "ī"
		forms = uv .. "īs"

		forms = uv .. "īrēs"
		forms = uv .. "īrium"
		forms = uv .. "īribus"
		forms = {uv .. "īrēs", uv .. "īrīs"}
		forms = uv .. "īribus"
		forms = uv .. "īrēs"
	
	elseif stem == "cupressus" then 
		data.decl = "4,2"
		data.title = "]/] noun"
		
		forms = "cupressus"
		forms = {"cupressī", "cupressūs"}
		forms = "cupressō"
		forms = "cupressum"
		forms = {"cupressō", "cupressū"}
		forms = "cupressus"

		forms = {"cupressī", "cupressūs"}
		forms = "cupressōrum"
		forms = "cupressīs"
		forms = {"cupressōs", "cupressūs"}
		forms = "cupressīs"
		forms = {"cupressī", "cupressūs"}

	else
		error("Stem " .. stem .. " not recognized.")
	end
end

return decl

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