ares-ide
Version:
A browser-based code editor and UI designer for Enyo 2 projects
67 lines (61 loc) • 1.57 kB
JavaScript
var fs = require("fs");
var path = require('path');
//
// setup DOM-like sandbox
//
var window = {};
var loader;
var script = function(inPath) {
eval(fs.readFileSync(inPath, "utf8"));
};
var chunks = [];
var pushChunkFile = function(inType, inFile) {
var chunk = chunks.slice(-1)[0];
if (!chunk || !chunk[inType]) {
chunk = { sheets:[], scripts:[] };
chunks.push(chunk);
}
chunk[inType].push(inFile);
};
module.exports = {
init: function(inEnyoPath, inLibPath, inMapFrom, inMapTo) {
// Always use the Enyo loader that comes with _this_ walker
script(path.join(__dirname, "..", "..", "..", "..", "enyo", "loader.js"));
enyo.path.addPaths({
enyo: inEnyoPath,
lib: inLibPath
});
loader = new enyo.loaderFactory({
script: function(inScript) {
pushChunkFile("scripts", inScript);
},
sheet: function(inSheet) {
pushChunkFile("sheets", inSheet);
}
});
loader.loadPackage = function(inScript) {
if (inMapFrom) {
var pkg = path.relative(process.cwd(), inScript);
var pkgDir = path.dirname(pkg);
var mapIdx = inMapFrom.indexOf(pkgDir);
if (mapIdx >= 0) {
chunks.push(inMapTo[mapIdx] + pkg.substring(pkgDir.length));
loader.more.apply(loader);
return;
}
}
script(inScript);
};
enyo.depends = function() {
//console.log(arguments);
loader.load.apply(loader, arguments);
};
},
walk: function(inScript, inCallback) {
//console.log("walking: ", inScript);
loader.finish = function() {
inCallback(loader, chunks);
};
script(enyo.path.rewrite(inScript));
}
}