Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local function parse(url, default)
- local parsed = {}
- for i,v in pairs(default or parsed) do parsed[i] = v end
- if not url or url == "" then return nil, "invalid url" end
- url = string.gsub(url, "#(.*)$", function(f)
- parsed.fragment = f
- return ""
- end)
- url = string.gsub(url, "^([%w][%w%+%-%.]*)%:",
- function(s) parsed.scheme = s; return "" end)
- url = string.gsub(url, "^//([^/]*)", function(n)
- parsed.authority = n
- return ""
- end)
- url = string.gsub(url, "%?(.*)", function(q)
- parsed.query = q
- return ""
- end)
- url = string.gsub(url, "%;(.*)", function(p)
- parsed.params = p
- return ""
- end)
- if url ~= "" then parsed.path = url end
- local authority = parsed.authority
- if not authority then return parsed end
- authority = string.gsub(authority,"^([^@]*)@",
- function(u) parsed.userinfo = u; return "" end)
- authority = string.gsub(authority, ":([^:]*)$",
- function(p) parsed.port = p; return "" end)
- if authority ~= "" then parsed.host = authority end
- local userinfo = parsed.userinfo
- if not userinfo then return parsed end
- userinfo = string.gsub(userinfo, ":([^:]*)$",
- function(p) parsed.password = p; return "" end)
- parsed.user = userinfo
- return parsed
- end
Advertisement
Add Comment
Please, Sign In to add comment