Mòdul:la-lema

De Viccionari
Salta a la navegació Salta a la cerca
Icona de documentació de mòdul Documentació del mòdul[mostra] [modifica] [refresca]

A continuació es mostra la documentació transclosa de la subpàgina /ús. [salta a la caixa de codi]


Aquest mòdul presenta l'enunciat d'un lema en llatí, incloent les categories corresponents ordenades. Dóna suport a les plantilles {{la-nom}}, {{la-verb}} i {{la-adj}}. Vegeu la documentació de les plantilles per a la seva utilització.

El mòdul es basa en Mòdul:lema pel format general d'un lema. S'invoca amb una única funció flex amb l'argument apropiat. Exemple: {{#invoke:la-lema|flex|Verbs}}

local export = {}
local pos_functions = {}
local m_lema = require("Mòdul:lema")
local m_link = require("Mòdul:enllaç")

local function format_infl_classes(infl_classes)
	if #infl_classes < 1 then
		return ""
	end
	
	return "; ''" .. table.concat(infl_classes, "/") .. "''"
end

-- Format pels enunciats de llatí
local function format_la_enunciat(data, declinacions)
	if #declinacions.enunciat > 0 then
		local headwords = {}
		for j, headword in ipairs(declinacions.enunciat) do
			local data_enunciat = {lang = "la", sc = "Latn"}
			data_enunciat.heads = m_link.language_link({term = headword[1], alt = headword.alt, langcode = "la"}, false)
			data_enunciat.genders = headword.genders
			data_enunciat.categories = data.categories
			if j == #declinacions.enunciat and not headword.label then
				data_enunciat.inflections = data.inflections
				table.insert(headwords, m_lema.full_headword(data_enunciat))
			else
				data_enunciat.inflections = {headword.label and {label=headword.label}}
				table.insert(headwords, m_lema.full_headword(data_enunciat))
			end
			data.categories = {}
		end
		return table.concat(headwords, ", ") .. format_infl_classes(declinacions.infl_classes)
	end
	
	return m_lema.full_headword(data) .. format_infl_classes(declinacions.infl_classes)
end
	
-- Treu una llista de formes per poder interpretar automàticament
local function make_bot_list(forms)
	local ret = ""
	
	for _, form in ipairs(forms) do
		if not (form.label:find("^1a") or form.label:find("^present")) then
			local form_title = m_link.sense_diacritics("la", form[1])
			ret = ret .. "* " .. form.label .. "=" .. form_title .. "(" .. form[1] .. ")\n"
		end
	end
	
	return ret
end

-- Funció d'entrada per mostrar l'enunciat del lema, l'única que s'invoca des d'una plantilla
function export.flex(frame)
	local args = frame:getParent().args
	pagename = args.pagename
	if not pagename or pagename == "" then
		pagename = mw.title.getCurrentTitle().subpageText
	end
	
	local data = {lang = "la", sc = "Latn", heads = {}, genders = {}, inflections = {}, categories = {}}
	local declinacions = {enunciat = {}, infl_classes = {}, declinacio = {}}
	local lema = args.lema; if lema == "" then lema = nil end
	
	local poscat = frame.args[1] or error("Falta especificar la categoria lèxica com a primer paràmetre.")
	if pos_functions[poscat] then
		local lema2 = pos_functions[poscat].func(args, data, declinacions)
		lema = lema or lema2
	else
		table.insert(data.categories, poscat .. " en llatí")
	end
	table.insert(data.heads, lema)
    
	if args.cat and args.cat ~= "" then
		table.insert(data.categories, args.cat)
	end
	
	if args.bot then
		if declinacions.declinacio.title then
			local infl = {}
			for key, form in pairs(declinacions.declinacio) do
				if key ~= "title" then
					table.insert(infl, {label = key, form})
				end
			end
			return make_bot_list(infl)
		elseif poscat == "Verbs" then
			return make_bot_list(declinacions.enunciat)
		end
	else
		return format_la_enunciat(data, declinacions) .. make_decl(declinacions.declinacio)
	end
end

pos_functions["Noms propis"] = {func = function(args, data, declinacions)
	local nominatiu = args[1]; if nominatiu == "" then nominatiu = pagename end
	local genitiu = args[2]; if genitiu == "" then genitiu = nil end
	local genere = args[3]; if genere == "" then genere = nil end
	
	table.insert(data.genders, (genere and genere or "?"))
	
	table.insert(data.categories, "Noms propis en llatí")
	
	if genitiu then
		table.insert(data.inflections, {label = "genitiu", genitiu})
		nom_declina(nominatiu, genitiu, genere, data, declinacions, args, true)
	end
	
	return nominatiu
end
}

