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
- }
|