From d67288b64388f501c871c3ff264734a4418071ca Mon Sep 17 00:00:00 2001 From: Ryan Dahl Date: Mon, 5 Oct 2009 21:01:30 +0200 Subject: [PATCH] Add __module to reference current node.Module object. --- doc/api.txt | 5 +++++ src/node.js | 20 ++++++++++---------- 2 files changed, 15 insertions(+), 10 deletions(-) diff --git a/doc/api.txt b/doc/api.txt index 4e6fbb0f23..3b72f555c9 100644 --- a/doc/api.txt +++ b/doc/api.txt @@ -60,6 +60,11 @@ error reporting. +__filename+ :: The filename of the script being executed. ++__module+ :: +A reference to the current module (of type +node.Module+). In particular ++__module.exports+ is the same as the +exports+ object. See +src/node.js+ for +more information. + +require(path)+ :: See the modules section. diff --git a/src/node.js b/src/node.js index 05de28bd59..a086edd22f 100644 --- a/src/node.js +++ b/src/node.js @@ -120,7 +120,7 @@ if (ENV["NODE_LIBRARY_PATHS"]) { node.Module = function (filename, parent) { node.assert(filename.charAt(0) == "/"); this.filename = filename; - this.target = {}; + this.exports = {}; this.parent = parent; this.loaded = false; @@ -137,7 +137,7 @@ node.Module.cache = {}; if (fullPath in node.Module.cache) { module = node.Module.cache[fullPath]; setTimeout(function () { - loadPromise.emitSuccess(module.target); + loadPromise.emitSuccess(module.exports); }, 0); } else { module = new node.Module(fullPath, parent); @@ -167,13 +167,13 @@ node.Module.cache = {}; } } - node.loadModule = function (requestedPath, target, parent) { + node.loadModule = function (requestedPath, exports, parent) { var loadPromise = new node.Promise(); - // On success copy the loaded properties into the target + // On success copy the loaded properties into the exports loadPromise.addCallback(function (t) { for (var prop in t) { - if (t.hasOwnProperty(prop)) target[prop] = t[prop]; + if (t.hasOwnProperty(prop)) exports[prop] = t[prop]; } }); @@ -232,8 +232,8 @@ node.Module.prototype.loadObject = function (loadPromise) { node.fs.exists(self.filename, function (does_exist) { if (does_exist) { self.loaded = true; - node.dlopen(self.filename, self.target); // FIXME synchronus - loadPromise.emitSuccess(self.target); + node.dlopen(self.filename, self.exports); // FIXME synchronus + loadPromise.emitSuccess(self.exports); } else { loadPromise.emitError(new Error("Error reading " + self.filename)); } @@ -263,14 +263,14 @@ node.Module.prototype.loadScript = function (loadPromise) { require.async = requireAsync; // create wrapper function - var wrapper = "function (__filename, exports, require) { " + content + "\n};"; + var wrapper = "function (__module, __filename, exports, require) { " + content + "\n};"; var compiled_wrapper = node.compile(wrapper, self.filename); - compiled_wrapper.apply(self.target, [self.filename, self.target, require]); + compiled_wrapper.apply(self.exports, [self, self.filename, self.exports, require]); self.waitChildrenLoad(function () { self.loaded = true; - loadPromise.emitSuccess(self.target); + loadPromise.emitSuccess(self.exports); }); }); };