Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Documentation for this module may be created at Module:Domwiki/doc

local p = {}

local replacements = {
	["'"] = "",
	["’"] = "",
	["`"] = "",
	[" "] = "-",
	[","] = "",
	["%."] = "",
	[":"] = "",
	[";"] = "",
	["!"] = "",
	["%?"] = "",
	["&"] = "and",

	["é"] = "e",
	["è"] = "e",
	["ê"] = "e",
	["ë"] = "e",
	["á"] = "a",
	["à"] = "a",
	["â"] = "a",
	["ä"] = "a",
	["å"] = "a",
	["í"] = "i",
	["ì"] = "i",
	["î"] = "i",
	["ï"] = "i",
	["ó"] = "o",
	["ò"] = "o",
	["ô"] = "o",
	["ö"] = "o",
	["ú"] = "u",
	["ù"] = "u",
	["û"] = "u",
	["ü"] = "u",
	["ý"] = "y",
	["ÿ"] = "y",
	["ç"] = "c",
	["ñ"] = "n",
	["ø"] = "o",
	["æ"] = "ae",
	["œ"] = "oe",
	["ð"] = "d",
	["þ"] = "th",
	["å"] = "a",
}

local function slugify(s)
	s = mw.ustring.lower(s or "")

	for from, to in pairs(replacements) do
		s = mw.ustring.gsub(s, from, to)
	end

	s = mw.ustring.gsub(s, "[^a-z0-9%-]", "")
	s = mw.ustring.gsub(s, "%-+", "-")
	s = mw.ustring.gsub(s, "^%-", "")
	s = mw.ustring.gsub(s, "%-$", "")

	return s
end

function p.slug(frame)
	return slugify(frame.args[1] or "")
end

function p.nationFlagName(frame)
	local era = mw.ustring.lower(frame.args.era or "")
	local name = slugify(frame.args.name or "")
	return era .. "-" .. name .. ".png"
end

return p