1 var typecast = require('../string/typecast');
2 var isString = require('../lang/isString');
3 var isArray = require('../lang/isArray');
4 var hasOwn = require('../object/hasOwn');
7 * Decode query string into an object of keys => vals.
9 function decode(queryStr, shouldTypecast) {
10 var queryArr = (queryStr || '').replace('?', '').split('&'),
12 length = queryArr.length,
14 item, pValue, pName, toSet;
16 while (++count < length) {
17 item = queryArr[count].split('=');
19 if (!pName || !pName.length){
22 pValue = shouldTypecast === false ? item[1] : typecast(item[1]);
23 toSet = isString(pValue) ? decodeURIComponent(pValue) : pValue;
24 if (hasOwn(obj,pName)){
25 if(isArray(obj[pName])){
26 obj[pName].push(toSet);
28 obj[pName] = [obj[pName],toSet];
37 module.exports = decode;