diff options
author | Johannes <johannes.ewald@roomieplanet.de> | 2012-06-21 02:24:09 +0400 |
---|---|---|
committer | Johannes <johannes.ewald@roomieplanet.de> | 2012-06-21 02:24:09 +0400 |
commit | 0c860734dc28a679d9214ee9c5b5ff95e00eed55 (patch) | |
tree | 2b76efd42c12f331b79e61fb88ac480119d971c3 /lib/rewire.js | |
parent | ce972e2b1a9a43f6c19a68a5701b1b3b1bcc67f8 (diff) |
removed "use strict"; to avoid influencing not-strict modules
Diffstat (limited to 'lib/rewire.js')
-rw-r--r-- | lib/rewire.js | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/lib/rewire.js b/lib/rewire.js index ae23fb1..2a51e26 100644 --- a/lib/rewire.js +++ b/lib/rewire.js @@ -1,9 +1,9 @@ -"use strict"; // run code in ES5 strict mode
-
var Module = require("module"),
+ fs = require("fs"),
__get__ = require("./__get__.js"),
__set__ = require("./__set__.js"),
getImportGlobalsSrc = require("./getImportGlobalsSrc.js"),
+ detectStrictMode = require("./detectStrictMode.js"),
moduleWrapper0 = Module.wrapper[0], // caching original wrapper
moduleWrapper1 = Module.wrapper[1], // caching original wrapper
@@ -21,7 +21,8 @@ function rewire(parentModule, filename, cache) { var testModule,
nodeRequire,
prepend,
- append;
+ append,
+ src;
/**
* Proxies the first require call in order to draw back all changes.
@@ -63,7 +64,14 @@ function rewire(parentModule, filename, cache) { append = "module.exports.__set__ = " + __set__.toString() + "; ";
append += "module.exports.__get__ = " + __get__.toString() + "; ";
- // Apply prepend and append
+ // Check if the module uses the strict mode.
+ // If so we must ensure that "use strict"; stays at the beginning of the module.
+ src = fs.readFileSync(filename, "utf8");
+ if (detectStrictMode(src) === true) {
+ prepend = ' "use strict"; ' + prepend;
+ }
+
+ // Apply prepend and appends
Module.wrapper[0] = moduleWrapper0 + prepend;
Module.wrapper[1] = append + moduleWrapper1;
|