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

local inflections = {}

local function add_inflection(infl_func, stem_func)
	local ret_table = {}
	setmetatable(ret_table, {__call = infl_func})
	ret_table.get_stem = stem_func or function() return "" end
	return ret_table
end

local function add_infl_ester(stem, conj)
	return add_inflection(function(self, args, data)
		inflections[conj]({stem}, data)
		data.forms.aux = {"ester"}
		table.insert(data.categories, "Ladin verbs taking ester as auxiliary")
	end)
end

local function add_infl_avei_or_ester(stem, conj)
	return add_inflection(function(self, args, data)
		inflections[conj]({stem}, data)
		data.forms.aux[2] = "ester"
		table.insert(data.categories, "Ladin verbs taking avei or ester as auxiliary")
	end)
end

local function add_infl_irr_past_part(stem, conj, past_part)
	return add_inflection(function(self, args, data)
		inflections[conj]({stem}, data)
		data.conj = data.conj .. ", irregular past participle"
		data.forms.past_part = past_part
		table.insert(data.categories, "Ladin irregular verbs")
	end)
end

inflections["er-1st"] = add_inflection(function(self, args, data)
	data.conj = "first conjugation"
	data.forms.inf = {args[1] .. "er", args[1] .. "é"}
	data.forms.aux = {args[2] or "avei"}
	data.forms.gerund = {args[1] .. "an"}
	data.forms.past_part = {args[1] .. "é"}
	
	data.forms.pres_ind_1sg = {args[1] .. "e", args[1] .. "eie"}
	data.forms.pres_ind_2sg = {args[1] .. "es", args[1] .. "eies"}
	data.forms.pres_ind_3sg = {args[1] .. "a", args[1] .. "eia", args[1] .. "ea"}
	data.forms.pres_ind_1pl = {args[1] .. "on"}
	data.forms.pres_ind_2pl = {args[1] .. "eis"}
	data.forms.pres_ind_3pl = {args[1] .. "a", args[1] .. "eia"}

	data.forms.impf_ind_1sg = {args[1] .. "ove"}
	data.forms.impf_ind_2sg = {args[1] .. "oves"}
	data.forms.impf_ind_3sg = {args[1] .. "ova"}
	data.forms.impf_ind_1pl = {args[1] .. "ovan"}
	data.forms.impf_ind_2pl = {args[1] .. "ovais"}
	data.forms.impf_ind_3pl = {args[1] .. "ova"}
	
	data.forms.futr_ind_1sg = {args[1] .. "aré"}
	data.forms.futr_ind_2sg = {args[1] .. "aras"}
	data.forms.futr_ind_3sg = {args[1] .. "arà"}
	data.forms.futr_ind_1pl = {args[1] .. "aron"}
	data.forms.futr_ind_2pl = {args[1] .. "areis"}
	data.forms.futr_ind_3pl = {args[1] .. "arà"}
	
	data.forms.pres_sub_1sg = {args[1] .. "e", args[1] .. "eie"}
	data.forms.pres_sub_2sg = {args[1] .. "es", args[1] .. "eies"}
	data.forms.pres_sub_3sg = {args[1] .. "e", args[1] .. "eie"}
	data.forms.pres_sub_1pl = {args[1] .. "on"}
	data.forms.pres_sub_2pl = {args[1] .. "eis"}
	data.forms.pres_sub_3pl = {args[1] .. "e"}
	
	data.forms.impf_sub_1sg = {args[1] .. "asse"}
	data.forms.impf_sub_2sg = {args[1] .. "asses"}
	data.forms.impf_sub_3sg = {args[1] .. "assa"}
	data.forms.impf_sub_1pl = {args[1] .. "assan"}
	data.forms.impf_sub_2pl = {args[1] .. "assais"}
	data.forms.impf_sub_3pl = {args[1] .. "assa"}
	
	data.forms.impr_2sg = {args[1] .. "a", args[1] .. "eia"}
	data.forms.impr_1pl = {args[1] .. "on"}
	data.forms.impr_2pl = {args[1] .. "ede"}

	table.insert(data.categories, "Ladin first conjugation verbs")
end, function(word)
	return mw.ustring.sub(word, -2, -1) == "er" and mw.ustring.sub(word, 1, -3) or mw.ustring.sub(word, 1, -2)
end)

