Almost ready for beta3
This commit is contained in:
parent
eb0fc857dd
commit
7c97e8e40a
26 changed files with 310 additions and 190 deletions
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)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue