From d1cdc706a3819670f52c216bd3c4593f3aaa3109 Mon Sep 17 00:00:00 2001 From: juergba Date: Tue, 25 Jun 2019 15:27:48 +0200 Subject: [PATCH] eatArray() with boolean's --- index.js | 38 ++++++++++++++++---------------------- 1 file changed, 16 insertions(+), 22 deletions(-) diff --git a/index.js b/index.js index 11eac1e5..768e03ce 100644 --- a/index.js +++ b/index.js @@ -176,7 +176,7 @@ function parse (args, opts) { if (checkAllAliases(key, flags.nargs)) { i = eatNargs(i, key, args) // array format = '--foo a b c' - } else if (checkAllAliases(key, flags.arrays) && args.length > i + 1) { + } else if (checkAllAliases(key, flags.arrays) && (args.length > i + 1 || checkAllAliases(key, flags.bools))) { i = eatArray(i, key, args) } else { next = flags.nargs[key] === 0 ? undefined : args[i + 1] @@ -369,30 +369,24 @@ function parse (args, opts) { // following it... YUM! // e.g., --foo apple banana cat becomes ["apple", "banana", "cat"] function eatArray (i, key, args) { - var start = i + 1 - var argsToSet = [] - var multipleArrayFlag = i > 0 - for (var ii = i + 1; ii < args.length; ii++) { - if (/^-/.test(args[ii]) && !negative.test(args[ii])) { - if (ii === start) { - setArg(key, defaultForType('array')) - } - multipleArrayFlag = true - break - } - i = ii - argsToSet.push(args[ii]) - } - if (multipleArrayFlag) { - setArg(key, argsToSet.map(function (arg) { - return processValue(key, arg) - })) + let argsToSet = [] + let next = args[i + 1] + + if (checkAllAliases(key, flags.bools) && !(/^(true|false)$/.test(next))) { + argsToSet.push(true) + } else if (/^-/.test(next) && !negative.test(next)) { + // TODO: set user default value, if available + // argsToSet.push(defaultForType('array')) } else { - argsToSet.forEach(function (arg) { - setArg(key, arg) - }) + for (var ii = i + 1; ii < args.length; ii++) { + next = args[ii] + if (/^-/.test(next) && !negative.test(next)) break + i = ii + argsToSet.push(processValue(key, next)) + } } + setArg(key, argsToSet) return i }