Skip to content

Commit c872e66

Browse files
committed
don't coerce number, change to "parse-unknown-options: false", fix node 6 support
1 parent df705f8 commit c872e66

File tree

2 files changed

+33
-32
lines changed

2 files changed

+33
-32
lines changed

index.js

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ function parse (args, opts) {
2727
'halt-at-non-option': false,
2828
'strip-aliased': false,
2929
'strip-dashed': false,
30-
'ignore-unknown-options': false
30+
'parse-unknown-options': true
3131
}, opts.configuration)
3232
var defaults = opts.default || {}
3333
var configObjects = opts.configObjects || []
@@ -169,17 +169,17 @@ function parse (args, opts) {
169169
} else if (checkAllAliases(m[1], flags.arrays) && args.length > i + 1) {
170170
args.splice(i + 1, 0, m[2])
171171
i = eatArray(i, m[1], args)
172-
} else if (!configuration['ignore-unknown-options'] || hasAnyFlag(m[1])) {
172+
} else if (configuration['parse-unknown-options'] || hasAnyFlag(m[1])) {
173173
setArg(m[1], m[2])
174174
} else {
175-
argv._.push(maybeCoerceNumber('_', arg))
175+
argv._.push(arg)
176176
}
177177
} else if (arg.match(negatedBoolean) && configuration['boolean-negation']) {
178178
key = arg.match(negatedBoolean)[1]
179-
if (!configuration['ignore-unknown-options'] || hasAnyFlag(key)) {
179+
if (configuration['parse-unknown-options'] || hasAnyFlag(key)) {
180180
setArg(key, false)
181181
} else {
182-
argv._.push(maybeCoerceNumber('_', arg))
182+
argv._.push(arg)
183183
}
184184

185185
// -- seperated by space.
@@ -194,7 +194,7 @@ function parse (args, opts) {
194194
// array format = '--foo a b c'
195195
} else if (checkAllAliases(key, flags.arrays) && args.length > i + 1) {
196196
i = eatArray(i, key, args)
197-
} else if (!configuration['ignore-unknown-options'] || hasAnyFlag(key)) {
197+
} else if (configuration['parse-unknown-options'] || hasAnyFlag(key)) {
198198
next = flags.nargs[key] === 0 ? undefined : args[i + 1]
199199

200200
if (next !== undefined && (!next.match(/^-/) ||
@@ -210,24 +210,24 @@ function parse (args, opts) {
210210
setArg(key, defaultValue(key))
211211
}
212212
} else {
213-
argv._.push(maybeCoerceNumber('_', arg))
213+
argv._.push(arg)
214214
}
215215

216216
// dot-notation flag seperated by '='.
217217
} else if (arg.match(/^-.\..+=/)) {
218218
m = arg.match(/^-([^=]+)=([\s\S]*)$/)
219-
if (!configuration['ignore-unknown-options'] || hasAnyFlag(m[1])) {
219+
if (configuration['parse-unknown-options'] || hasAnyFlag(m[1])) {
220220
setArg(m[1], m[2])
221221
} else {
222-
argv._.push(maybeCoerceNumber('_', arg))
222+
argv._.push(arg)
223223
}
224224

225225
// dot-notation flag seperated by space.
226226
} else if (arg.match(/^-.\..+/)) {
227227
next = args[i + 1]
228228
key = arg.match(/^-(.\..+)/)[1]
229229

230-
if (!configuration['ignore-unknown-options'] || hasAnyFlag(key)) {
230+
if (configuration['parse-unknown-options'] || hasAnyFlag(key)) {
231231
if (next !== undefined && !next.match(/^-/) &&
232232
!checkAllAliases(key, flags.bools) &&
233233
!checkAllAliases(key, flags.counts)) {
@@ -237,7 +237,7 @@ function parse (args, opts) {
237237
setArg(key, defaultValue(key))
238238
}
239239
} else {
240-
argv._.push(maybeCoerceNumber('_', arg))
240+
argv._.push(arg)
241241
}
242242
} else if (arg.match(/^-[^-]+/) && !arg.match(negative)) {
243243
letters = arg.slice(1, -1).split('')
@@ -259,7 +259,7 @@ function parse (args, opts) {
259259
} else if (checkAllAliases(key, flags.arrays) && args.length > i + 1) {
260260
args.splice(i + 1, 0, value)
261261
i = eatArray(i, key, args)
262-
} else if (!configuration['ignore-unknown-options'] || hasAnyFlag(key)) {
262+
} else if (configuration['parse-unknown-options'] || hasAnyFlag(key)) {
263263
setArg(key, value)
264264
} else {
265265
unmatched.push(key)
@@ -272,7 +272,7 @@ function parse (args, opts) {
272272
}
273273

274274
if (next === '-') {
275-
if (!configuration['ignore-unknown-options'] || hasAnyFlag(letters[j])) {
275+
if (configuration['parse-unknown-options'] || hasAnyFlag(letters[j])) {
276276
setArg(letters[j], next)
277277
} else {
278278
unmatched.push(letters[j])
@@ -284,7 +284,7 @@ function parse (args, opts) {
284284
// current letter is an alphabetic character and next value is a number
285285
if (/[A-Za-z]/.test(letters[j]) &&
286286
/^-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
287-
if (!configuration['ignore-unknown-options'] || hasAnyFlag(letters[j])) {
287+
if (configuration['parse-unknown-options'] || hasAnyFlag(letters[j])) {
288288
setArg(letters[j], next)
289289
} else {
290290
unmatched.push(letters[j])
@@ -295,15 +295,15 @@ function parse (args, opts) {
295295
}
296296

297297
if (letters[j + 1] && letters[j + 1].match(/\W/)) {
298-
if (!configuration['ignore-unknown-options'] || hasAnyFlag(letters[j])) {
298+
if (configuration['parse-unknown-options'] || hasAnyFlag(letters[j])) {
299299
setArg(letters[j], next)
300300
} else {
301301
unmatched.push(letters[j])
302302
unmatched.push(next)
303303
}
304304
broken = true
305305
break
306-
} else if (!configuration['ignore-unknown-options'] || hasAnyFlag(letters[j])) {
306+
} else if (configuration['parse-unknown-options'] || hasAnyFlag(letters[j])) {
307307
setArg(letters[j], defaultValue(letters[j]))
308308
} else {
309309
unmatched.push(letters[j])
@@ -319,7 +319,7 @@ function parse (args, opts) {
319319
// array format = '-f a b c'
320320
} else if (checkAllAliases(key, flags.arrays) && args.length > i + 1) {
321321
i = eatArray(i, key, args)
322-
} else if (!configuration['ignore-unknown-options'] || hasAnyFlag(key)) {
322+
} else if (configuration['parse-unknown-options'] || hasAnyFlag(key)) {
323323
next = args[i + 1]
324324

325325
if (next !== undefined && (!/^(-|--)[^-]/.test(next) ||
@@ -339,7 +339,7 @@ function parse (args, opts) {
339339
}
340340
}
341341
if (unmatched.length > 0) {
342-
argv._.push(maybeCoerceNumber('_', ['-', ...unmatched].join('')))
342+
argv._.push(['-', ...unmatched].join(''))
343343
}
344344
} else if (arg === '--') {
345345
notFlags = args.slice(i + 1)
@@ -808,7 +808,8 @@ function parse (args, opts) {
808808

809809
function hasAnyFlag (key) {
810810
var isSet = false
811-
var toCheck = [].concat(Object.values(flags))
811+
// XXX Switch to [].concat(...Object.values(flags)) once node.js 6 is dropped
812+
var toCheck = [].concat(...Object.keys(flags).map(k => flags[k]))
812813

813814
toCheck.forEach(function (flag) {
814815
if (flag[key]) isSet = flag[key]

test/yargs-parser.js

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2963,12 +2963,12 @@ describe('yargs-parser', function () {
29632963
})
29642964
})
29652965
})
2966-
describe('ignore-unknown-options', function () {
2966+
describe('parse-unknown-options = false', function () {
29672967
it('should ignore unknown options in long format separated by =', function () {
29682968
const argv = parser('--known-arg=1 --unknown-arg=2', {
29692969
number: ['known-arg'],
29702970
configuration: {
2971-
'ignore-unknown-options': true
2971+
'parse-unknown-options': false
29722972
}
29732973
})
29742974
argv.should.deep.equal({
@@ -2981,7 +2981,7 @@ describe('yargs-parser', function () {
29812981
const argv = parser('--no-known-arg --no-unknown-arg', {
29822982
boolean: ['known-arg'],
29832983
configuration: {
2984-
'ignore-unknown-options': true
2984+
'parse-unknown-options': false
29852985
}
29862986
})
29872987
argv.should.deep.equal({
@@ -2994,7 +2994,7 @@ describe('yargs-parser', function () {
29942994
const argv = parser('--known-arg 1 --unknown-arg 2', {
29952995
number: ['known-arg'],
29962996
configuration: {
2997-
'ignore-unknown-options': true
2997+
'parse-unknown-options': false
29982998
}
29992999
})
30003000
argv.should.deep.equal({
@@ -3007,7 +3007,7 @@ describe('yargs-parser', function () {
30073007
const argv = parser('-k.arg=1 -u.arg=2', {
30083008
number: ['k.arg'],
30093009
configuration: {
3010-
'ignore-unknown-options': true
3010+
'parse-unknown-options': false
30113011
}
30123012
})
30133013
argv.should.deep.equal({
@@ -3021,7 +3021,7 @@ describe('yargs-parser', function () {
30213021
const argv = parser('-k.arg 1 -u.arg 2', {
30223022
number: ['k.arg'],
30233023
configuration: {
3024-
'ignore-unknown-options': true
3024+
'parse-unknown-options': false
30253025
}
30263026
})
30273027
argv.should.deep.equal({
@@ -3035,7 +3035,7 @@ describe('yargs-parser', function () {
30353035
const argv = parser('-k=1 -u=2', {
30363036
number: ['k'],
30373037
configuration: {
3038-
'ignore-unknown-options': true
3038+
'parse-unknown-options': false
30393039
}
30403040
})
30413041
argv.should.deep.equal({
@@ -3047,7 +3047,7 @@ describe('yargs-parser', function () {
30473047
const argv = parser('-k- -u-', {
30483048
string: ['k'],
30493049
configuration: {
3050-
'ignore-unknown-options': true
3050+
'parse-unknown-options': false
30513051
}
30523052
})
30533053
argv.should.deep.equal({
@@ -3059,7 +3059,7 @@ describe('yargs-parser', function () {
30593059
const argv = parser('-k 1 -u 2', {
30603060
number: ['k'],
30613061
configuration: {
3062-
'ignore-unknown-options': true
3062+
'parse-unknown-options': false
30633063
}
30643064
})
30653065
argv.should.deep.equal({
@@ -3071,7 +3071,7 @@ describe('yargs-parser', function () {
30713071
const argv = parser('-k1 -u2', {
30723072
number: ['k'],
30733073
configuration: {
3074-
'ignore-unknown-options': true
3074+
'parse-unknown-options': false
30753075
}
30763076
})
30773077
argv.should.deep.equal({
@@ -3083,7 +3083,7 @@ describe('yargs-parser', function () {
30833083
const argv = parser('-k/1/ -u/2/', {
30843084
string: ['k'],
30853085
configuration: {
3086-
'ignore-unknown-options': true
3086+
'parse-unknown-options': false
30873087
}
30883088
})
30893089
argv.should.deep.equal({
@@ -3096,7 +3096,7 @@ describe('yargs-parser', function () {
30963096
const argv = parser('-kuv', {
30973097
boolean: ['k', 'v'],
30983098
configuration: {
3099-
'ignore-unknown-options': true
3099+
'parse-unknown-options': false
31003100
}
31013101
})
31023102
argv.should.deep.equal({
@@ -3108,7 +3108,7 @@ describe('yargs-parser', function () {
31083108
const argv = parser('-kvu', {
31093109
boolean: ['k', 'v'],
31103110
configuration: {
3111-
'ignore-unknown-options': true
3111+
'parse-unknown-options': false
31123112
}
31133113
})
31143114
argv.should.deep.equal({

0 commit comments

Comments
 (0)