diff --git a/index.ts b/index.ts index f751c7b9..dab5030b 100644 --- a/index.ts +++ b/index.ts @@ -333,7 +333,8 @@ function parse (argsInput: ArgsInput, options?: Partial): DetailedArgum // current letter is an alphabetic character and next value is a number if (/[A-Za-z]/.test(letters[j]) && - /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { + /^-?\d+(\.\d*)?(e-?\d+)?$/.test(next) && + checkAllAliases(next, flags.bools) === false) { setArg(letters[j], next) broken = true break diff --git a/test/yargs-parser.js b/test/yargs-parser.js index 0705a389..8d552444 100644 --- a/test/yargs-parser.js +++ b/test/yargs-parser.js @@ -1128,6 +1128,26 @@ describe('yargs-parser', function () { result.should.have.property('b').that.is.a('boolean').and.is.true // eslint-disable-line result.should.have.property('_').and.deep.equal([123]) }) + + // Fixes: https://github.com/yargs/yargs-parser/issues/283 + it('should set boolean numeric option, with numeric option at the end of a group', function () { + const result = parser(['-x1'], { boolean: ['x', '1'] }) + expect(result).to.have.property('x', true) + expect(result).to.have.property('1', true) + }) + + it('should set boolean numeric option, with numeric option at the start of a group', function () { + const result = parser(['-1x'], { boolean: ['x', '1'] }) + expect(result).to.have.property('x', true) + expect(result).to.have.property('1', true) + }) + + it('should set boolean numeric option, with numeric option as part of a group', function () { + const result = parser(['-x1b'], { boolean: ['x', '1', 'b'] }) + expect(result).to.have.property('x', true) + expect(result).to.have.property('1', true) + expect(result).to.have.property('b', true) + }) }) describe('defaults', function () {