UNPKG

ares-ide

Version:

A browser-based code editor and UI designer for Enyo 2 projects

67 lines (61 loc) 1.57 kB
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)); } }