lightbeam/data/parseuri.js

33 строки
1.0 KiB
JavaScript
Исходник Постоянная ссылка Обычный вид История

2013-03-18 23:09:58 +04:00
// parseUri 1.2.2
// (c) Steven Levithan <stevenlevithan.com>
// MIT License
2014-04-23 05:46:17 +04:00
function parseUri(str) {
var o = parseUri.options,
m = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
uri = {},
i = 14;
2013-03-18 23:09:58 +04:00
2014-04-23 05:46:17 +04:00
while (i--) uri[o.key[i]] = m[i] || "";
2013-03-18 23:09:58 +04:00
2014-04-23 05:46:17 +04:00
uri[o.q.name] = {};
uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
if ($1) uri[o.q.name][$1] = $2;
});
2013-03-18 23:09:58 +04:00
2014-04-23 05:46:17 +04:00
return uri;
}
2013-03-18 23:09:58 +04:00
parseUri.options = {
2014-04-23 05:46:17 +04:00
strictMode: false,
key: ["source", "protocol", "authority", "userInfo", "user", "password", "host", "port", "relative", "path", "directory", "file", "query", "anchor"],
q: {
name: "queryKey",
parser: /(?:^|&)([^&=]*)=?([^&]*)/g
},
parser: {
strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
}
2013-03-18 23:09:58 +04:00
};