-- Informació per a substantius
pos_functions["Substantius"] = {func = function(args, data, declinacions)
	local nominatiu = args[1]; if nominatiu == "" then nominatiu = pagename end
	local genitiu = args[2]; if genitiu == "" then genitiu = nil end
	local genere = args[3]; if genere == "" then genere = nil end
	
	table.insert(data.genders, (genere and genere or "?"))
	
	if mw.ustring.find(pagename, "[^ ]+ [^ ]+") then
		table.insert(data.categories, "Locucions nominals en llatí")
	else
		table.insert(data.categories, "Substantius en llatí")
		if genitiu then
			table.insert(data.inflections, {label = "genitiu", genitiu})
			nom_declina(nominatiu, genitiu, genere, data, declinacions, args)
		end
	end
	return nominatiu
end
}
	
function nom_declina(nominatiu, genitiu, genere, data, declinacions, args, sing)
	if args.sing then
		sing = args.sing ~= "no" or false
	end
	-- Casos de declinació
	if args.decl ~= "no" then
		if (nominatiu:find("a$") and genitiu:find("ae$"))
			or (nominatiu:find("ae$") and mw.ustring.find(genitiu, "ārum$"))
			then
			primera_decl(nominatiu, genitiu, data, declinacions, args, sing)
		elseif (nominatiu:find("ē$") and genitiu:find("ēs$"))
			or (nominatiu:find("[āē]s$") and genitiu:find("ae$"))
			then
			primera_decl_grega(nominatiu, genitiu, data, declinacions, args, sing)
		elseif (nominatiu:find("er$") and genitiu:find("ī$"))
			or (nominatiu:find("rī$") and genitiu:find("rōrum$"))
			or (nominatiu:find("vir$") and genitiu:find("virī$"))
			then
			segona_decl_er(nominatiu, genitiu, data, declinacions, args, sing)
		elseif (nominatiu:find("[uo]s$") and genitiu:find("ī$") and genere ~= "n")
			or (nominatiu:find("ī$") and genitiu:find("ōrum$"))
			then
			segona_decl_us(nominatiu, genitiu, data, declinacions, args, sing)
		elseif (nominatiu:find("us$") and genitiu:find("ī$") and genere == "n")
			or ((nominatiu:find("um$") or nominatiu:find("on$")) and genitiu:find("ī$"))
			or (nominatiu:find("a$") and genitiu:find("ōrum$"))
			then
			segona_decl_um(nominatiu, genitiu, data, declinacions, args, sing)
		elseif genitiu:find("[io]s$") or genitiu:find("um$") then
			-- 3a declinació
			local tema_i = require("Mòdul:utilitats").llista({"cos", "dos", "lis", "imber", "linter", "venter", "uter"})
			if genere ~= "n" then
				if genitiu:find("ium$") then
					tercera_decl_mf(nominatiu, genitiu, data, declinacions, args, "i", sing)
				elseif nominatiu == "canis" or nominatiu == "juvenis" or genitiu:find("[^i]um$") then
					tercera_decl_mf(nominatiu, genitiu, data, declinacions, args, "c", sing)
				elseif (nominatiu:find("[eēi]s$") and genitiu == mw.ustring.gsub(nominatiu, "[eēi]s$", "is"))
					or (nominatiu:find("[sx]$") and genitiu:find("[^aāeēiīoōuū][^aāeēiīoōuū]is$"))
					or tema_i[nominatiu]
					then
					tercera_decl_mf(nominatiu, genitiu, data, declinacions, args, "i", sing)
				else
					tercera_decl_mf(nominatiu, genitiu, data, declinacions, args, "c", sing)
				end
			else
				if nominatiu:find("e$") or nominatiu:find("a[lr]$") then
					tercera_decl_n(nominatiu, genitiu, data, declinacions, args, "i", sing)
				else
					tercera_decl_n(nominatiu, genitiu, data, declinacions, args, "c", sing)
				end
			end
		elseif mw.ustring.find(genitiu, "ūs$") then
			quarta_decl(nominatiu, genitiu, data, declinacions, args, sing)
		elseif mw.ustring.find(genitiu, "[eē]ī$") then
			cinquena_decl(nominatiu, genitiu, data, declinacions, args, sing)
		else
			-- declinació desconeguda
		end
		declinacions.declinacio.title = args.decl or declinacions.declinacio.title
		local casos = {"nom", "voc", "ac", "gen", "dat", "abl", "loc"}
		for i, cas in ipairs(casos) do
			declinacions.declinacio[cas .. "s"] = args[cas .. "s"] or declinacions.declinacio[cas .. "s"]
			declinacions.declinacio[cas .. "s2"] = args[cas .. "s2"] or declinacions.declinacio[cas .. "s2"]
			declinacions.declinacio[cas .. "p"] = args[cas .. "p"] or declinacions.declinacio[cas .. "p"]
			declinacions.declinacio[cas .. "p2"] = args[cas .. "p2"] or declinacions.declinacio[cas .. "p2"]
		end
	end
	return
