Edge Rewrite
// HTMLRewriter · presentation

This page was redesigned at the edge.

Cloudflare fetched the original article and streamed it through HTMLRewriter to apply an entirely new visual system without rebuilding the source page.

Jump to content

Module:Latin

Permanently protected module
From Wikipedia, the free encyclopedia
local p = {}

function p._removeaccents(rv)
	rv = mw.ustring.gsub(rv,"[ÁÀÂÄǍĂĀÃÅĄ]","A")
	rv = mw.ustring.gsub(rv,"[ÆǢǼ]","Ae")
	rv = mw.ustring.gsub(rv,"[ĆĊĈČÇ]","C")
	rv = mw.ustring.gsub(rv,"[ĎĐḌÐḐ]","D")
	rv = mw.ustring.gsub(rv,"[ÉÈĖÊËĚĔĒẼĘẸƐƎƏỀỂỄẾỆ]","E")
	rv = mw.ustring.gsub(rv,"[ĠĜĞĢ]","G")
	rv = mw.ustring.gsub(rv,"[ĤĦḤ]","H")
	rv = mw.ustring.gsub(rv,"[İÍÌÎÏǏĬĪĨĮỊ]","I")
	rv = mw.ustring.gsub(rv,"[Ĵ]","J")
	rv = mw.ustring.gsub(rv,"[Ķ]","K")
	rv = mw.ustring.gsub(rv,"[ĹĿĽĻŁḶḸ]","L")
	rv = mw.ustring.gsub(rv,"[Ṃ]","M")
	rv = mw.ustring.gsub(rv,"[ŃŇÑŅṆŊ]","N")
	rv = mw.ustring.gsub(rv,"[ÓÒÔÖǑŎŌÕǪỌŐØƆ]","O")
	rv = mw.ustring.gsub(rv,"[Œ]","Oe")
	rv = mw.ustring.gsub(rv,"[ŔŘŖṚṜꝚⱤɌƦȐȒṘ]","R")
	rv = mw.ustring.gsub(rv,"[ŚŜŠŞȘṢ]","S")
	rv = mw.ustring.gsub(rv,"[ŤŢȚṬ]","T")
	rv = mw.ustring.gsub(rv,"[Þ]","Th")
	rv = mw.ustring.gsub(rv,"[ÚÙÛÜǓŬŪŨŮŲỤŰǗǛǙǕ]","U")
	rv = mw.ustring.gsub(rv,"[Ŵ]","W")
	rv = mw.ustring.gsub(rv,"[ÝŶŸỸȲ]","Y")
	rv = mw.ustring.gsub(rv,"[ŹŻŽ]","Z")
	rv = mw.ustring.gsub(rv,"[áàâäǎăāãåąắăằắẳẵặâầẩẫấậả]","a")
	rv = mw.ustring.gsub(rv,"[æǣǽ]","ae")
	rv = mw.ustring.gsub(rv,"[ćċĉčç]","c")
	rv = mw.ustring.gsub(rv,"[ďđḍðḑ]","d")
	rv = mw.ustring.gsub(rv,"[éèėêëěĕēẽęẹɛǝəềểễếệ]","e")
	rv = mw.ustring.gsub(rv,"[ġĝğģ]","g")
	rv = mw.ustring.gsub(rv,"[ĥħḥḩ]","h")
	rv = mw.ustring.gsub(rv,"[ıíìîïǐĭīĩįị]","i")
	rv = mw.ustring.gsub(rv,"[ĵ]","j")
	rv = mw.ustring.gsub(rv,"[ķ]","k")
	rv = mw.ustring.gsub(rv,"[ĺŀľļłḷḹ]","l")
	rv = mw.ustring.gsub(rv,"[ṃ]","m")
	rv = mw.ustring.gsub(rv,"[ńňñņṇŋ]","n")
	rv = mw.ustring.gsub(rv,"[óòôöǒŏōõǫọőøɔơồ]","o")
	rv = mw.ustring.gsub(rv,"[œ]","oe")
	rv = mw.ustring.gsub(rv,"[ŕřŗṛṝꝛɽɍʀȑȓṙ]","r")
	rv = mw.ustring.gsub(rv,"[śŝšşșṣ]","s")
	rv = mw.ustring.gsub(rv,"[ß]","ss")
	rv = mw.ustring.gsub(rv,"[ťţțṭ]","t")
	rv = mw.ustring.gsub(rv,"[þ]","th")
	rv = mw.ustring.gsub(rv,"[úùûüǔŭūũůųụűǘǜǚǖưứừ]","u")
	rv = mw.ustring.gsub(rv,"[ŵ]","w")
	rv = mw.ustring.gsub(rv,"[ýŷÿỹȳ]","y")
	rv = mw.ustring.gsub(rv,"[źżž]","z")
	return rv
