]> gitweb @ CieloNegro.org - Rakka.git/blob - js/parseuri.js
isValidBaseURI
[Rakka.git] / js / parseuri.js
1 /*
2         parseUri 1.2.1
3         (c) 2007 Steven Levithan <stevenlevithan.com>
4         MIT License
5 */
6
7 function parseUri (str) {
8         var     o   = parseUri.options,
9                 m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
10                 uri = {},
11                 i   = 14;
12
13         while (i--) uri[o.key[i]] = m[i] || "";
14
15         uri[o.q.name] = {};
16         uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
17                 if ($1) uri[o.q.name][$1] = $2;
18         });
19
20         return uri;
21 };
22
23 parseUri.options = {
24         strictMode: false,
25         key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
26         q:   {
27                 name:   "queryKey",
28                 parser: /(?:^|&)([^&=]*)=?([^&]*)/g
29         },
30         parser: {
31                 strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
32                 loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*):?([^:@]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
33         }
34 };