end

function primera_decl(nominatiu, genitiu, data, declinacions, args, sing)
	declinacions.declinacio.title = "[[Viccionari:Primera declinació en llatí|1a declinació]] -a, -ae"
	local arrel = nominatiu:gsub("ae?$", "")
	if not nominatiu:find("ae$") then
		declinacions.declinacio.noms = nominatiu
		declinacions.declinacio.vocs = nominatiu
		declinacions.declinacio.acs = arrel .. "am"
		declinacions.declinacio.gens = genitiu
		declinacions.declinacio.dats = arrel .. "ae"
		declinacions.declinacio.abls = arrel .. "ā"
		if args.loc then declinacions.declinacio.locs = arrel .. "ae" end
	end
	if not sing then
		declinacions.declinacio.nomp = arrel .. "ae"
		declinacions.declinacio.vocp = arrel .. "ae"
		declinacions.declinacio.acp = arrel .. "ās"
		declinacions.declinacio.genp = arrel .. "ārum"
		declinacions.declinacio.datp = arrel .. "īs"
		declinacions.declinacio.ablp = arrel .. "īs"
		if args.loc then declinacions.declinacio.locp = arrel .. "īs" end
	end
end

function primera_decl_grega(nominatiu, genitiu, data, declinacions, args, sing)
	local noms_as = (mw.ustring.sub(nominatiu, -2) == "ās")
	if mw.ustring.sub(genitiu, -2) == "ēs" then
		declinacions.declinacio.title = "[[Viccionari:Primera declinació en llatí|1a declinació]] -ē, -ēs (grega)"
	elseif noms_as then
		declinacions.declinacio.title = "[[Viccionari:Primera declinació en llatí|1a declinació]] -ās, -ae (grega)"
	else
		declinacions.declinacio.title = "[[Viccionari:Primera declinació en llatí|1a declinació]] -ēs, -ae (grega)"
	end
	local arrel = mw.ustring.sub(genitiu, 1, -3)
	declinacions.declinacio.noms = nominatiu
	declinacions.declinacio.vocs = arrel .. (noms_as and "ā" or "ē")
	declinacions.declinacio.acs = arrel .. (noms_as and "ān" or "ēn")
	declinacions.declinacio.gens = genitiu
	declinacions.declinacio.dats = arrel .. "ae"
	declinacions.declinacio.abls = arrel .. (noms_as and "ā" or "ē")
	if args.loc then declinacions.declinacio.locs = arrel .. "ae" end
	if not sing then
		declinacions.declinacio.nomp = arrel .. "ae"
		declinacions.declinacio.vocp = arrel .. "ae"
		declinacions.declinacio.acp = arrel .. "ās"
		declinacions.declinacio.genp = arrel .. "ārum"
		declinacions.declinacio.datp = arrel .. "īs"
		declinacions.declinacio.ablp = arrel .. "īs"
		if args.loc then declinacions.declinacio.locp = arrel .. "īs" end
	end
end

