diff options
Diffstat (limited to 'src/url.lua')
-rw-r--r-- | src/url.lua | 29 |
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 |
158 | end | 170 | end |
@@ -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 |
285 | end | 297 | end |
286 | |||