inflections["cherder"] = add_infl_avei_or_ester("cherd", "er-1st")
inflections["cogner"] = add_infl_ester("cogn", "er-1st")

inflections["dé"] = add_inflection(function(self, args, data)
	inflections["er-1st"]({"d"}, data, true)
	
	data.conj = data.conj .. ", irregular"
	data.forms.inf = {"dé", "dèr"}
	data.forms.aux = nil
	data.forms.gerund = nil
	data.forms.past_part = {"dé"}
	
	data.forms.pres_ind_1sg = {"dé"}
	data.forms.pres_ind_2sg = {"das"}
	data.forms.pres_ind_3sg = {"dà"}
	data.forms.pres_ind_3pl = {"dà"}
	
	data.forms.pres_sub_1sg = {"dae"}
	data.forms.pres_sub_2sg = {"daes"}
	data.forms.pres_sub_3sg = {"dae"}
	data.forms.pres_sub_3pl = {"dae"}
	
	data.forms.impr_2sg = {"dà"}
	data.forms.impr_1pl = nil

	table.insert(data.categories, "Ladin irregular verbs")
end)

inflections["mener"] = add_inflection(function(self, args, data)
	inflections["er-1st"]({"men"}, data)
	data.conj = data.conj .. ", irregular"

	data.forms.pres_ind_1sg = {"meine", "meineie"}
	data.forms.pres_ind_2sg = {"meines", "meineis"}
	data.forms.pres_ind_3sg = {"meina", "meineia", "menea"}
	data.forms.pres_ind_3pl = {"meina", "meineia"}
	
	data.forms.pres_sub_1sg = {"meine", "meineie"}
	data.forms.pres_sub_2sg = {"meines", "meineis"}
	data.forms.pres_sub_3sg = {"meine", "meineie"}
	data.forms.pres_sub_3pl = {"meine"}
	
	data.forms.impr_2sg = {"meina", "meineia"}
	
	table.insert(data.categories, "Ladin irregular verbs")
end)

inflections["scuter"] = add_inflection(function(self, args, data)
	inflections["er-1st"]({"scut"}, data)
	data.conj = data.conj .. ", irregular"

	data.forms.pres_ind_1sg = {"scoute", "scouteie"}
	data.forms.pres_ind_2sg = {"scoutes", "scouteis"}
	data.forms.pres_ind_3sg = {"scouta", "scouteia", "scutea"}
	data.forms.pres_ind_3pl = {"scouta", "scouteia"}
	
	data.forms.pres_sub_1sg = {"scoute", "scouteie"}
	data.forms.pres_sub_2sg = {"scoutes", "scouteies"}
	data.forms.pres_sub_3sg = {"scoute", "scouteie"}
	data.forms.pres_sub_3pl = {"scoute"}
	
	data.forms.impr_2sg = {"scouta", "scouteia"}
	
	table.insert(data.categories, "Ladin irregular verbs")
end)

--------------------------------------------------------------------------------