function segona_decl_us(nominatiu, genitiu, data, declinacions, args, sing)
	declinacions.declinacio.title = "[[Viccionari:Segona declinació en llatí|2a declinació]] -us, -ī"
	local arrel = genitiu:gsub("ī$", ""):gsub("ōrum$", "")
	local ius = nominatiu:find("ius$")
	local grega = nominatiu:find("os$")
	local arrel_i = genitiu:gsub("iī$", "ī")
	if not genitiu:find("ōrum$") then
		declinacions.declinacio.noms = nominatiu
		declinacions.declinacio.vocs = ius and arrel_i or (arrel .. "e")
		if grega then
			declinacions.declinacio.acs = arrel .. "on"
			declinacions.declinacio.acs2 = arrel .. "um"
		else
			declinacions.declinacio.acs = arrel .. "um"
		end
		declinacions.declinacio.gens = genitiu
		if ius then
			declinacions.declinacio.gens2 = arrel_i
		end
		declinacions.declinacio.dats = arrel .. "ō"
		declinacions.declinacio.abls = arrel .. "ō"
		if args.loc then declinacions.declinacio.locs = arrel .. "ī" end
	end
	if not sing then
		declinacions.declinacio.nomp = arrel .. "ī"
		declinacions.declinacio.vocp = arrel .. "ī"
		declinacions.declinacio.acp = arrel .. "ōs"
		declinacions.declinacio.genp = arrel .. "ōrum"
		declinacions.declinacio.datp = arrel .. "īs"
		declinacions.declinacio.ablp = arrel .. "īs"
		if args.loc then declinacions.declinacio.locp = arrel .. "īs" end
	end
end

function segona_decl_er(nominatiu, genitiu, data, declinacions, args, sing)
	declinacions.declinacio.title = "[[Viccionari:Segona declinació en llatí|2a declinació]] (e)r-, -ī"
	local arrel = genitiu:gsub("ī$", ""):gsub("ōrum$", "")
	if not genitiu:find("ōrum$") then
		declinacions.declinacio.noms = nominatiu
		declinacions.declinacio.vocs = nominatiu
		declinacions.declinacio.acs = arrel .. "um"
		declinacions.declinacio.gens = genitiu
		declinacions.declinacio.dats = arrel .. "ō"
		declinacions.declinacio.abls = arrel .. "ō"
		if args.loc then declinacions.declinacio.locs = arrel .. "ī" end
	end
	if not sing then
		declinacions.declinacio.nomp = arrel .. "ī"
		declinacions.declinacio.vocp = arrel .. "ī"
		declinacions.declinacio.acp = arrel .. "ōs"
		declinacions.declinacio.genp = arrel .. "ōrum"
		declinacions.declinacio.datp = arrel .. "īs"
		declinacions.declinacio.ablp = arrel .. "īs"
		if args.loc then declinacions.declinacio.locp = arrel .. "īs" end
	end
end

function segona_decl_um(nominatiu, genitiu, data, declinacions, args, sing)
	declinacions.declinacio.title = "[[Viccionari:Segona declinació en llatí|2a declinació]] -um, -ī"
	local arrel = genitiu:gsub("ī$", ""):gsub("ōrum$", "")
	--local ium = nominatiu:find("ium$")
	local arrel_i = genitiu:gsub("iī$", "ī")
	if not genitiu:find("ōrum$") then
		declinacions.declinacio.noms = nominatiu
		declinacions.declinacio.vocs = nominatiu
		declinacions.declinacio.acs = nominatiu
		declinacions.declinacio.gens = genitiu
		--if ium then
		--	declinacions.declinacio.gens2 = arrel_i
		--end
		declinacions.declinacio.dats = arrel .. "ō"
		declinacions.declinacio.abls = arrel .. "ō"
		if args.loc then declinacions.declinacio.locs = arrel .. "ī" end
	end
	if not sing then
		declinacions.declinacio.nomp = arrel .. "a"
		declinacions.declinacio.vocp = arrel .. "a"
		declinacions.declinacio.acp = arrel .. "a"
		declinacions.declinacio.genp = arrel .. "ōrum"
		declinacions.declinacio.datp = arrel .. "īs"
		declinacions.declinacio.ablp = arrel .. "īs"
		if args.loc then declinacions.declinacio.locp = arrel .. "īs" end
	end
end

