Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var queryString = new (function() {
- function parsePartial(name, value, params) {
- var startPos,
- endPos = 0,
- parts = [];
- while (1) {
- startPos = name.indexOf('[', endPos);
- if (0 > startPos)
- break;
- if (!parts.length)
- parts.push( decodeURIComponent( name.substr(0, startPos) ) );
- endPos = name.indexOf(']', ++startPos);
- if (0 > endPos)
- break;
- parts.push( decodeURIComponent( name.slice(startPos, endPos++) ) );
- }
- if (!parts.length)
- parts.push(name);
- var part,
- current = params,
- i = 0,
- len = parts.length;
- while (1) {
- part = parts[i++];
- if (part == '') {
- var numKeys = Object.keys(current).filter(function(a) { return /^\d+$/.test(a); });
- part = numKeys.length ? Math.max.apply(null, numKeys) + 1 : 0;
- }
- if (i == len)
- break;
- if (current[part] === undefined)
- current[part] = {};
- current = current[part];
- }
- current[part] = decodeURIComponent(value);
- }
- this.parse = function(str, sep, eq) {
- eq = eq || '=';
- var parts = str.split(sep || '&'), i = 0, len = parts.length, obj = {};
- while (i < len) {
- var part = parts[i++].split(eq);
- parsePartial(part[0], part[1], obj);
- }
- return obj;
- }
- function composePartial(obj, params, parts) {
- for (var i in obj) {
- if (typeof obj[i] == 'object') {
- parts.push(i);
- composePartial(obj[i], params, parts);
- parts.pop();
- continue;
- }
- var temp = parts.concat(i).map(encodeURIComponent);
- params.push( [ temp[0] + ( temp.length > 1 ? '[' + temp.slice(1).join('][') + ']' : '' ), encodeURIComponent(obj[i]) ] );
- }
- }
- this.stringify = function(obj, sep, eq) {
- sep = sep || '&';
- eq = eq || '=';
- var params = [];
- composePartial(obj, params, []);
- var i = 0, len = params.length, out = '';
- while (1) {
- out += params[i][0] + eq + params[i][1];
- if (++i == len)
- break;
- out += sep;
- }
- return out;
- }
- })();
Advertisement
Add Comment
Please, Sign In to add comment