Skip to content

Commit 90eb40e

Browse files
felixoisindresorhus
authored andcommitted
Fix using the parseNumbers and parseBooleans options together (#187)
1 parent a8710eb commit 90eb40e

2 files changed

Lines changed: 6 additions & 3 deletions

File tree

index.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -204,9 +204,7 @@ function parse(input, options) {
204204

205205
if (options.parseNumbers && !Number.isNaN(Number(value))) {
206206
value = Number(value);
207-
}
208-
209-
if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {
207+
} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {
210208
value = value.toLowerCase() === 'true';
211209
}
212210

test/parse.js

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -253,3 +253,8 @@ test('boolean value returns as boolean if option is set', t => {
253253
t.deepEqual(queryString.parse('foo=true', {parseBooleans: true}), {foo: true});
254254
t.deepEqual(queryString.parse('foo=false&bar=true', {parseBooleans: true}), {foo: false, bar: true});
255255
});
256+
257+
test('boolean value returns as boolean and number value as number if both options are set', t => {
258+
t.deepEqual(queryString.parse('foo=true&bar=1.12', {parseNumbers: true, parseBooleans: true}), {foo: true, bar: 1.12});
259+
t.deepEqual(queryString.parse('foo=16.32&bar=false', {parseNumbers: true, parseBooleans: true}), {foo: 16.32, bar: false});
260+
});

0 commit comments

Comments
 (0)