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 | |||
