aboutsummaryrefslogtreecommitdiff
path: root/src/url.lua
diff options
context:
space:
mode:
Diffstat (limited to 'src/url.lua')
-rw-r--r--src/url.lua29
1 files changed, 20 insertions, 9 deletions
diff --git a/src/url.lua b/src/url.lua
index ec62ad6..52e88da 100644
--- a/src/url.lua
+++ b/src/url.lua
@@ -130,29 +130,41 @@ function parse(url, default)
130 -- remove whitespace 130 -- remove whitespace
131 -- url = string.gsub(url, "%s", "") 131 -- url = string.gsub(url, "%s", "")
132 -- get fragment 132 -- get fragment
133 url = string.gsub(url, "#(.*)$", function(f) parsed.fragment = f end) 133 url = string.gsub(url, "#(.*)$", function(f)
134 parsed.fragment = f
135 return ""
136 end)
134 -- get scheme 137 -- get scheme
135 url = string.gsub(url, "^([%w][%w%+%-%.]*)%:", 138 url = string.gsub(url, "^([%w][%w%+%-%.]*)%:",
136 function(s) parsed.scheme = s end) 139 function(s) parsed.scheme = s; return "" end)
137 -- get authority 140 -- get authority
138 url = string.gsub(url, "^//([^/]*)", function(n) parsed.authority = n end) 141 url = string.gsub(url, "^//([^/]*)", function(n)
142 parsed.authority = n
143 return ""
144 end)
139 -- get query stringing 145 -- get query stringing
140 url = string.gsub(url, "%?(.*)", function(q) parsed.query = q end) 146 url = string.gsub(url, "%?(.*)", function(q)
147 parsed.query = q
148 return ""
149 end)
141 -- get params 150 -- get params
142 url = string.gsub(url, "%;(.*)", function(p) parsed.params = p end) 151 url = string.gsub(url, "%;(.*)", function(p)
152 parsed.params = p
153 return ""
154 end)
143 -- path is whatever was left 155 -- path is whatever was left
144 if url ~= "" then parsed.path = url end 156 if url ~= "" then parsed.path = url end
145 local authority = parsed.authority 157 local authority = parsed.authority
146 if not authority then return parsed end 158 if not authority then return parsed end
147 authority = string.gsub(authority,"^([^@]*)@", 159 authority = string.gsub(authority,"^([^@]*)@",
148 function(u) parsed.userinfo = u end) 160 function(u) parsed.userinfo = u; return "" end)
149 authority = string.gsub(authority, ":([^:]*)$", 161 authority = string.gsub(authority, ":([^:]*)$",
150 function(p) parsed.port = p end) 162 function(p) parsed.port = p; return "" end)
151 if authority ~= "" then parsed.host = authority end 163 if authority ~= "" then parsed.host = authority end
152 local userinfo = parsed.userinfo 164 local userinfo = parsed.userinfo
153 if not userinfo then return parsed end 165 if not userinfo then return parsed end
154 userinfo = string.gsub(userinfo, ":([^:]*)$", 166 userinfo = string.gsub(userinfo, ":([^:]*)$",
155 function(p) parsed.password = p end) 167 function(p) parsed.password = p; return "" end)
156 parsed.user = userinfo 168 parsed.user = userinfo
157 return parsed 169 return parsed
158end 170end
@@ -283,4 +295,3 @@ function build_path(parsed, unsafe)
283 if parsed.is_absolute then path = "/" .. path end 295 if parsed.is_absolute then path = "/" .. path end
284 return path 296 return path
285end 297end
286