end

function p.removeaccents(frame)
	local rv = mw.ustring.toNFC (frame.args[1])
	--   if (true) then return mw.ustring.isutf8 (rv) end
	return p._removeaccents(rv)
end

--[[

The next function returns a % encoding concomitant with ISO/IEC 8859-1. It encodes % and any non-reserved and non-unreserved
characters.

Space is currently encoded as an underscore.

Reserved characters are currently not encoded.

]]

function p.urlencodeISO88591(frame)
	local rv = mw.ustring.toNFC (frame.args[1])
	
	-- % first to avoid double encoding
	rv = mw.ustring.gsub(rv,"%%","%%%%")
	
	-- space to underscore, then punctuation which is not reserved
	rv = mw.ustring.gsub(rv," ","_")
	rv = mw.ustring.gsub(rv,"\034;","%%22") -- quote mark
	rv = mw.ustring.gsub(rv,"<","%%3C")
	rv = mw.ustring.gsub(rv,">","%%3E")
	rv = mw.ustring.gsub(rv,"\\","%%5C") -- backslash does not work with "\092", "%\" or "\"
	rv = mw.ustring.gsub(rv,"%^","%%5E")
	rv = mw.ustring.gsub(rv,"`","%%60")
	rv = mw.ustring.gsub(rv,"{","%%7B")
	rv = mw.ustring.gsub(rv,"|","%%7C")
	rv = mw.ustring.gsub(rv,"}","%%7D")
	
	-- all the rest of the codepoints that are printable
	rv = mw.ustring.gsub(rv,"\194\160","%%A0")
	rv = mw.ustring.gsub(rv,"\194\161","%%A1")
	rv = mw.ustring.gsub(rv,"\194\162","%%A2")
	rv = mw.ustring.gsub(rv,"\194\163","%%A3")
	rv = mw.ustring.gsub(rv,"\194\164","%%A4")
	rv = mw.ustring.gsub(rv,"\194\165","%%A5")
	rv = mw.ustring.gsub(rv,"\194\166","%%A6")
	rv = mw.ustring.gsub(rv,"\194\167","%%A7")
	rv = mw.ustring.gsub(rv,"\194\168","%%A8")
	rv = mw.ustring.gsub(rv,"\194\169","%%A9")
	rv = mw.ustring.gsub(rv,"\194\170","%%AA")
	rv = mw.ustring.gsub(rv,"\194\171","%%AB")
	rv = mw.ustring.gsub(rv,"\194\172","%%AC")
	rv = mw.ustring.gsub(rv,"\194\173","%%AD")
	rv = mw.ustring.gsub(rv,"\194\174","%%AE")
	rv = mw.ustring.gsub(rv,"\194\175","%%AF")
	rv = mw.ustring.gsub(rv,"\194\176","%%B0")
	rv = mw.ustring.gsub(rv,"\194\177","%%B1")
	rv = mw.ustring.gsub(rv,"\194\178","%%B2")
	rv = mw.ustring.gsub(rv,"\194\179","%%B3")
	rv = mw.ustring.gsub(rv,"\194\180","%%B4")
	rv = mw.ustring.gsub(rv,"\194\181","%%B5")
	rv = mw.ustring.gsub(rv,"\194\182","%%B6")
	rv = mw.ustring.gsub(rv,"\194\183","%%B7")
	rv = mw.ustring.gsub(rv,"\194\184","%%B8")
	rv = mw.ustring.gsub(rv,"\194\185","%%B9")
	rv = mw.ustring.gsub(rv,"\194\186","%%BA")
	rv = mw.ustring.gsub(rv,"\194\187","%%BB")
	rv = mw.ustring.gsub(rv,"\194\188","%%BC")
	rv = mw.ustring.gsub(rv,"\194\189","%%BD")
	rv = mw.ustring.gsub(rv,"\194\190","%%BE")
	rv = mw.ustring.gsub(rv,"\194\191","%%BF")
	rv = mw.ustring.gsub(rv,"\195\128","%%C0")
	rv = mw.ustring.gsub(rv,"\195\129","%%C1")
	rv = mw.ustring.gsub(rv,"\195\130","%%C2")
	rv = mw.ustring.gsub(rv,"\195\131","%%C3")
	rv = mw.ustring.gsub(rv,"\195\132","%%C4")
	rv = mw.ustring.gsub(rv,"\195\133","%%C5")
	rv = mw.ustring.gsub(rv,"\195\134","%%C6")
	rv = mw.ustring.gsub(rv,"\195\135","%%C7")
	rv = mw.ustring.gsub(rv,"\195\136","%%C8")
	rv = mw.ustring.gsub(rv,"\195\137","%%C9")
	rv = mw.ustring.gsub(rv,"\195\138","%%CA")
	rv = mw.ustring.gsub(rv,"\195\139","%%CB")
	rv = mw.ustring.gsub(rv,"\195\140","%%CC")
	rv = mw.ustring.gsub(rv,"\195\141","%%CD")
	rv = mw.ustring.gsub(rv,"\195\142","%%CE")
	rv = mw.ustring.gsub(rv,"\195\143","%%CF")
	rv = mw.ustring.gsub(rv,"\195\144","%%D0")
	rv = mw.ustring.gsub(rv,"\195\145","%%D1")
	rv = mw.ustring.gsub(rv,"\195\146","%%D2")
	rv = mw.ustring.gsub(rv,"\195\147","%%D3")
	rv = mw.ustring.gsub(rv,"\195\148","%%D4")
	rv = mw.ustring.gsub(rv,"\195\149","%%D5")
	rv = mw.ustring.gsub(rv,"\195\150","%%D6")
	rv = mw.ustring.gsub(rv,"\195\151","%%D7")
	rv = mw.ustring.gsub(rv,"\195\152","%%D8")
	rv = mw.ustring.gsub(rv,"\195\153","%%D9")
	rv = mw.ustring.gsub(rv,"\195\154","%%DA")
	rv = mw.ustring.gsub(rv,"\195\155","%%DB")
	rv = mw.ustring.gsub(rv,"\195\156","%%DC")
	rv = mw.ustring.gsub(rv,"\195\157","%%DD")
	rv = mw.ustring.gsub(rv,"\195\158","%%DE")
	rv = mw.ustring.gsub(rv,"\195\159","%%DF")
	rv = mw.ustring.gsub(rv,"\195\160","%%E0")
	rv = mw.ustring.gsub(rv,"\195\161","%%E1")
	rv = mw.ustring.gsub(rv,"\195\162","%%E2")
	rv = mw.ustring.gsub(rv,"\195\163","%%E3")
	rv = mw.ustring.gsub(rv,"\195\164","%%E4")
	rv = mw.ustring.gsub(rv,"\195\165","%%E5")
	rv = mw.ustring.gsub(rv,"\195\166","%%E6")
	rv = mw.ustring.gsub(rv,"\195\167","%%E7")
	rv = mw.ustring.gsub(rv,"\195\168","%%E8")
	rv = mw.ustring.gsub(rv,"\195\169","%%E9")
	rv = mw.ustring.gsub(rv,"\195\170","%%EA")
	rv = mw.ustring.gsub(rv,"\195\171","%%EB")
	rv = mw.ustring.gsub(rv,"\195\172","%%EC")
	rv = mw.ustring.gsub(rv,"\195\173","%%ED")
	rv = mw.ustring.gsub(rv,"\195\174","%%EE")
	rv = mw.ustring.gsub(rv,"\195\175","%%EF")
	rv = mw.ustring.gsub(rv,"\195\176","%%F0")
	rv = mw.ustring.gsub(rv,"\195\177","%%F1")
	rv = mw.ustring.gsub(rv,"\195\178","%%F2")
	rv = mw.ustring.gsub(rv,"\195\179","%%F3")
	rv = mw.ustring.gsub(rv,"\195\180","%%F4")
	rv = mw.ustring.gsub(rv,"\195\181","%%F5")
	rv = mw.ustring.gsub(rv,"\195\182","%%F6")
	rv = mw.ustring.gsub(rv,"\195\183","%%F7")
	rv = mw.ustring.gsub(rv,"\195\184","%%F8")
	rv = mw.ustring.gsub(rv,"\195\185","%%F9")
	rv = mw.ustring.gsub(rv,"\195\186","%%FA")
	rv = mw.ustring.gsub(rv,"\195\187","%%FB")
	rv = mw.ustring.gsub(rv,"\195\188","%%FC")
	rv = mw.ustring.gsub(rv,"\195\189","%%FD")
	rv = mw.ustring.gsub(rv,"\195\190","%%FE")
	rv = mw.ustring.gsub(rv,"\195\191","%%FF")
	return rv
end

return p