| 12345678910111213141516171819202122232425262728293031323334353637383940 | // take an un-split argv string and tokenize it.module.exports = function (argString) {  if (Array.isArray(argString)) {    return argString.map(e => typeof e !== 'string' ? e + '' : e)  }  argString = argString.trim()  var i = 0  var prevC = null  var c = null  var opening = null  var args = []  for (var ii = 0; ii < argString.length; ii++) {    prevC = c    c = argString.charAt(ii)    // split on spaces unless we're in quotes.    if (c === ' ' && !opening) {      if (!(prevC === ' ')) {        i++      }      continue    }    // don't split the string if we're in matching    // opening or closing single and double quotes.    if (c === opening) {      opening = null    } else if ((c === "'" || c === '"') && !opening) {      opening = c    }    if (!args[i]) args[i] = ''    args[i] += c  }  return args}
 |