From 1fae061d9696b40440e8bef40d32564cb32767f1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Kleinekath=C3=B6fer?= Date: Fri, 21 Jun 2019 14:02:12 +0200 Subject: [PATCH 1/3] Fix error --- index.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/index.js b/index.js index 552baa44..da459c94 100644 --- a/index.js +++ b/index.js @@ -204,9 +204,7 @@ function parse(input, options) { if (options.parseNumbers && !Number.isNaN(Number(value))) { value = Number(value); - } - - if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) { + } else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) { value = value.toLowerCase() === 'true'; } From 386e460e96288435edf5e21c1d2b544b862767e8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Kleinekath=C3=B6fer?= Date: Fri, 21 Jun 2019 14:14:50 +0200 Subject: [PATCH 2/3] Add tests --- test/parse.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/test/parse.js b/test/parse.js index 61bba900..0436d45a 100644 --- a/test/parse.js +++ b/test/parse.js @@ -253,3 +253,8 @@ test('boolean value returns as boolean if option is set', t => { t.deepEqual(queryString.parse('foo=true', {parseBooleans: true}), {foo: true}); t.deepEqual(queryString.parse('foo=false&bar=true', {parseBooleans: true}), {foo: false, bar: true}); }); + +test('boolean value returns as boolean and number value as number if both options are set', t => { + t.deepEqual(queryString.parse('foo=true,bar=1.12', {parseNumbers: true, parseBooleans: true}), {foo: true, bar: 1.12}); + t.deepEqual(queryString.parse('foo=16.32&bar=false', {parseNumbers: true, parseBooleans: true}), {foo: 16.32, bar: false}); +}); From 4e9e5764550e2c112761e009a235fabf8e49bac7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Kleinekath=C3=B6fer?= Date: Fri, 21 Jun 2019 14:23:54 +0200 Subject: [PATCH 3/3] Fix query string --- test/parse.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/parse.js b/test/parse.js index 0436d45a..9ae2dc6b 100644 --- a/test/parse.js +++ b/test/parse.js @@ -255,6 +255,6 @@ test('boolean value returns as boolean if option is set', t => { }); test('boolean value returns as boolean and number value as number if both options are set', t => { - t.deepEqual(queryString.parse('foo=true,bar=1.12', {parseNumbers: true, parseBooleans: true}), {foo: true, bar: 1.12}); + t.deepEqual(queryString.parse('foo=true&bar=1.12', {parseNumbers: true, parseBooleans: true}), {foo: true, bar: 1.12}); t.deepEqual(queryString.parse('foo=16.32&bar=false', {parseNumbers: true, parseBooleans: true}), {foo: 16.32, bar: false}); });