Browse Source

The return of absolute Module loading

v0.7.4-release
Felix Geisendörfer 15 years ago
committed by Ryan Dahl
parent
commit
7069bee982
  1. 46
      src/node.js
  2. 4
      test/mjsunit/test-module-loading.js

46
src/node.js

@ -305,38 +305,34 @@ function findModulePath (id, dirs, callback) {
var dir = dirs[0];
var rest = dirs.slice(1, dirs.length);
var js = path.join(dir, id + ".js");
var addon = path.join(dir, id + ".node");
var indexJs = path.join(dir, id, "index.js");
var indexAddon = path.join(dir, id, "index.addon");
if (id.charAt(0) == '/') {
dir = '';
rest = [];
}
// TODO clean up the following atrocity!
var locations = [
path.join(dir, id + ".js"),
path.join(dir, id + ".node"),
path.join(dir, id, "index.js"),
path.join(dir, id, "index.addon"),
];
path.exists(js, function (found) {
if (found) {
callback(js);
return;
}
path.exists(addon, function (found) {
if (found) {
callback(addon);
return;
}
path.exists(indexJs, function (found) {
if (found) {
callback(indexJs);
var searchLocations = function() {
var location = locations.shift();
if (location === undefined) {
findModulePath(id, rest, callback);
return;
}
path.exists(indexAddon, function (found) {
path.exists(location, function (found) {
if (found) {
callback(indexAddon);
callback(location);
return;
}
findModulePath(id, rest, callback);
});
});
});
});
searchLocations();
})
};
searchLocations();
}
function loadModule (request, parent) {

4
test/mjsunit/test-module-loading.js

@ -5,6 +5,7 @@ debug("load test-module-loading.js");
var a = require("./fixtures/a");
var d = require("./fixtures/b/d");
var d2 = require("./fixtures/b/d");
var d3 = require(require('path').dirname(__filename)+"/fixtures/b/d");
assertFalse(false, "testing the test program.");
@ -23,6 +24,9 @@ assertEquals("D", d.D());
assertInstanceof(d2.D, Function);
assertEquals("D", d2.D());
assertInstanceof(d3.D, Function);
assertEquals("D", d3.D());
process.addListener("exit", function () {
assertInstanceof(a.A, Function);
assertEquals("A done", a.A());

Loading…
Cancel
Save