function tercera_decl_mf(nominatiu, genitiu, data, declinacions, args, tema, sing)
	declinacions.declinacio.title = "[[Viccionari:Tercera declinació en llatí|3a declinació]] -, -is (tema " .. (tema == "i" and "i" or "cons.") .. ")"
	local arrel = genitiu:gsub("[io]s$", ""):gsub("i?um$", "")
	if not genitiu:find("um$") then
		declinacions.declinacio.noms = nominatiu
		declinacions.declinacio.vocs = nominatiu
		declinacions.declinacio.acs = arrel .. "em"
		declinacions.declinacio.gens = genitiu
		declinacions.declinacio.dats = arrel .. "ī"
		declinacions.declinacio.abls = arrel .. "e"
		if args.loc then declinacions.declinacio.locs = arrel .. "e" end
	end
	if not sing then
		declinacions.declinacio.nomp = arrel .. "ēs"
		declinacions.declinacio.vocp = arrel .. "ēs"
		declinacions.declinacio.acp = arrel .. "ēs"
		declinacions.declinacio.genp = arrel .. (tema == "i" and "i" or "") .. "um"
		declinacions.declinacio.datp = arrel .. "ibus"
		declinacions.declinacio.ablp = arrel .. "ibus"
		if args.loc then declinacions.declinacio.locp = arrel .. "ibus" end
	end
end

function tercera_decl_n(nominatiu, genitiu, data, declinacions, args, tema, sing)
	declinacions.declinacio.title = "[[Viccionari:Tercera declinació en llatí|3a declinació]] -, -is (tema " .. (tema == "i" and "i" or "cons.") .. ")"
	local arrel = genitiu:gsub("is$", ""):gsub("i?um$", "")
	local arrel_i = arrel .. (tema == "i" and "i" or "")
	if not genitiu:find("um$") then
		declinacions.declinacio.noms = nominatiu
		declinacions.declinacio.vocs = nominatiu
		declinacions.declinacio.acs = nominatiu
		declinacions.declinacio.gens = genitiu
		declinacions.declinacio.dats = arrel .. "ī"
		declinacions.declinacio.abls = arrel .. (tema == "i" and "ī" or "e")
		if args.loc then declinacions.declinacio.locs = arrel .. "ī" end
	end
	if not sing then
		declinacions.declinacio.nomp = arrel_i .. "a"
		declinacions.declinacio.vocp = arrel_i .. "a"
		declinacions.declinacio.acp = arrel_i .. "a"
		declinacions.declinacio.genp = arrel_i .. "um"
		declinacions.declinacio.datp = arrel .. "ibus"
		declinacions.declinacio.ablp = arrel .. "ibus"
		if args.loc then declinacions.declinacio.locp = arrel .. "ibus" end
	end
end

function quarta_decl(nominatiu, genitiu, data, declinacions, args, sing)
	local neutre = nominatiu:find("ū$")
	declinacions.declinacio.title = "[[Viccionari:Quarta declinació en llatí|4a declinació]] -" .. (neutre and "ū" or "us") .. ", -ūs"
	local arrel = genitiu:gsub("ūs$", ""):gsub("uum$", "")
	if not nominatiu:find("ūs$") then
		declinacions.declinacio.noms = nominatiu
		declinacions.declinacio.vocs = nominatiu
		declinacions.declinacio.acs = neutre and nominatiu or arrel .. "um"
		declinacions.declinacio.gens = genitiu
		declinacions.declinacio.dats = neutre and nominatiu or arrel .. "uī"
		declinacions.declinacio.abls = arrel .. "ū"
		if args.loc then declinacions.declinacio.locs = arrel .. "ū" end
	end
	if not sing then
		declinacions.declinacio.nomp = arrel .. (neutre and "ua" or "ūs")
		declinacions.declinacio.vocp = arrel .. (neutre and "ua" or "ūs")
		declinacions.declinacio.acp = arrel .. (neutre and "ua" or "ūs")
		declinacions.declinacio.genp = arrel .. "uum"
		declinacions.declinacio.datp = arrel .. "ibus"
		declinacions.declinacio.ablp = arrel .. "ibus"
		if args.loc then declinacions.declinacio.locp = arrel .. "ibus" end
	end
end

function cinquena_decl(nominatiu, genitiu, data, declinacions, args, sing)
	declinacions.declinacio.title = "[[Viccionari:Cinquena declinació en llatí|5a declinació]] -es, -eī"
	local arrel = mw.ustring.gsub(genitiu, "[eē]ī$", "")
	declinacions.declinacio.noms = nominatiu
	declinacions.declinacio.vocs = nominatiu
	declinacions.declinacio.acs = arrel .. "em"
	declinacions.declinacio.gens = genitiu
	declinacions.declinacio.dats = genitiu
	declinacions.declinacio.abls = arrel .. "ē"
	if args.loc then declinacions.declinacio.locs = arrel .. "ē" end
	if not sing then
		declinacions.declinacio.nomp = arrel .. "ēs"
		declinacions.declinacio.vocp = arrel .. "ēs"
		declinacions.declinacio.acp = arrel .. "ēs"
		if nominatiu == "diēs" or nominatiu == "rēs" then
			declinacions.declinacio.genp = arrel .. "ērum"
			declinacions.declinacio.datp = arrel .. "ēbus"
			declinacions.declinacio.ablp = arrel .. "ēbus"
			if args.loc then declinacions.declinacio.locp = arrel .. "ēbus" end
		end
	end
