diff options
Diffstat (limited to 'assets/node_modules/yargs-parser/lib/tokenize-arg-string.js')
-rw-r--r-- | assets/node_modules/yargs-parser/lib/tokenize-arg-string.js | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/assets/node_modules/yargs-parser/lib/tokenize-arg-string.js b/assets/node_modules/yargs-parser/lib/tokenize-arg-string.js new file mode 100644 index 0000000..fe05e27 --- /dev/null +++ b/assets/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.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 +} |