Module:N34: Difference between revisions
(Special:MyPage/Preload Summaries/Page) |
m (1 revision imported) |
Latest revision as of 10:08, 17 March 2025
Documentation for this module may be created at Module:N34/doc
local n34 = {} local gsub, char, byte, format = string.gsub, string.char, string.byte, string.format local entityMap = {["lt"]="<",["gt"]=">",["amp"]="&",["quot"]='"',["apos"]="'"} local entitySwap = function(orig,n,s) return (n=='' and entityMap[s]) or (n=="#" and tonumber(s)) and char(s) or (n=="#x" and tonumber(s,16)) and char(tonumber(s,16)) or orig end function n34.encode ( frame ) local args = frame.args; local str = args[1]; str = gsub (str, "\n", "\r\n") str = gsub (str, "([^%w ])", function (c) return format ("%%%02X", byte(c)) end) str = gsub (str, " ", "+") return str end function n34.decode( frame ) local args = frame.args; local str = args[1]; str = gsub (str, "+", " ") str = gsub (str, "%%(%x%x)", function(h) return char(tonumber(h,16)) end) str = gsub (str, "\r\n", "\n") return str end function n34.hextoden( frame ) local args = frame.args; local str = args[1]; str = tostring(tonumber(str, 16)) return str end function n34.unescapehtml( frame ) local args = frame.args; local str = args[1]; return (gsub( str, '(&(#?x?)([%d%a]+);)', entitySwap )) end function n34.escapehtml( frame ) local args = frame.args; local str = args[1]; str = gsub (str, "\n", "\r\n") str = gsub (str, "([^%w ])", function (c) return format ("&#%u;", byte(c)) end) str = gsub (str, " ", "+") return str end return n34