inflections["er-2nd"] = add_inflection(function(self, args, data, nocat)
	data.conj = "second conjugation"
	data.forms.inf = {args[1] .. "er", args[1] .. "ei"}
	data.forms.aux = {args[2] or "avei"}
	data.forms.gerund = {args[1] .. "an"}
	data.forms.past_part = {args[1] .. "ù"}
	
	data.forms.pres_ind_1sg = {args[1] .. "e"}
	data.forms.pres_ind_2sg = {args[1] .. "es"}
	data.forms.pres_ind_3sg = {args[1]}
	data.forms.pres_ind_1pl = {args[1] .. "on"}
	data.forms.pres_ind_2pl = {args[1] .. "eis"}
	data.forms.pres_ind_3pl = {args[1]}

	data.forms.impf_ind_1sg = {args[1] .. "ove"}
	data.forms.impf_ind_2sg = {args[1] .. "oves"}
	data.forms.impf_ind_3sg = {args[1] .. "ova"}
	data.forms.impf_ind_1pl = {args[1] .. "ovan"}
	data.forms.impf_ind_2pl = {args[1] .. "ovais"}
	data.forms.impf_ind_3pl = {args[1] .. "ova"}
	
	data.forms.futr_ind_1sg = {args[1] .. "aré"}
	data.forms.futr_ind_2sg = {args[1] .. "aras"}
	data.forms.futr_ind_3sg = {args[1] .. "arà"}
	data.forms.futr_ind_1pl = {args[1] .. "aron"}
	data.forms.futr_ind_2pl = {args[1] .. "areis"}
	data.forms.futr_ind_3pl = {args[1] .. "arà"}
	
	data.forms.pres_sub_1sg = {args[1] .. "e"}
	data.forms.pres_sub_2sg = {args[1] .. "es"}
	data.forms.pres_sub_3sg = {args[1] .. "e"}
	data.forms.pres_sub_1pl = {args[1] .. "on"}
	data.forms.pres_sub_2pl = {args[1] .. "eis"}
	data.forms.pres_sub_3pl = {args[1] .. "e"}
	
	data.forms.impf_sub_1sg = {args[1] .. "esse"}
	data.forms.impf_sub_2sg = {args[1] .. "esses"}
	data.forms.impf_sub_3sg = {args[1] .. "essa"}
	data.forms.impf_sub_1pl = {args[1] .. "essan"}
	data.forms.impf_sub_2pl = {args[1] .. "essais"}
	data.forms.impf_sub_3pl = {args[1] .. "essa"}
	
	data.forms.impr_2sg = {args[1]}
	data.forms.impr_1pl = {args[1] .. "on"}
	data.forms.impr_2pl = {args[1] .. "ede"}

	if not nocat then
		table.insert(data.categories, "Ladin second conjugation verbs")
	end
end, function(word)
	return mw.ustring.sub(word, 1, -3)
end)

inflections["aussei"] = add_inflection(function(self, args, data)
	inflections["er-2nd"]({"auss"}, data)
	data.conj = data.conj .. ", irregular"
	data.forms.inf[2] = "aussé"
	data.forms.aux = nil

	data.forms.impf_ind_3sg[1] = "aussa"
	data.forms.impf_ind_3pl[1] = "aussa"
	
	data.forms.impr_2sg = nil
	data.forms.impr_1pl = nil
	data.forms.impr_2pl = nil

	table.insert(data.categories, "Ladin irregular verbs")
end)

inflections["dovei"] = add_inflection(function(self, args, data)
	inflections["er-2nd"]({"dess"}, data)
	data.conj = data.conj .. ", irregular"
	data.forms.inf = {"dovei", "dover"}
	data.forms.aux = nil
	data.forms.gerund[2] = "dovan"
	data.forms.past_part[2] = "dovù"

	data.forms.impf_ind_1sg[2] = "dove"
	data.forms.impf_ind_2sg[2] = "doves"
	data.forms.impf_ind_3sg[2] = "dova"
	data.forms.impf_ind_1pl[2] = "dovan"
	data.forms.impf_ind_2pl[2] = "dovais"
	data.forms.impf_ind_3pl[2] = "dova"
	
	data.forms.impf_sub_1sg[2] = "dovesse"
	data.forms.impf_sub_2sg[2] = "dovesses"
	data.forms.impf_sub_3sg[2] = "dovessa"
	data.forms.impf_sub_1pl[2] = "dovessan"
	data.forms.impf_sub_2pl[2] = "dovessais"
	data.forms.impf_sub_3pl[2] = "dovessa"
	
	data.forms.impr_2sg = nil
	data.forms.impr_1pl = nil
	data.forms.impr_2pl = nil

	table.insert(data.categories, "Ladin irregular verbs")
end)

inflections["messei"] = add_inflection(function(self, args, data)
	inflections["er-2nd"]({"mess"}, data)
	data.conj = data.conj .. ", no imperative"
	data.forms.inf[2] = nil
	data.forms.aux = nil

	data.forms.impr_2sg = nil
	data.forms.impr_1pl = nil
	data.forms.impr_2pl = nil

	table.insert(data.categories, "Ladin irregular verbs")
end)

