Skip to content

Commit e8ec6f1

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

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 || []
@@ -160,17 +160,17 @@ function parse (args, opts) {
160160
} else if (checkAllAliases(m[1], flags.arrays) && args.length > i + 1) {
161161
args.splice(i + 1, 0, m[2])
162162
i = eatArray(i, m[1], args)
163-
} else if (!configuration['ignore-unknown-options'] || hasAnyFlag(m[1])) {
163+
} else if (configuration['parse-unknown-options'] || hasAnyFlag(m[1])) {
164164
setArg(m[1], m[2])
165165
} else {
166-
argv._.push(maybeCoerceNumber('_', arg))
166+
argv._.push(arg)
167167
}
168168
} else if (arg.match(negatedBoolean) && configuration['boolean-negation']) {
169169
key = arg.match(negatedBoolean)[1]
170-
if (!configuration['ignore-unknown-options'] || hasAnyFlag(key)) {
170+
if (configuration['parse-unknown-options'] || hasAnyFlag(key)) {
171171
setArg(key, false)
172172
} else {
173-
argv._.push(maybeCoerceNumber('_', arg))
173+
argv._.push(arg)
174174
}
175175

176176
// -- seperated by space.
@@ -185,7 +185,7 @@ function parse (args, opts) {
185185
// array format = '--foo a b c'
186186
} else if (checkAllAliases(key, flags.arrays) && args.length > i + 1) {
187187
i = eatArray(i, key, args)
188-
} else if (!configuration['ignore-unknown-options'] || hasAnyFlag(key)) {
188+
} else if (configuration['parse-unknown-options'] || hasAnyFlag(key)) {
189189
next = flags.nargs[key] === 0 ? undefined : args[i + 1]
190190

191191
if (next !== undefined && (!next.match(/^-/) ||
@@ -201,24 +201,24 @@ function parse (args, opts) {
201201
setArg(key, defaultValue(key))
202202
}
203203
} else {
204-
argv._.push(maybeCoerceNumber('_', arg))
204+
argv._.push(arg)
205205
}
206206

207207
// dot-notation flag seperated by '='.
208208
} else if (arg.match(/^-.\..+=/)) {
209209
m = arg.match(/^-([^=]+)=([\s\S]*)$/)
210-
if (!configuration['ignore-unknown-options'] || hasAnyFlag(m[1])) {
210+
if (configuration['parse-unknown-options'] || hasAnyFlag(m[1])) {
211211
setArg(m[1], m[2])
212212
} else {
213-
argv._.push(maybeCoerceNumber('_', arg))
213+
argv._.push(arg)
214214
}
215215

216216
// dot-notation flag seperated by space.
217217
} else if (arg.match(/^-.\..+/)) {
218218
next = args[i + 1]
219219
key = arg.match(/^-(.\..+)/)[1]
220220

221-
if (!configuration['ignore-unknown-options'] || hasAnyFlag(key)) {
221+
if (configuration['parse-unknown-options'] || hasAnyFlag(key)) {
222222
if (next !== undefined && !next.match(/^-/) &&
223223
!checkAllAliases(key, flags.bools) &&
224224
!checkAllAliases(key, flags.counts)) {
@@ -228,7 +228,7 @@ function parse (args, opts) {
228228
setArg(key, defaultValue(key))
229229
}
230230
} else {
231-
argv._.push(maybeCoerceNumber('_', arg))
231+
argv._.push(arg)
232232
}
233233
} else if (arg.match(/^-[^-]+/) && !arg.match(negative)) {
234234
letters = arg.slice(1, -1).split('')
@@ -250,7 +250,7 @@ function parse (args, opts) {
250250
} else if (checkAllAliases(key, flags.arrays) && args.length > i + 1) {
251251
args.splice(i + 1, 0, value)
252252
i = eatArray(i, key, args)
253-
} else if (!configuration['ignore-unknown-options'] || hasAnyFlag(key)) {
253+
} else if (configuration['parse-unknown-options'] || hasAnyFlag(key)) {
254254
setArg(key, value)
255255
} else {
256256
unmatched.push(key)
@@ -263,7 +263,7 @@ function parse (args, opts) {
263263
}
264264

265265
if (next === '-') {
266-
if (!configuration['ignore-unknown-options'] || hasAnyFlag(letters[j])) {
266+
if (configuration['parse-unknown-options'] || hasAnyFlag(letters[j])) {
267267
setArg(letters[j], next)
268268
} else {
269269
unmatched.push(letters[j])
@@ -275,7 +275,7 @@ function parse (args, opts) {
275275
// current letter is an alphabetic character and next value is a number
276276
if (/[A-Za-z]/.test(letters[j]) &&
277277
/^-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) {
278-
if (!configuration['ignore-unknown-options'] || hasAnyFlag(letters[j])) {
278+
if (configuration['parse-unknown-options'] || hasAnyFlag(letters[j])) {
279279
setArg(letters[j], next)
280280
} else {
281281
unmatched.push(letters[j])
@@ -286,15 +286,15 @@ function parse (args, opts) {
286286
}
287287

288288
if (letters[j + 1] && letters[j + 1].match(/\W/)) {
289-
if (!configuration['ignore-unknown-options'] || hasAnyFlag(letters[j])) {
289+
if (configuration['parse-unknown-options'] || hasAnyFlag(letters[j])) {
290290
setArg(letters[j], next)
291291
} else {
292292
unmatched.push(letters[j])
293293
unmatched.push(next)
294294
}
295295
broken = true
296296
break
297-
} else if (!configuration['ignore-unknown-options'] || hasAnyFlag(letters[j])) {
297+
} else if (configuration['parse-unknown-options'] || hasAnyFlag(letters[j])) {
298298
setArg(letters[j], defaultValue(letters[j]))
299299
} else {
300300
unmatched.push(letters[j])
@@ -310,7 +310,7 @@ function parse (args, opts) {
310310
// array format = '-f a b c'
311311
} else if (checkAllAliases(key, flags.arrays) && args.length > i + 1) {
312312
i = eatArray(i, key, args)
313-
} else if (!configuration['ignore-unknown-options'] || hasAnyFlag(key)) {
313+
} else if (configuration['parse-unknown-options'] || hasAnyFlag(key)) {
314314
next = args[i + 1]
315315

316316
if (next !== undefined && (!/^(-|--)[^-]/.test(next) ||
@@ -330,7 +330,7 @@ function parse (args, opts) {
330330
}
331331
}
332332
if (unmatched.length > 0) {
333-
argv._.push(maybeCoerceNumber('_', ['-', ...unmatched].join('')))
333+
argv._.push(['-', ...unmatched].join(''))
334334
}
335335
} else if (arg === '--') {
336336
notFlags = args.slice(i + 1)
@@ -797,7 +797,8 @@ function parse (args, opts) {
797797

798798
function hasAnyFlag (key) {
799799
var isSet = false
800-
var toCheck = [].concat(Object.values(flags))
800+
// XXX Switch to [].concat(...Object.values(flags)) once node.js 6 is dropped
801+
var toCheck = [].concat(...Object.keys(flags).map(k => flags[k]))
801802

802803
toCheck.forEach(function (flag) {
803804
if (flag[key]) isSet = flag[key]

test/yargs-parser.js

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -3015,12 +3015,12 @@ describe('yargs-parser', function () {
30153015
})
30163016
})
30173017
})
3018-
describe('ignore-unknown-options', function () {
3018+
describe('parse-unknown-options = false', function () {
30193019
it('should ignore unknown options in long format separated by =', function () {
30203020
const argv = parser('--known-arg=1 --unknown-arg=2', {
30213021
number: ['known-arg'],
30223022
configuration: {
3023-
'ignore-unknown-options': true
3023+
'parse-unknown-options': false
30243024
}
30253025
})
30263026
argv.should.deep.equal({
@@ -3033,7 +3033,7 @@ describe('yargs-parser', function () {
30333033
const argv = parser('--no-known-arg --no-unknown-arg', {
30343034
boolean: ['known-arg'],
30353035
configuration: {
3036-
'ignore-unknown-options': true
3036+
'parse-unknown-options': false
30373037
}
30383038
})
30393039
argv.should.deep.equal({
@@ -3046,7 +3046,7 @@ describe('yargs-parser', function () {
30463046
const argv = parser('--known-arg 1 --unknown-arg 2', {
30473047
number: ['known-arg'],
30483048
configuration: {
3049-
'ignore-unknown-options': true
3049+
'parse-unknown-options': false
30503050
}
30513051
})
30523052
argv.should.deep.equal({
@@ -3059,7 +3059,7 @@ describe('yargs-parser', function () {
30593059
const argv = parser('-k.arg=1 -u.arg=2', {
30603060
number: ['k.arg'],
30613061
configuration: {
3062-
'ignore-unknown-options': true
3062+
'parse-unknown-options': false
30633063
}
30643064
})
30653065
argv.should.deep.equal({
@@ -3073,7 +3073,7 @@ describe('yargs-parser', function () {
30733073
const argv = parser('-k.arg 1 -u.arg 2', {
30743074
number: ['k.arg'],
30753075
configuration: {
3076-
'ignore-unknown-options': true
3076+
'parse-unknown-options': false
30773077
}
30783078
})
30793079
argv.should.deep.equal({
@@ -3087,7 +3087,7 @@ describe('yargs-parser', function () {
30873087
const argv = parser('-k=1 -u=2', {
30883088
number: ['k'],
30893089
configuration: {
3090-
'ignore-unknown-options': true
3090+
'parse-unknown-options': false
30913091
}
30923092
})
30933093
argv.should.deep.equal({
@@ -3099,7 +3099,7 @@ describe('yargs-parser', function () {
30993099
const argv = parser('-k- -u-', {
31003100
string: ['k'],
31013101
configuration: {
3102-
'ignore-unknown-options': true
3102+
'parse-unknown-options': false
31033103
}
31043104
})
31053105
argv.should.deep.equal({
@@ -3111,7 +3111,7 @@ describe('yargs-parser', function () {
31113111
const argv = parser('-k 1 -u 2', {
31123112
number: ['k'],
31133113
configuration: {
3114-
'ignore-unknown-options': true
3114+
'parse-unknown-options': false
31153115
}
31163116
})
31173117
argv.should.deep.equal({
@@ -3123,7 +3123,7 @@ describe('yargs-parser', function () {
31233123
const argv = parser('-k1 -u2', {
31243124
number: ['k'],
31253125
configuration: {
3126-
'ignore-unknown-options': true
3126+
'parse-unknown-options': false
31273127
}
31283128
})
31293129
argv.should.deep.equal({
@@ -3135,7 +3135,7 @@ describe('yargs-parser', function () {
31353135
const argv = parser('-k/1/ -u/2/', {
31363136
string: ['k'],
31373137
configuration: {
3138-
'ignore-unknown-options': true
3138+
'parse-unknown-options': false
31393139
}
31403140
})
31413141
argv.should.deep.equal({
@@ -3148,7 +3148,7 @@ describe('yargs-parser', function () {
31483148
const argv = parser('-kuv', {
31493149
boolean: ['k', 'v'],
31503150
configuration: {
3151-
'ignore-unknown-options': true
3151+
'parse-unknown-options': false
31523152
}
31533153
})
31543154
argv.should.deep.equal({
@@ -3160,7 +3160,7 @@ describe('yargs-parser', function () {
31603160
const argv = parser('-kvu', {
31613161
boolean: ['k', 'v'],
31623162
configuration: {
3163-
'ignore-unknown-options': true
3163+
'parse-unknown-options': false
31643164
}
31653165
})
31663166
argv.should.deep.equal({

0 commit comments

Comments
 (0)