89 lines
1.7 KiB
JavaScript
89 lines
1.7 KiB
JavaScript
/*
|
|
Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
|
|
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
|
see: http://dojotoolkit.org/license for details
|
|
*/
|
|
|
|
//>>built
|
|
define("dojo/_base/url",["./kernel"],function(_1){
|
|
var _2=new RegExp("^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\\?([^#]*))?(#(.*))?$"),_3=new RegExp("^((([^\\[:]+):)?([^@]+)@)?(\\[([^\\]]+)\\]|([^\\[:]*))(:([0-9]+))?$"),_4=function(){
|
|
var n=null,_5=arguments,_6=[_5[0]];
|
|
for(var i=1;i<_5.length;i++){
|
|
if(!_5[i]){
|
|
continue;
|
|
}
|
|
var _7=new _4(_5[i]+""),_8=new _4(_6[0]+"");
|
|
if(_7.path==""&&!_7.scheme&&!_7.authority&&!_7.query){
|
|
if(_7.fragment!=n){
|
|
_8.fragment=_7.fragment;
|
|
}
|
|
_7=_8;
|
|
}else{
|
|
if(!_7.scheme){
|
|
_7.scheme=_8.scheme;
|
|
if(!_7.authority){
|
|
_7.authority=_8.authority;
|
|
if(_7.path.charAt(0)!="/"){
|
|
var _9=_8.path.substring(0,_8.path.lastIndexOf("/")+1)+_7.path;
|
|
var _a=_9.split("/");
|
|
for(var j=0;j<_a.length;j++){
|
|
if(_a[j]=="."){
|
|
if(j==_a.length-1){
|
|
_a[j]="";
|
|
}else{
|
|
_a.splice(j,1);
|
|
j--;
|
|
}
|
|
}else{
|
|
if(j>0&&!(j==1&&_a[0]=="")&&_a[j]==".."&&_a[j-1]!=".."){
|
|
if(j==(_a.length-1)){
|
|
_a.splice(j,1);
|
|
_a[j-1]="";
|
|
}else{
|
|
_a.splice(j-1,2);
|
|
j-=2;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
_7.path=_a.join("/");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
_6=[];
|
|
if(_7.scheme){
|
|
_6.push(_7.scheme,":");
|
|
}
|
|
if(_7.authority){
|
|
_6.push("//",_7.authority);
|
|
}
|
|
_6.push(_7.path);
|
|
if(_7.query){
|
|
_6.push("?",_7.query);
|
|
}
|
|
if(_7.fragment){
|
|
_6.push("#",_7.fragment);
|
|
}
|
|
}
|
|
this.uri=_6.join("");
|
|
var r=this.uri.match(_2);
|
|
this.scheme=r[2]||(r[1]?"":n);
|
|
this.authority=r[4]||(r[3]?"":n);
|
|
this.path=r[5];
|
|
this.query=r[7]||(r[6]?"":n);
|
|
this.fragment=r[9]||(r[8]?"":n);
|
|
if(this.authority!=n){
|
|
r=this.authority.match(_3);
|
|
this.user=r[3]||n;
|
|
this.password=r[4]||n;
|
|
this.host=r[6]||r[7];
|
|
this.port=r[9]||n;
|
|
}
|
|
};
|
|
_4.prototype.toString=function(){
|
|
return this.uri;
|
|
};
|
|
return _1._Url=_4;
|
|
});
|