Jump to content

Module:Latin

Permanently protected module
From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Rich Farmbrough (talk | contribs) at 22:18, 7 December 2014. The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
local p = {}

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

   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

--[[ 

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,"\037","%%25")
-- 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,"\093","%%5C") -- backslash
-- 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")

   rv = mw.ustring.gsub(rv,"\160","%%A0")
   rv = mw.ustring.gsub(rv,"\161","%%A1")
   rv = mw.ustring.gsub(rv,"\162","%%A2")
   rv = mw.ustring.gsub(rv,"\163","%%A3")
   rv = mw.ustring.gsub(rv,"\164","%%A4")
   rv = mw.ustring.gsub(rv,"\165","%%A5")
   rv = mw.ustring.gsub(rv,"\166","%%A6")
   rv = mw.ustring.gsub(rv,"\167","%%A7")
   rv = mw.ustring.gsub(rv,"\168","%%A8")
   rv = mw.ustring.gsub(rv,"\169","%%A9")
   rv = mw.ustring.gsub(rv,"\170","%%AA")
   rv = mw.ustring.gsub(rv,"\171","%%AB")
   rv = mw.ustring.gsub(rv,"\172","%%AC")
   rv = mw.ustring.gsub(rv,"\173","%%AD")
   rv = mw.ustring.gsub(rv,"\174","%%AE")
   rv = mw.ustring.gsub(rv,"\175","%%AF")
   rv = mw.ustring.gsub(rv,"\176","%%B0")
   rv = mw.ustring.gsub(rv,"\177","%%B1")
   rv = mw.ustring.gsub(rv,"\178","%%B2")
   rv = mw.ustring.gsub(rv,"\179","%%B3")
   rv = mw.ustring.gsub(rv,"\180","%%B4")
   rv = mw.ustring.gsub(rv,"\181","%%B5")
   rv = mw.ustring.gsub(rv,"\182","%%B6")
   rv = mw.ustring.gsub(rv,"\183","%%B7")
   rv = mw.ustring.gsub(rv,"\184","%%B8")
   rv = mw.ustring.gsub(rv,"\185","%%B9")
   rv = mw.ustring.gsub(rv,"\186","%%BA")
   rv = mw.ustring.gsub(rv,"\187","%%BB")
   rv = mw.ustring.gsub(rv,"\188","%%BC")
   rv = mw.ustring.gsub(rv,"\189","%%BD")
   rv = mw.ustring.gsub(rv,"\190","%%BE")
   rv = mw.ustring.gsub(rv,"\191","%%BF")
   rv = mw.ustring.gsub(rv,"\192","%%C0")
   rv = mw.ustring.gsub(rv,"\193","%%C1")
   rv = mw.ustring.gsub(rv,"\194","%%C2")
   rv = mw.ustring.gsub(rv,"\195","%%C3")
   rv = mw.ustring.gsub(rv,"\196","%%C4")
   rv = mw.ustring.gsub(rv,"\197","%%C5")
   rv = mw.ustring.gsub(rv,"\198","%%C6")
   rv = mw.ustring.gsub(rv,"\199","%%C7")
   rv = mw.ustring.gsub(rv,"\200","%%C8")
   rv = mw.ustring.gsub(rv,"\201","%%C9")
   rv = mw.ustring.gsub(rv,"\202","%%CA")
   rv = mw.ustring.gsub(rv,"\203","%%CB")
   rv = mw.ustring.gsub(rv,"\204","%%CC")
   rv = mw.ustring.gsub(rv,"\205","%%CD")
   rv = mw.ustring.gsub(rv,"\206","%%CE")
   rv = mw.ustring.gsub(rv,"\207","%%CF")
   rv = mw.ustring.gsub(rv,"\208","%%D0")
   rv = mw.ustring.gsub(rv,"\209","%%D1")
   rv = mw.ustring.gsub(rv,"\210","%%D2")
   rv = mw.ustring.gsub(rv,"\211","%%D3")
   rv = mw.ustring.gsub(rv,"\212","%%D4")
   rv = mw.ustring.gsub(rv,"\213","%%D5")
   rv = mw.ustring.gsub(rv,"\214","%%D6")
   rv = mw.ustring.gsub(rv,"\215","%%D7")
   rv = mw.ustring.gsub(rv,"\216","%%D8")
   rv = mw.ustring.gsub(rv,"\217","%%D9")
   rv = mw.ustring.gsub(rv,"\218","%%DA")
   rv = mw.ustring.gsub(rv,"\219","%%DB")
   rv = mw.ustring.gsub(rv,"\220","%%DC")
   rv = mw.ustring.gsub(rv,"\221","%%DD")
   rv = mw.ustring.gsub(rv,"\222","%%DE")
   rv = mw.ustring.gsub(rv,"\223","%%DF")
   rv = mw.ustring.gsub(rv,"\224","%%E0")
   rv = mw.ustring.gsub(rv,"\225","%%E1")
   rv = mw.ustring.gsub(rv,"\226","%%E2")
   rv = mw.ustring.gsub(rv,"\227","%%E3")
   rv = mw.ustring.gsub(rv,"\228","%%E4")
   rv = mw.ustring.gsub(rv,"\229","%%E5")
   rv = mw.ustring.gsub(rv,"\230","%%E6")
   rv = mw.ustring.gsub(rv,"\231","%%E7")
   rv = mw.ustring.gsub(rv,"\232","%%E8")
   rv = mw.ustring.gsub(rv,"\233","%%E9")
   rv = mw.ustring.gsub(rv,"\234","%%EA")
   rv = mw.ustring.gsub(rv,"\235","%%EB")
   rv = mw.ustring.gsub(rv,"\236","%%EC")
   rv = mw.ustring.gsub(rv,"\237","%%ED")
   rv = mw.ustring.gsub(rv,"\238","%%EE")
   rv = mw.ustring.gsub(rv,"\239","%%EF")
   rv = mw.ustring.gsub(rv,"\240","%%F0")
   rv = mw.ustring.gsub(rv,"\241","%%F1")
   rv = mw.ustring.gsub(rv,"\242","%%F2")
   rv = mw.ustring.gsub(rv,"\243","%%F3")
   rv = mw.ustring.gsub(rv,"\244","%%F4")
   rv = mw.ustring.gsub(rv,"\245","%%F5")
   rv = mw.ustring.gsub(rv,"\246","%%F6")
   rv = mw.ustring.gsub(rv,"\247","%%F7")
   rv = mw.ustring.gsub(rv,"\248","%%F8")
   rv = mw.ustring.gsub(rv,"\249","%%F9")
   rv = mw.ustring.gsub(rv,"\250","%%FA")
   rv = mw.ustring.gsub(rv,"\251","%%FB")
   rv = mw.ustring.gsub(rv,"\252","%%FC")
   rv = mw.ustring.gsub(rv,"\253","%%FD")
   rv = mw.ustring.gsub(rv,"\254","%%FE")
   rv = mw.ustring.gsub(rv,"\255","%%FF")

   return rv
end

return p