inflections["nevei"] = add_inflection(function(self, args, data)
	data.conj = "irregular, impersonal"
	data.forms.inf = {"nevei"}
	data.forms.aux = nil
	data.forms.past_part = {"nevù"}
	
	data.forms.pres_ind_3sg = {"neiv"}

	data.forms.impf_ind_3sg = {"nevova"}

	data.forms.futr_ind_3sg = {"nevarà"}

	data.forms.pres_sub_3sg = {"neive"}

	data.forms.impf_sub_3sg = {"nevessa"}

	table.insert(data.categories, "Ladin irregular verbs")
	table.insert(data.categories, "Ladin impersonal verbs")
end)

inflections["plovei"] = add_inflection(function(self, args, data)
	data.conj = "irregular, impersonal"
	data.forms.inf = {"plovei", "piever"}
	data.forms.aux = nil
	data.forms.past_part = {"plovù"}
	
	data.forms.pres_ind_3sg = {"pluev"}

	data.forms.impf_ind_3sg = {"plovova"}

	data.forms.futr_ind_3sg = {"plovarà"}

	data.forms.pres_sub_3sg = {"plueve"}

	data.forms.impf_sub_3sg = {"plovessa"}

	table.insert(data.categories, "Ladin irregular verbs")
	table.insert(data.categories, "Ladin impersonal verbs")
end)

inflections["podei"] = add_inflection(function(self, args, data)
	inflections["er-2nd"]({"pod"}, data)
	data.conj = data.conj .. ", irregular"
	data.forms.inf = {"podei"}
	data.forms.aux = nil

	data.forms.pres_ind_1sg = {"posse"}
	data.forms.pres_ind_2sg = {"pos"}
	data.forms.pres_ind_3sg = {"pò"}
	data.forms.pres_ind_3pl = {"pò"}
	
	data.forms.pres_sub_1sg = {"posse"}
	data.forms.pres_sub_2sg = {"posses"}
	data.forms.pres_sub_3sg = {"posse"}
	data.forms.pres_sub_3pl = {"posse"}
	
	data.forms.impr_2sg = nil
	data.forms.impr_1pl = nil
	data.forms.impr_2pl = nil
	
	table.insert(data.categories, "Ladin irregular verbs")
end)

inflections["savei"] = add_inflection(function(self, args, data)
	inflections["er-2nd"]({"sav"}, data)
	data.conj = data.conj .. ", irregular"
	data.forms.past_part = {"sapù"}

	data.forms.pres_ind_1sg = {"sé"}
	data.forms.pres_ind_2sg = {"sas"}
	data.forms.pres_ind_3sg = {"sà"}
	data.forms.pres_ind_3pl = {"sà"}
	
	data.forms.pres_sub_1sg = {"sae"}
	data.forms.pres_sub_2sg = {"sas"}
	data.forms.pres_sub_3sg = {"sae"}
	data.forms.pres_sub_3pl = {"sae"}
	
	data.forms.impr_2sg = {"sà"}
	
	table.insert(data.categories, "Ladin irregular verbs")
end)

inflections["vedei"] = add_inflection(function(self, args, data)
	inflections["er-2nd"]({"ved"}, data)
	data.conj = data.conj .. ", irregular"

	data.forms.pres_ind_1sg = {"veide"}
	data.forms.pres_ind_2sg = {"veides"}
	data.forms.pres_ind_3sg = {"veid"}
	data.forms.pres_ind_3pl = {"veid"}
	
	data.forms.pres_sub_1sg = {"veide"}
	data.forms.pres_sub_2sg = {"veides"}
	data.forms.pres_sub_3sg = {"veide"}
	data.forms.pres_sub_3pl = {"veide"}
	
	data.forms.impr_2sg = {"veid"}
	
	table.insert(data.categories, "Ladin irregular verbs")
end)

