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

local export = {}

local eclipsis_prefixes = {
	["b"] = "m",
	["c"] = "g",
	["d"] = "n",
	["f"] = "bh",
	["g"] = "n",
	["p"] = "b",
	["t"] = "d",
}

function export.mutations(word, tag)
	local ret = {normal = word, len = word, ecl = word, an = word, tpro = word, hpro = word}
	
	local word_l = mw.ustring.lower(word)
	
	if tag ~= "nolen" then
		if mw.ustring.find(word_l, "^[bcdfgmpt]") then
			ret.len = mw.ustring.gsub(word, "^(.)", "%1h")
		elseif mw.ustring.find(word_l, "^s[aeiouáéíóúlnr]") then
			ret.len = mw.ustring.gsub(word, "^(.)", "%1h")
			ret.an = "t" .. word
		end
	end
	
	if eclipsis_prefixes[mw.ustring.sub(word_l, 1, 1)] then
		ret.ecl = eclipsis_prefixes[mw.ustring.sub(word_l, 1, 1)] .. word
	end
	
	if mw.ustring.find(word, "^[aeiouáéíóú]") then
		ret.ecl  = "n-" .. word
		ret.hpro = "h" .. word
		
		-- Masculine singular nouns have different lenition after the article "an"
		if tag == "msn" then
			ret.tpro = "t-" .. word
		end
	elseif mw.ustring.find(word, "^[AEIOUÁÉÍÓÚ]") then
		ret.ecl  = "n" .. word
		ret.hpro = "h" .. word
		
		-- Masculine singular nouns have different lenition after the article "an"
		if tag == "msn" then
			ret.tpro = "t" .. word
		end
	end
	
	return ret
end

return export