UNPKG

orderly

Version:

Translates Orderly to JSON Schema

51 lines (42 loc) 1.55 kB
function read (path) { return require("fs").readFileSync(path, "utf8"); } function resolve (base, id) { return require("url").resolve(base, id); } exports.bundle = function(modules) { var moduleDefs = []; for (var i = 0; i < modules.length; i++) { var baseID = modules[i].id.replace(/.js$/,''); var path = modules[i].path; var requires = []; var text = read(path).replace(/require\s*\(\s*["']([\/\.\w-]+)["']\s*\)/g, function(match, requireID) { if (/^\./.test(requireID)) { var newID = resolve(baseID, requireID) //console.log("//replacing " + requireID + " in " + baseID + " with " + newID); requireID = newID; } requires.push(requireID); return "require("+JSON.stringify(requireID)+")"; }); moduleDefs.push("require.def("+JSON.stringify(baseID)+",{factory:function(require,exports,module){\n" + text + "\n//*/\n},requires:"+JSON.stringify(requires)+"})"); } return "var require = (" + req + ")()\n" + moduleDefs.join(";\n\n") + ";"; } var req = function() { var modules = {}; var factories = {}; var r = function(id) { if (!modules[id]) { console.log(id); modules[id] = {}; factories[id](r, modules[id], { id : id }); } return modules[id]; }; r.def = function(id, params) { console.log('def', id); factories[id] = params.factory; }; return r; }