end

local function make_link(declinacio, cas)
	local ret = '-'
	if declinacio[cas] ~= nil and declinacio[cas] ~= "" then
		ret = m_link.full_link({term = declinacio[cas], langcode = "la", sc = "Latn"}, nil, false)
		if declinacio[cas .. "2"] ~= nil and declinacio[cas .. "2"] ~= "" then
			ret = ret .. "<br />" .. m_link.full_link({term = declinacio[cas .. "2"], langcode = "la", sc = "Latn"}, nil, false)
		end
	end
	return ret
end

function make_decl(declinacio) -- Taula de declinació
	local ret = ""
	if declinacio.title then
		local hiha_loc = declinacio.locs or declinacio.locp
		ret = [=[ 
{| class="wikitable" style="margin-left: 0.5em; margin-top: -1.5em; float: right; font-size: 90%;"
|-
| colspan="3" style="background:#ccccff; text-align:center;" | ]=] .. declinacio.title .. [=[ 
|- style="background:#EEEEEE"
| ''Cas''
| style="text-align:center;" | ''Singular''
| style="text-align:center;" | ''Plural''
|-
| style="background:#EEEEEE" | ''Nominatiu''
| ]=] .. make_link(declinacio, "noms") .. [=[ 
| ]=] .. make_link(declinacio, "nomp") .. [=[ 
|-
| style="background:#EEEEEE" | ''Vocatiu''
| ]=] .. make_link(declinacio, "vocs") .. [=[ 
| ]=] .. make_link(declinacio, "vocp") .. [=[ 
|-
| style="background:#EEEEEE" | ''Acusatiu''
| ]=] .. make_link(declinacio, "acs") .. [=[ 
| ]=] .. make_link(declinacio, "acp") .. [=[ 
|-
| style="background:#EEEEEE" | ''Genitiu''
| ]=] .. make_link(declinacio, "gens") .. [=[ 
| ]=] .. make_link(declinacio, "genp") .. [=[ 
|-
| style="background:#EEEEEE" | ''Datiu''
| ]=] .. make_link(declinacio, "dats") .. [=[ 
| ]=] .. make_link(declinacio, "datp") .. [=[ 
|-
| style="background:#EEEEEE" | ''Ablatiu''
| ]=] .. make_link(declinacio, "abls") .. [=[ 
| ]=] .. make_link(declinacio, "ablp") .. [=[ 
]=] .. (hiha_loc and '|-' .. [=[ 
| style="background:#EEEEEE" | ''Locatiu''
| ]=] .. make_link(declinacio, "locs") .. [=[ 
| ]=] .. make_link(declinacio, "locp") or "") ..  [=[ 
|}]=]
	end
	return ret
end

