1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889 |
- /*
- 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;
- });
|