summaryrefslogtreecommitdiff
path: root/node_modules/locutus/php/strings/str_getcsv.js.map
blob: 55aee391318869a9734870d224a9dfd7dd8fb4b1 (plain) (blame)
1
{"version":3,"sources":["../../../src/php/strings/str_getcsv.js"],"names":["module","exports","str_getcsv","input","delimiter","enclosure","escape","i","inpLen","output","_backwards","str","split","reverse","join","_pq","String","replace","pqEnc","pqEsc","RegExp","length","push"],"mappings":";;AAAAA,OAAOC,OAAP,GAAiB,SAASC,UAAT,CAAqBC,KAArB,EAA4BC,SAA5B,EAAuCC,SAAvC,EAAkDC,MAAlD,EAA0D;AAAE;AAC3E;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;;;;;;AAiBA,MAAIC,CAAJ;AACA,MAAIC,MAAJ;AACA,MAAIC,SAAS,EAAb;AACA,MAAIC,aAAa,SAAbA,UAAa,CAAUC,GAAV,EAAe;AAC9B;AACA;AACA,WAAOA,IAAIC,KAAJ,CAAU,EAAV,EAAcC,OAAd,GAAwBC,IAAxB,CAA6B,EAA7B,CAAP;AACD,GAJD;AAKA,MAAIC,MAAM,SAANA,GAAM,CAAUJ,GAAV,EAAe;AACvB;AACA,WAAOK,OAAOL,GAAP,EAAYM,OAAZ,CAAoB,4BAApB,EAAkD,MAAlD,CAAP;AACD,GAHD;;AAKAb,cAAYA,aAAa,GAAzB;AACAC,cAAYA,aAAa,GAAzB;AACAC,WAASA,UAAU,IAAnB;AACA,MAAIY,QAAQH,IAAIV,SAAJ,CAAZ;AACA,MAAIc,QAAQJ,IAAIT,MAAJ,CAAZ;;AAEAH,UAAQA,MACLc,OADK,CACG,IAAIG,MAAJ,CAAW,UAAUF,KAArB,CADH,EACgC,EADhC,EAELD,OAFK,CAEG,IAAIG,MAAJ,CAAWF,QAAQ,OAAnB,CAFH,EAEgC,EAFhC,CAAR;;AAIA;AACAf,UAAQO,WAAWP,KAAX,EACLS,KADK,CACC,IAAIQ,MAAJ,CAAWF,QAAQ,MAAR,GAAiBH,IAAIX,SAAJ,CAAjB,GAAkC,MAAlC,GAA2Cc,KAA3C,GAAmD,KAAnD,GAA2DC,KAA3D,GAAmE,GAA9E,EAAmF,GAAnF,CADD,EAELN,OAFK,EAAR;;AAIA,OAAKN,IAAI,CAAJ,EAAOC,SAASL,MAAMkB,MAA3B,EAAmCd,IAAIC,MAAvC,EAA+CD,GAA/C,EAAoD;AAClDE,WAAOa,IAAP,CAAYZ,WAAWP,MAAMI,CAAN,CAAX,EACTU,OADS,CACD,IAAIG,MAAJ,CAAWD,QAAQD,KAAnB,EAA0B,GAA1B,CADC,EAC+Bb,SAD/B,CAAZ;AAED;;AAED,SAAOI,MAAP;AACD,CA3DD","file":"str_getcsv.js","sourcesContent":["module.exports = function str_getcsv (input, delimiter, enclosure, escape) { // eslint-disable-line camelcase\n  //  discuss at: http://locutus.io/php/str_getcsv/\n  // original by: Brett Zamir (http://brett-zamir.me)\n  //   example 1: str_getcsv('\"abc\",\"def\",\"ghi\"')\n  //   returns 1: ['abc', 'def', 'ghi']\n  //   example 2: str_getcsv('\"row2\"\"cell1\",\"row2cell2\",\"row2cell3\"', null, null, '\"')\n  //   returns 2: ['row2\"cell1', 'row2cell2', 'row2cell3']\n\n  /*\n  // These test cases allowing for missing delimiters are not currently supported\n    str_getcsv('\"row2\"\"cell1\",row2cell2,row2cell3', null, null, '\"');\n    ['row2\"cell1', 'row2cell2', 'row2cell3']\n\n    str_getcsv('row1cell1,\"row1,cell2\",row1cell3', null, null, '\"');\n    ['row1cell1', 'row1,cell2', 'row1cell3']\n\n    str_getcsv('\"row2\"\"cell1\",row2cell2,\"row2\"\"\"\"cell3\"');\n    ['row2\"cell1', 'row2cell2', 'row2\"\"cell3']\n\n    str_getcsv('row1cell1,\"row1,cell2\",\"row1\"\",\"\"cell3\"', null, null, '\"');\n    ['row1cell1', 'row1,cell2', 'row1\",\"cell3'];\n\n    Should also test newlines within\n  */\n\n  var i\n  var inpLen\n  var output = []\n  var _backwards = function (str) {\n    // We need to go backwards to simulate negative look-behind (don't split on\n    // an escaped enclosure even if followed by the delimiter and another enclosure mark)\n    return str.split('').reverse().join('')\n  }\n  var _pq = function (str) {\n    // preg_quote()\n    return String(str).replace(/([\\\\.+*?[^\\]$(){}=!<>|:])/g, '\\\\$1')\n  }\n\n  delimiter = delimiter || ','\n  enclosure = enclosure || '\"'\n  escape = escape || '\\\\'\n  var pqEnc = _pq(enclosure)\n  var pqEsc = _pq(escape)\n\n  input = input\n    .replace(new RegExp('^\\\\s*' + pqEnc), '')\n    .replace(new RegExp(pqEnc + '\\\\s*$'), '')\n\n  // PHP behavior may differ by including whitespace even outside of the enclosure\n  input = _backwards(input)\n    .split(new RegExp(pqEnc + '\\\\s*' + _pq(delimiter) + '\\\\s*' + pqEnc + '(?!' + pqEsc + ')', 'g'))\n    .reverse()\n\n  for (i = 0, inpLen = input.length; i < inpLen; i++) {\n    output.push(_backwards(input[i])\n      .replace(new RegExp(pqEsc + pqEnc, 'g'), enclosure))\n  }\n\n  return output\n}\n"]}