@@ -13,35 +13,36 @@ function __set__() {
13
13
arguments . varName = arguments [ 0 ] ;
14
14
arguments . varValue = arguments [ 1 ] ;
15
15
arguments . src = "" ;
16
- arguments . snapshot = { } ;
16
+ arguments . revertArgs = [ ] ;
17
17
18
18
if ( typeof arguments [ 0 ] === "object" && arguments . length === 1 ) {
19
19
arguments . env = arguments . varName ;
20
20
if ( ! arguments . env || Array . isArray ( arguments . env ) ) {
21
21
throw new TypeError ( "__set__ expects an object as env" ) ;
22
22
}
23
+ arguments . revertArgs [ 0 ] = { } ;
23
24
for ( arguments . varName in arguments . env ) {
24
25
if ( arguments . env . hasOwnProperty ( arguments . varName ) ) {
25
26
arguments . varValue = arguments . env [ arguments . varName ] ;
26
27
arguments . src += arguments . varName + " = arguments.env." + arguments . varName + "; " ;
27
- arguments . snapshot [ arguments . varName ] = eval ( arguments . varName ) ;
28
+ arguments . revertArgs [ 0 ] [ arguments . varName ] = eval ( arguments . varName ) ;
28
29
}
29
30
}
30
31
} else if ( typeof arguments . varName === "string" && arguments . length === 2 ) {
31
32
if ( ! arguments . varName ) {
32
33
throw new TypeError ( "__set__ expects a non-empty string as a variable name" ) ;
33
34
}
34
35
arguments . src = arguments . varName + " = arguments.varValue;" ;
35
- arguments . snapshot [ arguments . varName ] = eval ( arguments . varName ) ;
36
+ arguments . revertArgs = [ arguments . varName , eval ( arguments . varName ) ] ;
36
37
} else {
37
38
throw new TypeError ( "__set__ expects an environment object or a non-empty string as a variable name" ) ;
38
39
}
39
40
40
41
eval ( arguments . src ) ;
41
42
42
- return function ( snapshot ) {
43
- module . exports . __set__ ( snapshot ) ;
44
- } . bind ( null , arguments . snapshot ) ;
43
+ return function ( revertArgs ) {
44
+ __set__ . apply ( null , revertArgs ) ;
45
+ } . bind ( null , arguments . revertArgs ) ;
45
46
}
46
47
47
48
module . exports = __set__ ;