summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/strings/parse_str.js.map
blob: f5d4e789dee506e31e4452627e9615ac192a0e3e (plain) (blame)
1
{"version":3,"sources":["../../../src/php/strings/parse_str.js"],"names":["module","exports","parse_str","str","array","strArr","String","replace","split","sal","length","i","j","ct","p","lastObj","obj","chr","tmp","key","value","postLeftBracketPos","keys","keysLen","_fixStr","decodeURIComponent","$global","window","global","$locutus","php","charAt","slice","indexOf","push","substr","hasOwnProperty","match","Object"],"mappings":"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","file":"parse_str.js","sourcesContent":["module.exports = function parse_str (str, array) { // eslint-disable-line camelcase\n  //       discuss at: http://locutus.io/php/parse_str/\n  //      original by: Cagri Ekin\n  //      improved by: Michael White (http://getsprink.com)\n  //      improved by: Jack\n  //      improved by: Brett Zamir (http://brett-zamir.me)\n  //      bugfixed by: Onno Marsman (https://twitter.com/onnomarsman)\n  //      bugfixed by: Brett Zamir (http://brett-zamir.me)\n  //      bugfixed by: stag019\n  //      bugfixed by: Brett Zamir (http://brett-zamir.me)\n  //      bugfixed by: MIO_KODUKI (http://mio-koduki.blogspot.com/)\n  // reimplemented by: stag019\n  //         input by: Dreamer\n  //         input by: Zaide (http://zaidesthings.com/)\n  //         input by: David Pesta (http://davidpesta.com/)\n  //         input by: jeicquest\n  //      bugfixed by: Rafał Kukawski\n  //           note 1: When no argument is specified, will put variables in global scope.\n  //           note 1: When a particular argument has been passed, and the\n  //           note 1: returned value is different parse_str of PHP.\n  //           note 1: For example, a=b=c&d====c\n  //        example 1: var $arr = {}\n  //        example 1: parse_str('first=foo&second=bar', $arr)\n  //        example 1: var $result = $arr\n  //        returns 1: { first: 'foo', second: 'bar' }\n  //        example 2: var $arr = {}\n  //        example 2: parse_str('str_a=Jack+and+Jill+didn%27t+see+the+well.', $arr)\n  //        example 2: var $result = $arr\n  //        returns 2: { str_a: \"Jack and Jill didn't see the well.\" }\n  //        example 3: var $abc = {3:'a'}\n  //        example 3: parse_str('a[b][\"c\"]=def&a[q]=t+5', $abc)\n  //        example 3: var $result = $abc\n  //        returns 3: {\"3\":\"a\",\"a\":{\"b\":{\"c\":\"def\"},\"q\":\"t 5\"}}\n  //        example 4: var $arr = {}\n  //        example 4: parse_str('a[][]=value', $arr)\n  //        example 4: var $result = $arr\n  //        returns 4: {\"a\":{\"0\":{\"0\":\"value\"}}}\n  //        example 5: var $arr = {}\n  //        example 5: parse_str('a=1&a[]=2', $arr)\n  //        example 5: var $result = $arr\n  //        returns 5: {\"a\":{\"0\":\"2\"}}\n\n  var strArr = String(str).replace(/^&/, '').replace(/&$/, '').split('&')\n  var sal = strArr.length\n  var i\n  var j\n  var ct\n  var p\n  var lastObj\n  var obj\n  var chr\n  var tmp\n  var key\n  var value\n  var postLeftBracketPos\n  var keys\n  var keysLen\n\n  var _fixStr = function (str) {\n    return decodeURIComponent(str.replace(/\\+/g, '%20'))\n  }\n\n  var $global = (typeof window !== 'undefined' ? window : global)\n  $global.$locutus = $global.$locutus || {}\n  var $locutus = $global.$locutus\n  $locutus.php = $locutus.php || {}\n\n  if (!array) {\n    array = $global\n  }\n\n  for (i = 0; i < sal; i++) {\n    tmp = strArr[i].split('=')\n    key = _fixStr(tmp[0])\n    value = (tmp.length < 2) ? '' : _fixStr(tmp[1])\n\n    while (key.charAt(0) === ' ') {\n      key = key.slice(1)\n    }\n\n    if (key.indexOf('\\x00') > -1) {\n      key = key.slice(0, key.indexOf('\\x00'))\n    }\n\n    if (key && key.charAt(0) !== '[') {\n      keys = []\n      postLeftBracketPos = 0\n\n      for (j = 0; j < key.length; j++) {\n        if (key.charAt(j) === '[' && !postLeftBracketPos) {\n          postLeftBracketPos = j + 1\n        } else if (key.charAt(j) === ']') {\n          if (postLeftBracketPos) {\n            if (!keys.length) {\n              keys.push(key.slice(0, postLeftBracketPos - 1))\n            }\n\n            keys.push(key.substr(postLeftBracketPos, j - postLeftBracketPos))\n            postLeftBracketPos = 0\n\n            if (key.charAt(j + 1) !== '[') {\n              break\n            }\n          }\n        }\n      }\n\n      if (!keys.length) {\n        keys = [key]\n      }\n\n      for (j = 0; j < keys[0].length; j++) {\n        chr = keys[0].charAt(j)\n\n        if (chr === ' ' || chr === '.' || chr === '[') {\n          keys[0] = keys[0].substr(0, j) + '_' + keys[0].substr(j + 1)\n        }\n\n        if (chr === '[') {\n          break\n        }\n      }\n\n      obj = array\n\n      for (j = 0, keysLen = keys.length; j < keysLen; j++) {\n        key = keys[j].replace(/^['\"]/, '').replace(/['\"]$/, '')\n        lastObj = obj\n\n        if ((key === '' || key === ' ') && j !== 0) {\n          // Insert new dimension\n          ct = -1\n\n          for (p in obj) {\n            if (obj.hasOwnProperty(p)) {\n              if (+p > ct && p.match(/^\\d+$/g)) {\n                ct = +p\n              }\n            }\n          }\n\n          key = ct + 1\n        }\n\n        // if primitive value, replace with object\n        if (Object(obj[key]) !== obj[key]) {\n          obj[key] = {}\n        }\n\n        obj = obj[key]\n      }\n\n      lastObj[key] = value\n    }\n  }\n}\n"]}