inflections["volei"] = add_inflection(function(self, args, data)
	inflections["er-2nd"]({"vol"}, data)
	data.conj = data.conj .. ", irregular"

	data.forms.pres_ind_1sg = {"vue"}
	data.forms.pres_ind_2sg = {"vues"}
	data.forms.pres_ind_3sg = {"vuel"}
	data.forms.pres_ind_3pl = {"vues"}
	
	data.forms.pres_sub_1sg = {"vue"}
	data.forms.pres_sub_2sg = {"vues"}
	data.forms.pres_sub_3sg = {"vuele"}
	data.forms.pres_sub_3pl = {"vuele"}
	
	data.forms.impr_2sg = nil
	data.forms.impr_1pl = nil
	data.forms.impr_2pl = nil
	
	table.insert(data.categories, "Ladin irregular verbs")
end)

--------------------------------------------------------------------------------

inflections["er-3rd"] = add_inflection(function(self, args, data, nocat)
	inflections["er-2nd"](args, data, true)
	
	data.conj = "third conjugation"
	data.forms.inf[2] = args[1] .. "e"
	
	if not nocat then
		table.insert(data.categories, "Ladin third conjugation verbs")
	end
end, inflections["er-1st"].get_stem)

inflections["nascer"] = add_infl_ester("nasc", "er-3rd")
inflections["viver"] = add_infl_ester("viv", "er-3rd")

inflections["arjonjer"] = add_infl_irr_past_part("arjonj", "er-3rd", {"arjonjù", "arjont"})
inflections["condujer"] = add_infl_irr_past_part("conduj", "er-3rd", {"condut"})
inflections["corompe"] = add_infl_irr_past_part("coromp", "er-3rd", {"corot"})
inflections["depenjer"] = add_infl_irr_past_part("depenj", "er-3rd", {"depent"})
inflections["entenjer"] = add_infl_irr_past_part("entenj", "er-3rd", {"entent"})
inflections["erjer"] = add_infl_irr_past_part("erj", "er-3rd", {"ert"})
inflections["desgorjer"] = add_infl_irr_past_part("desgorj", "er-3rd", {"desgort"})
inflections["franjer"] = add_infl_irr_past_part("franj", "er-3rd", {"frant"})
inflections["jonjer"] = add_infl_irr_past_part("jonj", "er-3rd", {"jont"})
inflections["onjer"] = add_infl_irr_past_part("onj", "er-3rd", {"ont"})
inflections["perdujer"] = add_infl_irr_past_part("perduj", "er-3rd", {"perdut"})
inflections["produjer"] = add_infl_irr_past_part("produj", "er-3rd", {"produt"})
inflections["redujer"] = add_infl_irr_past_part("reduj", "er-3rd", {"redut"})
inflections["romper"] = add_infl_irr_past_part("romp", "er-3rd", {"rot"})
inflections["scriver"] = add_infl_irr_past_part("scriv", "er-3rd", {"scrit"})
inflections["sotscriver"] = add_infl_irr_past_part("sotscriv", "er-3rd", {"sotscrit"})
inflections["sponjer"] = add_infl_irr_past_part("sponj", "er-3rd", {"spont"})
inflections["sporjer"] = add_infl_irr_past_part("sporj", "er-3rd", {"sport"})
inflections["strenjer"] = add_infl_irr_past_part("strenj", "er-3rd", {"strent"})
inflections["storjer"] = add_infl_irr_past_part("storj", "er-3rd", {"stort"})
inflections["terjer"] = add_infl_irr_past_part("terj", "er-3rd", {"tert"})
inflections["tradujer"] = add_infl_irr_past_part("traduj", "er-3rd", {"tradut"})

inflections["dì"] = add_inflection(function(self, args, data)
	inflections["er-3rd"]({"dij"}, data, true)
	
	data.conj = "irregular"
	data.forms.inf = {"dì", "dir"}
	data.forms.aux = nil
	data.forms.gerund = nil
	data.forms.past_part = {"dit", "dic", "dita", "dites"}
	
	data.forms.impr_2sg = {"dì"}
	data.forms.impr_1pl = nil

	table.insert(data.categories, "Ladin irregular verbs")
end)

