Python1320

eek

Nov 9th, 2011
145
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.22 KB | None | 0 0
  1.  
  2. local function parse(url, default)
  3.  
  4.     local parsed = {}
  5.     for i,v in pairs(default or parsed) do parsed[i] = v end
  6.  
  7.     if not url or url == "" then return nil, "invalid url" end
  8.  
  9.     url = string.gsub(url, "#(.*)$", function(f)
  10.         parsed.fragment = f
  11.         return ""
  12.     end)
  13.  
  14.     url = string.gsub(url, "^([%w][%w%+%-%.]*)%:",
  15.         function(s) parsed.scheme = s; return "" end)
  16.  
  17.     url = string.gsub(url, "^//([^/]*)", function(n)
  18.         parsed.authority = n
  19.         return ""
  20.     end)
  21.  
  22.     url = string.gsub(url, "%?(.*)", function(q)
  23.         parsed.query = q
  24.         return ""
  25.     end)
  26.  
  27.     url = string.gsub(url, "%;(.*)", function(p)
  28.         parsed.params = p
  29.         return ""
  30.     end)
  31.  
  32.     if url ~= "" then parsed.path = url end
  33.     local authority = parsed.authority
  34.     if not authority then return parsed end
  35.     authority = string.gsub(authority,"^([^@]*)@",
  36.         function(u) parsed.userinfo = u; return "" end)
  37.     authority = string.gsub(authority, ":([^:]*)$",
  38.         function(p) parsed.port = p; return "" end)
  39.     if authority ~= "" then parsed.host = authority end
  40.     local userinfo = parsed.userinfo
  41.     if not userinfo then return parsed end
  42.     userinfo = string.gsub(userinfo, ":([^:]*)$",
  43.         function(p) parsed.password = p; return "" end)
  44.     parsed.user = userinfo
  45.     return parsed
  46. end
  47.  
  48.  
  49.  
  50.  
Advertisement
Add Comment
Please, Sign In to add comment