]> git.wh0rd.org - tt-rss.git/blame - lib/dojo/_base/url.js.uncompressed.js
modify dojo rebuild script to remove uncompressed files
[tt-rss.git] / lib / dojo / _base / url.js.uncompressed.js
CommitLineData
f0cfe83e
AD
1define("dojo/_base/url", ["./kernel"], function(dojo){
2 // module:
3 // dojo/url
4
5 var
6 ore = new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"),
7 ire = new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$"),
8 _Url = function(){
9 var n = null,
10 _a = arguments,
11 uri = [_a[0]];
12 // resolve uri components relative to each other
13 for(var i = 1; i<_a.length; i++){
14 if(!_a[i]){ continue; }
15
16 // Safari doesn't support this.constructor so we have to be explicit
17 // FIXME: Tracked (and fixed) in Webkit bug 3537.
18 // http://bugs.webkit.org/show_bug.cgi?id=3537
19 var relobj = new _Url(_a[i]+""),
20 uriobj = new _Url(uri[0]+"");
21
22 if(
23 relobj.path == "" &&
24 !relobj.scheme &&
25 !relobj.authority &&
26 !relobj.query
27 ){
28 if(relobj.fragment != n){
29 uriobj.fragment = relobj.fragment;
30 }
31 relobj = uriobj;
32 }else if(!relobj.scheme){
33 relobj.scheme = uriobj.scheme;
34
35 if(!relobj.authority){
36 relobj.authority = uriobj.authority;
37
38 if(relobj.path.charAt(0) != "/"){
39 var path = uriobj.path.substring(0,
40 uriobj.path.lastIndexOf("/") + 1) + relobj.path;
41
42 var segs = path.split("/");
43 for(var j = 0; j < segs.length; j++){
44 if(segs[j] == "."){
45 // flatten "./" references
46 if(j == segs.length - 1){
47 segs[j] = "";
48 }else{
49 segs.splice(j, 1);
50 j--;
51 }
52 }else if(j > 0 && !(j == 1 && segs[0] == "") &&
53 segs[j] == ".." && segs[j-1] != ".."){
54 // flatten "../" references
55 if(j == (segs.length - 1)){
56 segs.splice(j, 1);
57 segs[j - 1] = "";
58 }else{
59 segs.splice(j - 1, 2);
60 j -= 2;
61 }
62 }
63 }
64 relobj.path = segs.join("/");
65 }
66 }
67 }
68
69 uri = [];
70 if(relobj.scheme){
71 uri.push(relobj.scheme, ":");
72 }
73 if(relobj.authority){
74 uri.push("//", relobj.authority);
75 }
76 uri.push(relobj.path);
77 if(relobj.query){
78 uri.push("?", relobj.query);
79 }
80 if(relobj.fragment){
81 uri.push("#", relobj.fragment);
82 }
83 }
84
85 this.uri = uri.join("");
86
87 // break the uri into its main components
88 var r = this.uri.match(ore);
89
90 this.scheme = r[2] || (r[1] ? "" : n);
91 this.authority = r[4] || (r[3] ? "" : n);
92 this.path = r[5]; // can never be undefined
93 this.query = r[7] || (r[6] ? "" : n);
94 this.fragment = r[9] || (r[8] ? "" : n);
95
96 if(this.authority != n){
97 // server based naming authority
98 r = this.authority.match(ire);
99
100 this.user = r[3] || n;
101 this.password = r[4] || n;
102 this.host = r[6] || r[7]; // ipv6 || ipv4
103 this.port = r[9] || n;
104 }
105 };
106 _Url.prototype.toString = function(){ return this.uri; };
107
108 return dojo._Url = _Url;
109});