From 95a9e785127b9bbf2d1db1f1f808ca1fb100e82a Mon Sep 17 00:00:00 2001 From: "Benjamin E. Coe" Date: Tue, 8 Sep 2020 20:45:37 -0700 Subject: [PATCH] fix: only strip camel case if hyphenated (#316) Fixes #315 --- lib/string-utils.ts | 2 +- lib/yargs-parser.ts | 2 +- test/yargs-parser.cjs | 17 +++++++++++++++++ 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/lib/string-utils.ts b/lib/string-utils.ts index 214dd82c..29ce039b 100644 --- a/lib/string-utils.ts +++ b/lib/string-utils.ts @@ -30,7 +30,7 @@ export function decamelize (str: string, joinString?: string): string { for (let i = 0; i < str.length; i++) { const chrLower = lowercase.charAt(i) const chrString = str.charAt(i) - if (chrLower !== chrString) { + if (chrLower !== chrString && i > 0) { notCamelcase += `${joinString}${lowercase.charAt(i)}` } else { notCamelcase += chrString diff --git a/lib/yargs-parser.ts b/lib/yargs-parser.ts index 0b29c9aa..ddee1127 100644 --- a/lib/yargs-parser.ts +++ b/lib/yargs-parser.ts @@ -421,7 +421,7 @@ export class YargsParser { if (configuration['strip-aliased']) { ;([] as string[]).concat(...Object.keys(aliases).map(k => aliases[k])).forEach(alias => { - if (configuration['camel-case-expansion']) { + if (configuration['camel-case-expansion'] && alias.includes('-')) { delete argv[alias.split('.').map(prop => camelCase(prop)).join('.')] } diff --git a/test/yargs-parser.cjs b/test/yargs-parser.cjs index 159e1dc7..693f3bea 100644 --- a/test/yargs-parser.cjs +++ b/test/yargs-parser.cjs @@ -3636,6 +3636,23 @@ describe('yargs-parser', function () { 'test-value': 1 }) }) + + it('only removes camel case expansion if keys have hyphen', function () { + const argv = parser(['--foo', '1', '-a', '2'], { + configuration: { + 'strip-aliased': true + }, + alias: { + aliased1: ['Foo'], + aliased2: ['A'] + } + }) + argv.should.deep.equal({ + _: [], + foo: 1, + a: 2 + }) + }) }) describe('prototype collisions', () => {