From 75ebdd4647c7cde033fd6d3c843d7235d69145bc Mon Sep 17 00:00:00 2001 From: Johannes Ewald Date: Thu, 5 Feb 2015 21:30:15 +0100 Subject: Fix issues with reverting nested properties Fixes #39 --- lib/__set__.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/__set__.js b/lib/__set__.js index 3fcfbdb..83671a1 100644 --- a/lib/__set__.js +++ b/lib/__set__.js @@ -13,18 +13,19 @@ function __set__() { arguments.varName = arguments[0]; arguments.varValue = arguments[1]; arguments.src = ""; - arguments.snapshot = {}; + arguments.revertArgs = []; if (typeof arguments[0] === "object" && arguments.length === 1) { arguments.env = arguments.varName; if (!arguments.env || Array.isArray(arguments.env)) { throw new TypeError("__set__ expects an object as env"); } + arguments.revertArgs[0] = {}; for (arguments.varName in arguments.env) { if (arguments.env.hasOwnProperty(arguments.varName)) { arguments.varValue = arguments.env[arguments.varName]; arguments.src += arguments.varName + " = arguments.env." + arguments.varName + "; "; - arguments.snapshot[arguments.varName] = eval(arguments.varName); + arguments.revertArgs[0][arguments.varName] = eval(arguments.varName); } } } else if (typeof arguments.varName === "string" && arguments.length === 2) { @@ -32,16 +33,16 @@ function __set__() { throw new TypeError("__set__ expects a non-empty string as a variable name"); } arguments.src = arguments.varName + " = arguments.varValue;"; - arguments.snapshot[arguments.varName] = eval(arguments.varName); + arguments.revertArgs = [arguments.varName, eval(arguments.varName)]; } else { throw new TypeError("__set__ expects an environment object or a non-empty string as a variable name"); } eval(arguments.src); - return function (snapshot) { - module.exports.__set__(snapshot); - }.bind(null, arguments.snapshot); + return function (revertArgs) { + __set__.apply(null, revertArgs); + }.bind(null, arguments.revertArgs); } module.exports = __set__; -- cgit v1.2.3