qss
Version:
A tiny (305B) browser utility for stringifying a query Object.
44 lines (37 loc) • 915 B
JavaScript
export function encode(obj, pfx) {
var k, i, tmp, str='';
for (k in obj) {
if ((tmp = obj[k]) !== void 0) {
if (Array.isArray(tmp)) {
for (i=0; i < tmp.length; i++) {
str && (str += '&');
str += encodeURIComponent(k) + '=' + encodeURIComponent(tmp[i]);
}
} else {
str && (str += '&');
str += encodeURIComponent(k) + '=' + encodeURIComponent(tmp);
}
}
}
return (pfx || '') + str;
}
function toValue(mix) {
if (!mix) return '';
var str = decodeURIComponent(mix);
if (str === 'false') return false;
if (str === 'true') return true;
return (+str * 0 === 0) ? (+str) : str;
}
export function decode(str) {
var tmp, k, out={}, arr=str.split('&');
while (tmp = arr.shift()) {
tmp = tmp.split('=');
k = tmp.shift();
if (out[k] !== void 0) {
out[k] = [].concat(out[k], toValue(tmp.shift()));
} else {
out[k] = toValue(tmp.shift());
}
}
return out;
}