##// END OF EJS Templates
added provided and configure methods to the fluent container configuration, added applyConfig method to the container
added provided and configure methods to the fluent container configuration, added applyConfig method to the container

File last commit:

r65:0c74a0572161 v1.2.13 default
r142:be7edf08a115 v1.4.0-rc3 default
Show More
Uri.js
235 lines | 6.1 KiB | application/javascript | JavascriptLexer
define(["dojo/_base/declare", "./log/trace!"], function (declare, trace) {
trace.warn("THIS MODULE IS DEPRECATED! use uri-js or similar alternatives.");
function parseURI(uri) {
var schema, host, port, path, query, hash, i;
if (typeof (uri) == "string") {
if ((i = uri.indexOf(":")) >= 0 &&
uri.substr(0, i).match(/^\w+$/)) {
schema = uri.substr(0, i);
uri = uri.substr(i + 1);
}
if (uri.indexOf("//") === 0) {
uri = uri.substr(2);
if ((i = uri.indexOf("/")) >= 0) {
host = uri.substr(0, i);
uri = uri.substr(i);
} else {
host = uri;
uri = "";
}
}
if ((i = uri.indexOf("?")) >= 0) {
path = uri.substr(0, i);
uri = uri.substr(i + 1);
} else {
path = uri;
uri = "";
if ((i = path.indexOf("#")) >= 0) {
hash = path.substr(i + 1);
path = path.substr(0, i);
}
}
if ((i = uri.indexOf("#")) >= 0) {
query = uri.substr(0, i);
hash = uri.substr(i + 1);
} else {
query = uri;
}
}
if (host && (i = host.lastIndexOf(":")) >= 0) {
port = host.substr(i + 1);
host = host.substr(0, i);
}
return {
schema: schema,
host: host,
port: port,
path: path,
query: query,
hash: hash
};
}
function makeURI(options) {
var uri = [];
if (options.schema)
uri.push(options.schema, ":");
if (options.host)
uri.push("//", options.host);
if (options.host && options.port)
uri.push(":", options.port);
if (options.path) {
if (options.host && options.path[0] != "/")
uri.push("/");
uri.push(options.path);
} else if (options.host) {
uri.push("/");
}
if (options.query)
uri.push("?", options.query);
if (options.hash)
uri.push("#", options.hash);
return uri.join("");
}
function reducePath(parts) {
var balance = 0,
result = [],
isRoot;
for (var i = 0; i < parts.length; i++) {
var part = parts[i];
switch (part) {
case "..":
if (balance > 0) {
result.pop();
} else {
if (isRoot)
throw new Error("Unbalanced path: " + parts);
result.push(part);
}
balance--;
break;
case ".":
break;
case "":
if (i === 0) {
isRoot = true;
result.push(part);
}
break;
default:
result.push(part);
balance++;
break;
}
}
return result.join("/");
}
var meta = {
schema: null,
host: null,
port: null,
path: null,
query: null,
hash: null
};
var URI = declare(null, {
constructor: function (opts) {
trace.warn("This class is deprecated use uri-js or similar");
if (typeof (opts) == "string")
opts = parseURI(opts);
for (var p in meta)
if (p in opts)
this[p] = opts[p];
},
clone: function () {
return new URI(this);
},
combine: function (rel) {
var me = this;
if (typeof (rel) === "string")
rel = new URI(rel);
else
rel = rel.clone();
// //some.host:123/path?q=a#123
if (rel.host)
return rel;
// /abs/path?q=a#123
if (rel.path && rel.path[0] == "/") {
if (me.host) {
rel.schema = me.schema;
rel.host = me.host;
rel.port = me.port;
}
return rel;
}
var base = me.clone();
// rel/path?a=b#cd
if (rel.path) {
var segments = base.getSegments();
segments.pop();
segments.push.apply(segments, rel.getSegments());
base.path = reducePath(segments);
}
// ?q=a#123
if (rel.query)
base.query = rel.query;
if (rel.hash)
base.hase = rel.hash;
return base;
},
optimize: function () {
this.path = reducePath(this.getSegments());
},
getSegments: function () {
if (typeof (this.path) === "string")
return this.path.split("/");
else
return [];
},
toString: function () {
var uri = [],
me = this;
if (me.schema)
uri.push(me.schema, ":");
if (me.host)
uri.push("//", me.host);
if (me.host && me.port)
uri.push(":", me.port);
if (me.path) {
if (me.host && me.path[0] != "/")
uri.push("/");
uri.push(me.path);
} else if (me.host) {
uri.push("/");
}
if (me.query)
uri.push("?", me.query);
if (me.hash)
uri.push("#", me.hash);
return uri.join("");
}
});
URI.combine = function (base, rel) {
if (typeof (base) === "string")
base = new URI(base);
return base.combine(rel).toString();
};
return URI;
});