@@ -13,35 +13,36 @@ function __set__() {
1313 arguments . varName = arguments [ 0 ] ;
1414 arguments . varValue = arguments [ 1 ] ;
1515 arguments . src = "" ;
16- arguments . snapshot = { } ;
16+ arguments . revertArgs = [ ] ;
1717
1818 if ( typeof arguments [ 0 ] === "object" && arguments . length === 1 ) {
1919 arguments . env = arguments . varName ;
2020 if ( ! arguments . env || Array . isArray ( arguments . env ) ) {
2121 throw new TypeError ( "__set__ expects an object as env" ) ;
2222 }
23+ arguments . revertArgs [ 0 ] = { } ;
2324 for ( arguments . varName in arguments . env ) {
2425 if ( arguments . env . hasOwnProperty ( arguments . varName ) ) {
2526 arguments . varValue = arguments . env [ arguments . varName ] ;
2627 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 ) ;
2829 }
2930 }
3031 } else if ( typeof arguments . varName === "string" && arguments . length === 2 ) {
3132 if ( ! arguments . varName ) {
3233 throw new TypeError ( "__set__ expects a non-empty string as a variable name" ) ;
3334 }
3435 arguments . src = arguments . varName + " = arguments.varValue;" ;
35- arguments . snapshot [ arguments . varName ] = eval ( arguments . varName ) ;
36+ arguments . revertArgs = [ arguments . varName , eval ( arguments . varName ) ] ;
3637 } else {
3738 throw new TypeError ( "__set__ expects an environment object or a non-empty string as a variable name" ) ;
3839 }
3940
4041 eval ( arguments . src ) ;
4142
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 ) ;
4546}
4647
4748module . exports = __set__ ;
0 commit comments