モジュール:UrlEncoding

提供: ひつじ小屋別館2代目
2013年8月31日 (土) 12:27時点におけるMarkTraceur (トーク)による版

(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
移動先: 案内検索

このモジュールについての説明文ページを モジュール:UrlEncoding/doc に作成できます

-- Way to encode URLs so they don't break things
local encode = function (str)
        str = string.gsub (str, "\n", "\r\n")
        str = string.gsub (str, "([^%w ])",
            function (c) return string.format ("%%%02X", string.byte(c)) end)
        str = string.gsub (str, " ", "+")
        return str
end

local decode = function (str)
    str = string.gsub (str, "+", " ")
    str = string.gsub (str, "%%(%x%x)",
        function(h) return string.char(tonumber(h,16)) end)
    str = string.gsub (str, "\r\n", "\n")
end

return {
	_encode = encode,
	_decode = decode,

    encode = function (frame)
        str = frame.args[1]
        if (str ~= nil) then
        	str = encode(str)
        end
        return str
    end,

	decode = function (frame)
        str = frame.args[1]
        if (str ~= nil) then
        	str = decode(str)
        end
        return str
    end
}