Vés al contingut

Mòdul:ca-verb/omplir

De Viccionari

La documentació d'ús d'aquest mòdul es pot crear a Mòdul:ca-verb/omplir/ús

-- Formes irregulars del verb omplir i derivats (des-, re-).
local p = {}

local function llista_zones(llista, zona)
	local zones = {}
	for k, v in pairs(llista) do
		if zona[v == "or" and "ori" or v == "n-occ" and "nocc" or v] then
			table.insert(zones, v)
		end
	end
	return #zones > 3 and "" or table.concat(zones, ", ")
end

function p.make_irregulars(forma, zona)
	local radical = forma.inf:gsub("ir$", "")
	local radical_no_r = radical:gsub("r$", "")
	local radical_accent = radical:gsub("o", "ò")
	local radical_u = radical:gsub("o", "u")

	forma.part[1]["m-s"] = radical_no_r .. "ert"
	forma.part[1]["f-s"] = radical_no_r .. "erta"
	forma.part[1]["m-p"] = radical_no_r .. "erts"
	forma.part[1]["f-p"] = radical_no_r .. "ertes"
	
	forma.part[2] = {}
	forma.part[2]["m-s"] = radical .. "it"
	forma.part[2]["f-s"] = radical .. "ida"
	forma.part[2]["m-p"] = radical .. "its"
	forma.part[2]["f-p"] = radical .. "ides"
	
	forma["pres-ind"][1][2] = radical .. "es"
	forma["pres-ind"][1][3] = radical .. "e"
	
	fila = 2
	if zona.sept then
		forma["pres-ind"][fila] = {}
		forma["pres-ind"][fila][1] = radical .. "i"
		forma["pres-ind"][fila]["nota"] = "sept"
		fila = fila + 1
	end
	
	if zona.val then
		forma["pres-ind"][fila] = {}
		forma["pres-ind"][fila][1] = radical_accent .. "ic"
		forma["pres-ind"][fila][2] = radical .. "is"
		forma["pres-ind"][fila][3] = radical .. "i"
		forma["pres-ind"][fila][6] = radical .. "in"
		forma["pres-ind"][fila]["nota"] = "val"
		fila = fila + 1
	end
	
	if zona.bal or zona.alg then
		forma["pres-ind"][fila] = {}
		forma["pres-ind"][fila][1] = radical_u
		forma["pres-ind"][fila]["nota"] = llista_zones({"bal", "alg"}, zona)
		fila = fila + 1
	end
	
	if zona.bal then
		forma["pres-ind"][fila] = {}
		forma["pres-ind"][fila][2] = radical_u .. "s"
		forma["pres-ind"][fila][3] = radical_u
		forma["pres-ind"][fila][6] = radical_u .. "en"
		forma["pres-ind"][fila]["nota"] = "bal"
	end
	
	fila = 2
	forma["pres-subj"][2] = nil
	forma["pres-subj"][3] = nil
	if zona.bal or zona.alg then
		forma["pres-subj"][fila] = {}
		forma["pres-subj"][fila][1] = radical_u .. "i"
		forma["pres-subj"][fila][2] = radical_u .. "is"
		forma["pres-subj"][fila][3] = radical_u .. "i"
		forma["pres-subj"][fila][6] = radical_u .. "in"
		forma["pres-subj"][fila]["nota"] = llista_zones({"bal", "alg"}, zona)
		fila = fila + 1
	end
	if zona.val then
		forma["pres-subj"][fila] = {}
		forma["pres-subj"][fila][1] = radical_accent .. "iga"
		forma["pres-subj"][fila][2] = radical_accent .. "igues"
		forma["pres-subj"][fila][3] = radical_accent .. "iga"
		forma["pres-subj"][fila][6] = radical_accent .. "iguen"
		forma["pres-subj"][fila]["nota"] = "val"
		fila = fila + 1
	end
	if zona.bal or zona.val then
		forma["pres-subj"][fila] = {}
		forma["pres-subj"][fila][4] = radical .. "iguem"
		forma["pres-subj"][fila][5] = radical .. "igueu"
		forma["pres-subj"][fila]["nota"] = llista_zones({"bal", "val"}, zona)
	end
	
	forma["imp"][1][2] = radical .. "e"
	forma["imp"][2] = nil
	forma["imp"][3] = nil
	fila = 2
	if zona.val or zona.bal then
		forma["imp"][fila] = {}
		forma["imp"][fila][4] = radical .. "iguem"
		if zona.val then
			forma["imp"][fila][2] = radical .. "i"
			forma["imp"][fila][3] = radical_accent .. "iga"
			forma["imp"][fila][6] = radical_accent .. "iguen"
			forma["imp"][fila]["nota"] = "val"
			fila = fila + 1
		end
		if zona.bal then
			if fila == 3 then
				forma["imp"][fila] = {}
			end
			forma["imp"][fila][2] = radical_u
			forma["imp"][fila][3] = radical_u .. "i"
			forma["imp"][fila][6] = radical_u .. "in"
			forma["imp"][fila]["nota"] = "bal"
		end
	end
	
	if zona.alg then
		forma["no-pres-ind"] = {}
		forma["no-pres-ind"][1] = {}
		forma["no-pres-ind"][1][2] = radical_u .. "is"
		forma["no-pres-ind"][1][3] = radical_u .. "i"
		forma["no-pres-ind"][1][6] = radical_u .. "in"
		forma["no-pres-ind"][1]["nota"] = "alg"
	end
		
	return forma
end

return p