-- Informació de verbs
pos_functions["Verbs"] = {func = function(args, data, declinacions)
	-- tipus d'enunciat: 5,4,3 formes p1-p2-i-pp-s amb p2,i opcionals; deponents sense supí
	-- formes en parells sense i amb diacrítics o úniques amb diacrítics
	local present1, present2, infinitiu, perfet, supi
	if args[10] then -- 5 formes (p1-p2-i-pp-s) amb diacrítics
		present1 = args[2]
		present2 = args[4]
		infinitiu = args[6]
		perfet = args[8]
		supi = args[10]
	elseif args[8] then -- 4 formes amb diacrítics
		if args[8]:find(" sum$") then -- deponent p1-p2-i-pp
			present1 = args[2]
			present2 = args[4]
			infinitiu = args[6]
			perfet = args[8]
		else -- normal p-i-pp-s
			present1 = args[2]
			infinitiu = args[4]
			perfet = args[6]
			supi = args[8]
		end
	elseif args[6] then -- 3 formes amb diacrítics
		if args[6]:find(" sum$") then -- deponent p1-i-pp
			present1 = args[2]
			infinitiu = args[4]
			perfet = args[6]
		else -- normal p1-pp-s
			present1 = args[2]
			perfet = args[4]
			supi = args[6]
		end
	elseif args[5] then -- p1-p2-i-pp-s
		present1 = args[1]
		present2 = args[2]
		infinitiu = args[3]
		perfet = args[4]
		supi = args[5]
	elseif args[4] then
		if args[4]:find(" sum$") then -- deponent p1-p2-i-pp
			present1 = args[1]
			present2 = args[2]
			infinitiu = args[3]
			perfet = args[4]
		else -- normal p-i-pp-s
			present1 = args[1]
			infinitiu = args[2]
			perfet = args[3]
			supi = args[4]
		end
	elseif args[3] then -- 3 formes
		if args[3]:find(" sum$") then -- deponent p1-i-pp
			present1 = args[1]
			infinitiu = args[2]
			perfet = args[3]
		else -- normal p1-pp-s
			present1 = args[1]
			perfet = args[2]
			supi = args[3]
		end
	else
		present1 = args[1]
		table.insert(data.categories, "Manteniment plantilla la-verb")
	end
	nota = args.nota; if nota == "" then nota = nil end
	if nota == nil and perfet ~= nil then
		if perfet:find(" sum$") then
			nota = "deponent"
		end
	end
	if present1 == "" or present1 == nil then present1 = pagename end
	if present2 == "" or present2 == "-" then present2 = nil end
	if infinitiu == "" or infinitiu == "-" then infinitiu = nil end
	if perfet == "" or perfet == "-" then perfet = nil end
	if supi == "" or supi == "-" then supi = nil end
	
	if pagename:find(" ") then
		table.insert(data.categories, "Locucions verbals en llatí")
	else
		table.insert(data.categories, "Verbs en llatí")
	end
	
	local nota_present = '<sup style="margin-left:0.3em; color:blue; cursor:help;" title="Com a enunciat verbal es tradueix per l\'infinitiu. Estrictament és la 1a persona singular del present d\'indicatiu actiu">?</sup>'
	if present2 then
		table.insert(declinacions.enunciat, {label = "1a present" .. nota_present, present1})
		table.insert(declinacions.enunciat, {label = "2a present", present2})
	else
		table.insert(declinacions.enunciat, {label = "present" .. nota_present, present1})
	end
	if infinitiu then
		table.insert(declinacions.enunciat, {label = "infinitiu", infinitiu})
	end
	if perfet then
		table.insert(declinacions.enunciat, {label = "perfet", perfet:gsub(" sum$", ""), alt = perfet})
	end
	if supi then
		table.insert(declinacions.enunciat, {label = "supí", supi})
	end
	if nota then
		table.insert(declinacions.infl_classes, nota)
	end
	
	-- Comprovació de flexions existents
	for _, form in pairs(declinacions.enunciat) do
		if not string.find(form[1], "[", 1, true) then
			local form_title = m_link.sense_diacritics("la", form[1])
			if not mw.title.new(form_title).exists then
				table.insert(data.categories, "Termes en llatí amb flexions a crear")
				break
			end
		end
	end
	
	return present1
end
}

-- Informació d'adjectius
pos_functions["Adjectius"] = {func = function(args, data, declinacions)
	-- tipus d'enunciat: 3, 2, 1 terminacions
	if args[3] then
		table.insert(declinacions.enunciat, {genders = {"m"}, args[1]})
		table.insert(declinacions.enunciat, {genders = {"f"}, args[2]})
		table.insert(declinacions.enunciat, {genders = {"n"}, args[3]})
	elseif args[2] then
		if args[2]:find("is$") then
			table.insert(data.genders, "m-f-n")
			table.insert(data.inflections, {label = "genitiu", args[2]})
		else
			table.insert(declinacions.enunciat, {genders = {"m", "f"}, args[1]})
			table.insert(declinacions.enunciat, {genders = {"n"}, args[2]})
		end
	else
		table.insert(data.genders, "?")
		table.insert(data.categories, "Manteniment plantilla la-adj")
	end
	
	if args.comp then
		table.insert(data.inflections, {label = "comparatiu", args.comp})
	end
	if args.sup then
		table.insert(data.inflections, {label = "superlatiu", args.sup})
	end
	
	if mw.ustring.find(pagename, "[^ ]+ [^ ]+") then
		table.insert(data.categories, "Locucions adjectivals en llatí")
		return nil
	else
		table.insert(data.categories, "Adjectius en llatí")
	end
	
	return args[1]
end
}

return export