inflections["fé"] = add_inflection(function(self, args, data)
	inflections["er-3rd"]({"faj"}, data, true)
	
	data.conj = data.conj .. ", irregular"
	data.forms.inf = {"fé", "fèr"}
	data.forms.aux = nil
	data.forms.gerund = nil
	data.forms.past_part = {"fat", "fac", "fata", "fates"}
	
	data.forms.pres_ind_1sg = {"feje"}
	data.forms.pres_ind_2sg = {"fejes"}
	data.forms.pres_ind_3sg = {"fej"}
	data.forms.pres_ind_3pl = {"fej"}
	
	data.forms.pres_sub_1sg = {"feje"}
	data.forms.pres_sub_2sg = {"fejes"}
	data.forms.pres_sub_3sg = {"feje"}
	data.forms.pres_sub_3pl = {"feje"}
	
	data.forms.impr_2sg = {"fà"}
	data.forms.impr_1pl = nil

	table.insert(data.categories, "Ladin irregular verbs")
end)

--------------------------------------------------------------------------------

inflections["ir"] = add_inflection(function(self, args, data, nocat)
	data.conj = "fourth conjugation"
	data.forms.inf = {args[1] .. "ir", args[1] .. "ì"}
	data.forms.aux = {args[2] or "avei"}
	data.forms.gerund = {args[1] .. "ian"}
	data.forms.past_part = {args[1] .. "ì"}
	
	data.forms.pres_ind_1sg = {args[1] .. "e", args[1] .. "esce"}
	data.forms.pres_ind_2sg = {args[1] .. "es", args[1] .. "esces"}
	data.forms.pres_ind_3sg = {args[1], args[1] .. "esc"}
	data.forms.pres_ind_1pl = {args[1] .. "ion"}
	data.forms.pres_ind_2pl = {args[1] .. "ieis"}
	data.forms.pres_ind_3pl = {args[1], args[1] .. "esc"}

	data.forms.impf_ind_1sg = {args[1] .. "ive"}
	data.forms.impf_ind_2sg = {args[1] .. "ives"}
	data.forms.impf_ind_3sg = {args[1] .. "iva"}
	data.forms.impf_ind_1pl = {args[1] .. "ivan"}
	data.forms.impf_ind_2pl = {args[1] .. "ivais"}
	data.forms.impf_ind_3pl = {args[1] .. "iva"}
	
	data.forms.futr_ind_1sg = {args[1] .. "iré"}
	data.forms.futr_ind_2sg = {args[1] .. "iras"}
	data.forms.futr_ind_3sg = {args[1] .. "irà"}
	data.forms.futr_ind_1pl = {args[1] .. "iron"}
	data.forms.futr_ind_2pl = {args[1] .. "ireis"}
	data.forms.futr_ind_3pl = {args[1] .. "irà"}
	
	data.forms.pres_sub_1sg = {args[1] .. "e", args[1] .. "esce"}
	data.forms.pres_sub_2sg = {args[1] .. "es", args[1] .. "esces"}
	data.forms.pres_sub_3sg = {args[1] .. "e", args[1] .. "esce"}
	data.forms.pres_sub_1pl = {args[1] .. "ion"}
	data.forms.pres_sub_2pl = {args[1] .. "ieis"}
	data.forms.pres_sub_3pl = {args[1] .. "e", args[1] .. "esce"}
	
	data.forms.impf_sub_1sg = {args[1] .. "isse"}
	data.forms.impf_sub_2sg = {args[1] .. "isses"}
	data.forms.impf_sub_3sg = {args[1] .. "issa"}
	data.forms.impf_sub_1pl = {args[1] .. "issan"}
	data.forms.impf_sub_2pl = {args[1] .. "issais"}
	data.forms.impf_sub_3pl = {args[1] .. "issa"}
	
	data.forms.impr_2sg = {args[1], args[1] .. "esc"}
	data.forms.impr_1pl = {args[1] .. "ion"}
	data.forms.impr_2pl = {args[1] .. "ide"}
	if not nocat then
		table.insert(data.categories, "Ladin fourth conjugation verbs")
	end
end, function(word)
	return mw.ustring.sub(word, -2, -1) == "ir" and mw.ustring.sub(word, 1, -3) or mw.ustring.sub(word, 1, -2)
end)

inflections["dormir"] = add_infl_ester("dorm", "ir")

