52 lines
1.3 KiB
JavaScript
52 lines
1.3 KiB
JavaScript
jasmineRequire.QueryString = function() {
|
|
function QueryString(options) {
|
|
|
|
this.navigateWithNewParam = function(key, value) {
|
|
options.getWindowLocation().search = this.fullStringWithNewParam(key, value);
|
|
};
|
|
|
|
this.fullStringWithNewParam = function(key, value) {
|
|
var paramMap = queryStringToParamMap();
|
|
paramMap[key] = value;
|
|
return toQueryString(paramMap);
|
|
};
|
|
|
|
this.getParam = function(key) {
|
|
return queryStringToParamMap()[key];
|
|
};
|
|
|
|
return this;
|
|
|
|
function toQueryString(paramMap) {
|
|
var qStrPairs = [];
|
|
for (var prop in paramMap) {
|
|
qStrPairs.push(encodeURIComponent(prop) + '=' + encodeURIComponent(paramMap[prop]));
|
|
}
|
|
return '?' + qStrPairs.join('&');
|
|
}
|
|
|
|
function queryStringToParamMap() {
|
|
var paramStr = options.getWindowLocation().search.substring(1),
|
|
params = [],
|
|
paramMap = {};
|
|
|
|
if (paramStr.length > 0) {
|
|
params = paramStr.split('&');
|
|
for (var i = 0; i < params.length; i++) {
|
|
var p = params[i].split('=');
|
|
var value = decodeURIComponent(p[1]);
|
|
if (value === 'true' || value === 'false') {
|
|
value = JSON.parse(value);
|
|
}
|
|
paramMap[decodeURIComponent(p[0])] = value;
|
|
}
|
|
}
|
|
|
|
return paramMap;
|
|
}
|
|
|
|
}
|
|
|
|
return QueryString;
|
|
};
|