diff options
Diffstat (limited to 'node_modules/yargs-parser/lib')
| -rw-r--r-- | node_modules/yargs-parser/lib/tokenize-arg-string.js | 40 | 
1 files changed, 40 insertions, 0 deletions
| diff --git a/node_modules/yargs-parser/lib/tokenize-arg-string.js b/node_modules/yargs-parser/lib/tokenize-arg-string.js new file mode 100644 index 0000000..6c8d23e --- /dev/null +++ b/node_modules/yargs-parser/lib/tokenize-arg-string.js @@ -0,0 +1,40 @@ +// take an un-split argv string and tokenize it. +module.exports = function (argString) { +  if (Array.isArray(argString)) return argString + +  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 +      continue +    } else if ((c === "'" || c === '"') && !opening) { +      opening = c +      continue +    } + +    if (!args[i]) args[i] = '' +    args[i] += c +  } + +  return args +} | 
