The return of absolute Module loading

v0.7.4-release
Felix Geisendörfer 2009-11-02 00:34:16 +01:00 committed by Ryan Dahl
parent 2e40a9e15f
commit 7069bee982
2 changed files with 26 additions and 26 deletions

View File

@ -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!
path.exists(js, function (found) {
if (found) {
callback(js);
var locations = [
path.join(dir, id + ".js"),
path.join(dir, id + ".node"),
path.join(dir, id, "index.js"),
path.join(dir, id, "index.addon"),
];
var searchLocations = function() {
var location = locations.shift();
if (location === undefined) {
findModulePath(id, rest, callback);
return;
}
path.exists(addon, function (found) {
path.exists(location, function (found) {
if (found) {
callback(addon);
callback(location);
return;
}
path.exists(indexJs, function (found) {
if (found) {
callback(indexJs);
return;
}
path.exists(indexAddon, function (found) {
if (found) {
callback(indexAddon);
return;
}
findModulePath(id, rest, callback);
});
});
});
});
searchLocations();
})
};
searchLocations();
}
function loadModule (request, parent) {

View File

@ -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());