docs: function(query, sep, eq) {
          var params = {},
              queryParams,
              value, key,
              i, size,
              pair, idx;
  
          if (typeof query !== 'string' || query === '') {
              return params;
          }
  
          sep || (sep = '&');
          eq || (eq = '=');
  
          queryParams = query.split(sep);
  
          for (i = 0, size = queryParams.length; i < size; ++i) {
              pair = querystring.decode(queryParams[i]);
              idx = pair.indexOf(eq);
  
              if (idx >= 0) {
                  key = pair.substr(0, idx);
                  value = pair.substr(idx + 1);
              } else {
                  key = pair;
                  value = '';
              }
  
              if (hasOwnProp.call(params, key)) {
                  if ( ! isArray(params[key])) {
                      params[key] = [ params[key], value ];
                  } else {
                      params[key].push(value);
                  }
              } else {
                  params[key] = value;
              }
          }
  
          return params;
      }