From d3ad21f81f0f93658b6f905367188ceb7c88a087 Mon Sep 17 00:00:00 2001 From: Ole R <frissdiegurke@protonmail.com> Date: Fri, 5 Feb 2016 10:12:07 +0100 Subject: [PATCH 1/3] Fix settings trim cleaning arrays --- src/settings.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/settings.js b/src/settings.js index 3d90dcfa84..6f3e1a0b36 100644 --- a/src/settings.js +++ b/src/settings.js @@ -20,6 +20,7 @@ function expandObjBy(obj1, obj2) { } function trim(obj1, obj2) { + if (obj1 instanceof Array) { return; } var key, val1; for (key in obj1) { if (obj1.hasOwnProperty(key)) { @@ -29,7 +30,7 @@ function trim(obj1, obj2) { } else if (typeof val1 === 'object') { trim(val1, obj2[key]); } - } + } } } From 7484389a4119ba80373c4ba3fbc8f489727e7bd4 Mon Sep 17 00:00:00 2001 From: Ole R <frissdiegurke@protonmail.com> Date: Wed, 10 Feb 2016 15:04:55 +0100 Subject: [PATCH 2/3] Update array-check to Array.isArray --- src/settings.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/settings.js b/src/settings.js index 6f3e1a0b36..71e0ea1374 100644 --- a/src/settings.js +++ b/src/settings.js @@ -20,7 +20,7 @@ function expandObjBy(obj1, obj2) { } function trim(obj1, obj2) { - if (obj1 instanceof Array) { return; } + if (Array.isArray(obj1)) { return; } var key, val1; for (key in obj1) { if (obj1.hasOwnProperty(key)) { From f537dfee1622b2040f2ab88219fd82328c822b0b Mon Sep 17 00:00:00 2001 From: Ole R <frissdiegurke@protonmail.com> Date: Thu, 25 Feb 2016 11:01:46 +0100 Subject: [PATCH 3/3] Update array-check for settings trim and expand --- src/settings.js | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/settings.js b/src/settings.js index 71e0ea1374..6f6cad2854 100644 --- a/src/settings.js +++ b/src/settings.js @@ -3,16 +3,19 @@ var meta = require('./meta'); function expandObjBy(obj1, obj2) { - var key, val1, val2, changed = false; + var key, val1, val2, xorValIsArray, changed = false; for (key in obj2) { if (obj2.hasOwnProperty(key)) { val2 = obj2[key]; val1 = obj1[key]; - if (!obj1.hasOwnProperty(key) || typeof val2 !== typeof val1) { + xorValIsArray = Array.isArray(val1) ^ Array.isArray(val2); + if (xorValIsArray || !obj1.hasOwnProperty(key) || typeof val2 !== typeof val1) { obj1[key] = val2; changed = true; - } else if (typeof val2 === 'object' && expandObjBy(val1, val2)) { - changed = true; + } else if (typeof val2 === 'object' && !Array.isArray(val2)) { + if (expandObjBy(val1, val2)) { + changed = true; + } } } } @@ -20,14 +23,13 @@ function expandObjBy(obj1, obj2) { } function trim(obj1, obj2) { - if (Array.isArray(obj1)) { return; } var key, val1; for (key in obj1) { if (obj1.hasOwnProperty(key)) { val1 = obj1[key]; if (!obj2.hasOwnProperty(key)) { delete obj1[key]; - } else if (typeof val1 === 'object') { + } else if (typeof val1 === 'object' && !Array.isArray(val1)) { trim(val1, obj2[key]); } }