Module:bac à sable/Andreyyshore/ro-réfl

La documentation pour ce module peut être créée à Module:bac à sable/Andreyyshore/ro-réfl/Documentation

local p = {}

local table_acc = {
	["m"] = { " mă", "mă", "m-" },
	["t"] = { " te", "te", "te-" },
	["s"] = { " se", "se", "s-" },
	["l"] = { "-l", "îl", "l-" },
	["o"] = { " o", "o", "-o" },
	["n"] = { " ne", "ne", "ne-" },
	["v"] = { " vă", "vă", "v-" },
	["i"] = { "-i", "îi", "i-" },
	["e"] = { " le", "le", "le-" }
}
local table_dat = {
	["m"] = { "-mi", "îmi", "mi-", "mi", "mi" },
	["ț"] = { "-ți", "îți", "ți-", "ți", "ți" },
	["ș"] = { "-și", "își", "și-", "și", "și" },
	["i"] = { "-i", "îi", "i-", "i", "i" },
	["n"] = { " ne", "ne", "ne-", "ni", "ne" },
	["v"] = { " vă", "vă", "v-", "vi", "v" },
	["l"] = { " le", "le", "le-", "li", "le" }
}

function p.pronoms(a, verb, acc, dat, contr)
	if contr == "" then contr = 2
	elseif (contr:sub(1, 1) == "-") or (contr:sub(1, 1) == "<") then contr = 1
	else contr = 3
	end
	if acc ~= "" then
		if (acc == "mă") or (acc == "m-") or (acc == "-mă") or (acc == "m") then acc = "m"
		elseif (acc == "te") or (acc == "te-") or (acc == "-te") or (acc == "t") then acc = "t"
		elseif (acc == "se") or (acc == "s-") or (acc == "-se") or (acc == "s") or (acc == "-") then acc = "s"
		elseif (acc == "îl") or (acc == "l-") or (acc == "-l") or (acc == "l") then acc = "l"
		elseif (acc == "o") or (acc == "-o") then acc = "o"
		elseif (acc == "ne") or (acc == "ne-") or (acc == "-ne") or (acc == "n") then acc = "n"
		elseif (acc == "vă") or (acc == "v-") or (acc == "-vă") or (acc == "v") then acc = "v"
		elseif (acc == "îi") or (acc == "i-") or (acc == "-i") or (acc == "i") then acc = "i"
		elseif (acc == "le") or (acc == "le-") or (acc == "-le") or (acc == "e") then acc = "e"
		else acc = "" end
	end
	if dat ~= "" then
		if (dat == "îmi") or (dat == "mi") or (dat == "-mi") or (dat == "m") then dat = "m"
		elseif (dat == "îți") or (dat == "ți") or (dat == "-ți") or (dat == "ț") then dat = "ț"
		elseif (dat == "își") or (dat == "și") or (dat == "-și") or (dat == "ș") then dat = "ș"
		elseif (dat == "îi") or (dat == "i") or (dat == "-i") then dat = "i"
		elseif (dat == "ne") or (dat == "ni") or (dat == "n") then dat = "n"
		elseif (dat == "vă") or (dat == "vi") or (dat == "v") then dat = "v"
		elseif (dat == "le") or (dat == "li") or (dat == "l") then dat = "l"
		else dat = "" end
	end
	if (acc == "") and (dat == "") then return ((a ~= "") and (a .. " ") or "") .. verb
	elseif verb == "" then
		if dat == "" then return a .. table_acc[acc][contr]
		elseif acc == "" then return a .. table_dat[dat][contr]
		else
			if contr == 1 then
				if acc == "o" then return a .. " " .. table_dat[dat][5] .. table_acc[acc][3]
				else return a .. " " .. table_dat[dat][4] .. table_acc[acc][1] end
			elseif contr == 2 then
				if acc == "o" then return ((a ~= "") and (a .. " ") or "") .. table_dat[dat][5] .. table_acc[acc][3]
				else return ((a ~= "") and (a .. " ") or "") .. table_dat[dat][4] .. table_acc[acc][1] end
			else
				if acc == "o" then return ((a ~= "") and (a .. " ") or "") .. table_dat[dat][3] .. "..." .. table_acc["o"][3]
				else return ((a ~= "") and (a .. " ") or "") .. table_dat[dat][4] .. " " .. table_acc[acc][3] end
			end
		end
		return a .. ""
	elseif dat == "" then
		if contr == 3 then
			if acc == "o" then return ((a ~= "") and (a .. " ") or "") .. verb .. table_acc["o"][3]
			else return ((a ~= "") and (a .. " ") or "") .. table_acc[acc][3] .. verb end
		else return a .. table_acc[acc][contr] .. " " .. verb end
	elseif acc == "" then
		if contr == 3 then return ((a ~= "") and (a .. " ") or "") .. table_dat[dat][contr] .. verb
		else return a .. table_dat[dat][contr] .. " " .. verb end
	end
	if contr == 1 then
		if acc == "o" then return a .. " " .. table_dat[dat][5] .. table_acc[acc][3] .. " " .. verb
		else return a .. " " .. table_dat[dat][4] .. table_acc[acc][1] .. " " .. verb end
	elseif contr == 2 then
		if acc == "o" then return ((a ~= "") and (a .. " ") or "") ..  table_dat[dat][5] .. table_acc[acc][3] .. " " .. verb
		else return ((a ~= "") and (a .. " ") or "") .. table_dat[dat][4] .. table_acc[acc][1] .. " " .. verb end
	end
	if acc == "o" then return ((a ~= "") and (a .. " ") or "") .. table_dat[dat][3] .. verb .. table_acc["o"][3] end
	return ((a ~= "") and (a .. " ") or "") .. table_dat[dat][4] .. " " .. table_acc[acc][3] .. verb
end

function p.main(frame)
	local args = frame:getParent().args
	local a = args[1] or args["a"] or ""
	local verb = args[2] or args["verb"] or ""
	local acc = args[3] or args["acc"] or ""
	local dat = args[4] or args["dat"] or ""
	local contr = args[5] or args["contr"] or ""
	return p.pronoms(a, verb, acc, dat, contr)
end

return p