stuppid_bot

Untitled

Apr 10th, 2013
173
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. var queryString = new (function() {
  2.     function parsePartial(name, value, params) {
  3.         var startPos,
  4.             endPos = 0,
  5.             parts = [];
  6.              
  7.         while (1) {
  8.             startPos = name.indexOf('[', endPos);
  9.            
  10.             if (0 > startPos)
  11.                 break;
  12.            
  13.             if (!parts.length)
  14.                 parts.push( decodeURIComponent( name.substr(0, startPos) ) );
  15.            
  16.             endPos = name.indexOf(']', ++startPos);
  17.            
  18.             if (0 > endPos)
  19.                 break;
  20.            
  21.             parts.push( decodeURIComponent( name.slice(startPos, endPos++) ) );
  22.         }
  23.        
  24.         if (!parts.length)
  25.             parts.push(name);
  26.  
  27.         var part,
  28.             current = params,
  29.             i = 0,
  30.             len = parts.length;
  31.  
  32.         while (1) {
  33.             part = parts[i++];
  34.  
  35.             if (part == '') {
  36.                 var numKeys = Object.keys(current).filter(function(a) { return /^\d+$/.test(a); });      
  37.                 part = numKeys.length ? Math.max.apply(null, numKeys) + 1 : 0;
  38.             }
  39.  
  40.             if (i == len)
  41.                 break;
  42.  
  43.             if (current[part] === undefined)
  44.                 current[part] = {};                      
  45.  
  46.             current = current[part];
  47.         }
  48.  
  49.         current[part] = decodeURIComponent(value);
  50.     }
  51.    
  52.     this.parse = function(str, sep, eq) {
  53.         eq = eq || '=';
  54.         var parts = str.split(sep || '&'), i = 0, len = parts.length, obj = {};
  55.  
  56.         while (i < len) {
  57.             var part = parts[i++].split(eq);
  58.             parsePartial(part[0], part[1], obj);
  59.         }
  60.  
  61.         return obj;
  62.     }
  63.    
  64.     function composePartial(obj, params, parts) {
  65.         for (var i in obj) {                
  66.             if (typeof obj[i] == 'object') {
  67.                 parts.push(i);
  68.                 composePartial(obj[i], params, parts);
  69.                 parts.pop();
  70.                 continue;
  71.             }
  72.            
  73.             var temp = parts.concat(i).map(encodeURIComponent);
  74.             params.push( [ temp[0] + ( temp.length > 1 ? '[' + temp.slice(1).join('][') + ']' : '' ), encodeURIComponent(obj[i]) ] );
  75.         }
  76.     }
  77.    
  78.     this.stringify = function(obj, sep, eq) {
  79.         sep = sep || '&';
  80.         eq = eq || '=';
  81.         var params = [];
  82.         composePartial(obj, params, []);
  83.         var i = 0, len = params.length, out = '';
  84.        
  85.         while (1) {
  86.             out += params[i][0] + eq + params[i][1];
  87.            
  88.             if (++i == len)
  89.                 break;
  90.            
  91.             out += sep;
  92.         }
  93.        
  94.         return out;
  95.     }
  96. })();
Advertisement
Add Comment
Please, Sign In to add comment