From 27a7c51a435edb521d7a1fa5c046d2b1cd1a8009 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=A9my=20Lal?= Date: Wed, 26 Apr 2023 16:33:54 +0200 Subject: [PATCH] Support empty key --- src/index.js | 6 ++++-- test/index.js | 10 ++++++++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/index.js b/src/index.js index 6491b86..055ed64 100644 --- a/src/index.js +++ b/src/index.js @@ -1,4 +1,6 @@ function empty(key) { + if (key === "") return {}; + key = +key; return key === key ? [] : {}; } @@ -15,7 +17,7 @@ export function nestie(input, glue) { key = arr[i++]; if (tmp == null) { - tmp = empty(+key); + tmp = empty(key); output = output || tmp; } @@ -25,7 +27,7 @@ export function nestie(input, glue) { if (key in tmp) { tmp = tmp[key]; } else { - tmp = tmp[key] = empty(+arr[i]); + tmp = tmp[key] = empty(arr[i]); } } else { tmp[key] = input[k]; diff --git a/test/index.js b/test/index.js index 7bad7c6..e9108b1 100644 --- a/test/index.js +++ b/test/index.js @@ -184,6 +184,16 @@ test('NaN keys', () => { ); }); +test('empty key', () => { + run({ + 'foo.': 12 + }, { + 'foo': { + '': 12 + } + }); +}); + test('object :: kitchen', () => { run({ 'a': 1,