mirror of
https://github.com/lunarmodules/luasocket.git
synced 2025-07-23 17:30:01 +02:00
Almost ready for beta3
This commit is contained in:
15
src/url.lua
15
src/url.lua
@ -8,7 +8,10 @@
|
||||
-----------------------------------------------------------------------------
|
||||
-- Declare module
|
||||
-----------------------------------------------------------------------------
|
||||
module("socket.url")
|
||||
local string = require("string")
|
||||
local base = require("base")
|
||||
local table = require("table")
|
||||
local url = module("socket.url")
|
||||
|
||||
-----------------------------------------------------------------------------
|
||||
-- Encodes a string into its escaped hexadecimal representation
|
||||
@ -18,7 +21,7 @@ module("socket.url")
|
||||
-- escaped representation of string binary
|
||||
-----------------------------------------------------------------------------
|
||||
function escape(s)
|
||||
return string.gsub(s, "(.)", function(c)
|
||||
return string.gsub(s, "([^A-Za-z0-9_])", function(c)
|
||||
return string.format("%%%02x", string.byte(c))
|
||||
end)
|
||||
end
|
||||
@ -33,7 +36,7 @@ end
|
||||
-----------------------------------------------------------------------------
|
||||
local function make_set(t)
|
||||
local s = {}
|
||||
for i = 1, table.getn(t) do
|
||||
for i,v in base.ipairs(t) do
|
||||
s[t[i]] = 1
|
||||
end
|
||||
return s
|
||||
@ -62,7 +65,7 @@ end
|
||||
-----------------------------------------------------------------------------
|
||||
function unescape(s)
|
||||
return string.gsub(s, "%%(%x%x)", function(hex)
|
||||
return string.char(tonumber(hex, 16))
|
||||
return string.char(base.tonumber(hex, 16))
|
||||
end)
|
||||
end
|
||||
|
||||
@ -191,7 +194,7 @@ end
|
||||
-- corresponding absolute url
|
||||
-----------------------------------------------------------------------------
|
||||
function absolute(base_url, relative_url)
|
||||
local base = type(base_url) == "table" and base_url or parse(base_url)
|
||||
local base = base.type(base_url) == "table" and base_url or parse(base_url)
|
||||
local relative = parse(relative_url)
|
||||
if not base then return relative_url
|
||||
elseif not relative then return base_url
|
||||
@ -269,3 +272,5 @@ function build_path(parsed, unsafe)
|
||||
if parsed.is_absolute then path = "/" .. path end
|
||||
return path
|
||||
end
|
||||
|
||||
base.setmetatable(url, nil)
|
||||
|
Reference in New Issue
Block a user