inflections["jì"] = add_inflection(function(self, args, data)
	inflections["ir"]({"j"}, data, true)
	
	data.conj = "irregular, suppletive"
	data.forms.inf = {"jì", "jit"}
	data.forms.aux = nil
	data.forms.gerund = nil
	data.forms.past_part = {"jù"}
	
	data.forms.pres_ind_1sg = {"vae"}
	data.forms.pres_ind_2sg = {"vas"}
	data.forms.pres_ind_3sg = {"va"}
	data.forms.pres_ind_3pl = {"va"}
	
	data.forms.pres_sub_1sg = {"vae"}
	data.forms.pres_sub_2sg = {"vaes"}
	data.forms.pres_sub_3sg = {"vae"}
	data.forms.pres_sub_3pl = {"vae"}
	
	data.forms.impr_2sg = {"va"}
	data.forms.impr_1pl = nil

	table.insert(data.categories, "Ladin irregular verbs")
	table.insert(data.categories, "Ladin suppletive verbs")
end)

inflections["morir"] = add_inflection(function(self, args, data)
	inflections["ir"]({"mor"}, data)
	
	data.conj = data.conj .. ", irregular"
	data.forms.aux = {"ester"}
	data.forms.gerund = nil
	data.forms.past_part = {"mort"}
	
	data.forms.pres_ind_1sg = {"muere"}
	data.forms.pres_ind_2sg = {"mueres"}
	data.forms.pres_ind_3sg = {"muer"}
	data.forms.pres_ind_3pl = {"muer"}
	
	data.forms.pres_sub_1sg = {"muere"}
	data.forms.pres_sub_2sg = {"mueres"}
	data.forms.pres_sub_3sg = {"muere"}
	data.forms.pres_sub_3pl = {"muere"}
	
	data.forms.impr_2sg = {"muer"}
	data.forms.impr_1pl = nil

	table.insert(data.categories, "Ladin irregular verbs")
	table.insert(data.categories, "Ladin verbs taking ester as auxiliary")
end)

inflections["partir"] = add_inflection(function(self, args, data)
	inflections["ir"]({"part"}, data)
	data.forms.aux = {"ester"}
	
	data.forms.pres_ind_1sg = {"perte"}
	data.forms.pres_ind_2sg = {"pertes"}
	data.forms.pres_ind_3sg = {"pert"}
	data.forms.pres_ind_3pl = {"pert"}
	
	data.forms.pres_sub_1sg = {"perte"}
	data.forms.pres_sub_2sg = {"pertes"}
	data.forms.pres_sub_3sg = {"pert"}
	data.forms.pres_sub_3pl = {"pert"}
	
	data.forms.impr_2sg = {"pert"}
	
	table.insert(data.categories, "Ladin verbs taking ester as auxiliary")
end)

inflections["vegnì"] = add_inflection(function(self, args, data)
	inflections["ir"]({"vegn"}, data)
	
	data.conj = data.conj .. ", irregular"
	data.forms.inf = {"vegnì"}
	data.forms.aux = nil
	data.forms.gerund = {"vegnan"}
	data.forms.past_part = {"vegnù"}
	
	data.forms.pres_ind_1sg = {"vegne"}
	data.forms.pres_ind_2sg = {"vegnes"}
	data.forms.pres_ind_3sg = {"vegn"}
	data.forms.pres_ind_3pl = {"vegn"}
	
	data.forms.pres_sub_1sg = {"vegne"}
	data.forms.pres_sub_2sg = {"vegnes"}
	data.forms.pres_sub_3sg = {"vegne"}
	data.forms.pres_sub_3pl = {"vegne"}
	
	data.forms.impr_2sg = {"vie"}
	data.forms.impr_1pl = nil

	table.insert(data.categories, "Ladin irregular verbs")
end)

--------------------------------------------------------------------------------

