Merge pull request #1403 from ajaxorg/mini_require

compatibility with architect-build
This commit is contained in:
Lennart Kats 2013-05-01 06:07:20 -07:00
commit 60f49118c0
3 changed files with 37 additions and 36 deletions

View file

@ -417,9 +417,7 @@ var buildAce = function(options) {
source: [{
project: workerProject,
require: [
'ace/lib/fixoldbrowsers',
'ace/lib/event_emitter',
'ace/lib/oop',
'ace/worker/worker',
'ace/mode/' + mode + '_worker'
]
}],
@ -428,7 +426,6 @@ var buildAce = function(options) {
});
copy({
source: [
ACE_HOME + "/lib/ace/worker/worker.js",
worker
],
filter: options.compress ? [copy.filter.uglifyjs] : [],

View file

@ -61,10 +61,13 @@ var _define = function(module, deps, payload) {
if (arguments.length == 2)
payload = deps;
if (!_define.modules)
_define.modules = {};
_define.modules[module] = payload;
if (!_define.modules) {
_define.modules = Object.create(null);
_define.payloads = Object.create(null);
}
_define.payloads[module] = payload;
_define.modules[module] = null;
};
/**
@ -130,30 +133,27 @@ var lookup = function(parentId, moduleName) {
var module = _define.modules[moduleName];
if (!module) {
return null;
module = _define.payloads[moduleName];
if (typeof module === 'function') {
var exports = {};
var mod = {
id: moduleName,
uri: '',
exports: exports,
packaged: true
};
var req = function(module, callback) {
return _require(moduleName, module, callback);
};
var returnValue = module(req, exports, mod);
exports = returnValue || mod.exports;
_define.modules[moduleName] = exports;
delete _define.payloads[moduleName];
}
module = _define.modules[moduleName] = exports;
}
if (typeof module === 'function') {
var exports = {};
var mod = {
id: moduleName,
uri: '',
exports: exports,
packaged: true
};
var req = function(module, callback) {
return _require(moduleName, module, callback);
};
var returnValue = module(req, exports, mod);
exports = returnValue || mod.exports;
// cache the resulting module object for next time
_define.modules[moduleName] = exports;
return exports;
}
return module;
};

View file

@ -38,6 +38,10 @@ window.normalizeModule = function(parentId, moduleName) {
};
window.require = function(parentId, id) {
if (!id) {
id = parentId
parentId = null;
}
if (!id.charAt)
throw new Error("worker.js require() accepts only (parentId, id) as arguments");
@ -58,7 +62,7 @@ window.require = function(parentId, id) {
require.id = id;
importScripts(path);
return require(parentId, id);
return require(parentId, id);
};
require.modules = {};
@ -102,8 +106,8 @@ window.initBaseUrls = function initBaseUrls(topLevelNamespaces) {
window.initSender = function initSender() {
var EventEmitter = require(null, "ace/lib/event_emitter").EventEmitter;
var oop = require(null, "ace/lib/oop");
var EventEmitter = require("ace/lib/event_emitter").EventEmitter;
var oop = require("ace/lib/oop");
var Sender = function() {};
@ -145,9 +149,9 @@ window.onmessage = function(e) {
}
else if (msg.init) {
initBaseUrls(msg.tlns);
require(null, "ace/lib/fixoldbrowsers");
require("ace/lib/es5-shim");
sender = initSender();
var clazz = require(null, msg.module)[msg.classname];
var clazz = require(msg.module)[msg.classname];
main = new clazz(sender);
}
else if (msg.event && sender) {