inflections["avei"] = add_inflection(function(self, args, data)
	data.conj = "highly irregular"
	data.forms.inf = {"avei"}
	data.forms.gerund = {"aean"}
	data.forms.past_part = {"abù"}
	
	data.forms.pres_ind_1sg = {"é"}
	data.forms.pres_ind_2sg = {"as"}
	data.forms.pres_ind_3sg = {"à"}
	data.forms.pres_ind_1pl = {"on", "aon"}
	data.forms.pres_ind_2pl = {"eis", "aeis"}
	data.forms.pres_ind_3pl = {"à"}

	data.forms.impf_ind_1sg = {"ove", "avee"}
	data.forms.impf_ind_2sg = {"oves", "avees"}
	data.forms.impf_ind_3sg = {"ova", "avea"}
	data.forms.impf_ind_1pl = {"ovan", "avean"}
	data.forms.impf_ind_2pl = {"ovais", "aveais"}
	data.forms.impf_ind_3pl = {"ova", "avea"}
	
	data.forms.futr_ind_1sg = {"aré"}
	data.forms.futr_ind_2sg = {"aras"}
	data.forms.futr_ind_3sg = {"arà"}
	data.forms.futr_ind_1pl = {"aron"}
	data.forms.futr_ind_2pl = {"areis"}
	data.forms.futr_ind_3pl = {"arà"}
	
	data.forms.pres_sub_1sg = {"ae", "ebe"}
	data.forms.pres_sub_2sg = {"aes", "ebes"}
	data.forms.pres_sub_3sg = {"ae", "ebe"}
	data.forms.pres_sub_1pl = {"on", "ombe"}
	data.forms.pres_sub_2pl = {"eis", "eibes"}
	data.forms.pres_sub_3pl = {"ae", "ebe"}
	
	data.forms.impf_sub_1sg = {"esse", "aesse"}
	data.forms.impf_sub_2sg = {"esses", "aesses"}
	data.forms.impf_sub_3sg = {"essa", "aessa"}
	data.forms.impf_sub_1pl = {"essan", "aessan"}
	data.forms.impf_sub_2pl = {"essais", "aessais"}
	data.forms.impf_sub_3pl = {"essa", "aessa"}
	
	data.forms.impr_2sg = {"aes", "ebes"}
	data.forms.impr_2pl = {"aede"}
	
	table.insert(data.categories, "Ladin irregular verbs")
end)

inflections["ester"] = add_inflection(function(self, args, data)
	data.conj = "highly irregular, suppletive"
	data.forms.inf = {"ester"}
	data.forms.gerund = {"sian"}
	data.forms.past_part = {"sté"}
	
	data.forms.pres_ind_1sg = {"son"}
	data.forms.pres_ind_2sg = {"ies"}
	data.forms.pres_ind_3sg = {"é"}
	data.forms.pres_ind_1pl = {"son"}
	data.forms.pres_ind_2pl = {"seis"}
	data.forms.pres_ind_3pl = {"é"}

	data.forms.impf_ind_1sg = {"fove"}
	data.forms.impf_ind_2sg = {"foves"}
	data.forms.impf_ind_3sg = {"fova"}
	data.forms.impf_ind_1pl = {"fovan"}
	data.forms.impf_ind_2pl = {"fovais"}
	data.forms.impf_ind_3pl = {"fova"}
	
	data.forms.futr_ind_1sg = {"saré"}
	data.forms.futr_ind_2sg = {"saras"}
	data.forms.futr_ind_3sg = {"sarà"}
	data.forms.futr_ind_1pl = {"saron"}
	data.forms.futr_ind_2pl = {"sareis"}
	data.forms.futr_ind_3pl = {"sarà"}
	
	data.forms.pres_sub_1sg = {"sie"}
	data.forms.pres_sub_2sg = {"sies"}
	data.forms.pres_sub_3sg = {"sie"}
	data.forms.pres_sub_1pl = {"son"}
	data.forms.pres_sub_2pl = {"seis"}
	data.forms.pres_sub_3pl = {"sie"}
	
	data.forms.impf_sub_1sg = {"fosse"}
	data.forms.impf_sub_2sg = {"fosses"}
	data.forms.impf_sub_3sg = {"fossa"}
	data.forms.impf_sub_1pl = {"fossan"}
	data.forms.impf_sub_2pl = {"fossais"}
	data.forms.impf_sub_3pl = {"fossa"}
	
	data.forms.impr_2sg = {"sies"}
	data.forms.impr_2pl = {"sede"}

	table.insert(data.categories, "Ladin irregular verbs")
	table.insert(data.categories, "Ladin suppletive verbs")
end)

return inflections