ace/demo/mini_require.js
Kevin Dangoor 2a2a05bab3 modules weren't being cached (so doing require("foo") twice would
return two independent copies of the foo module, thus messing up
any state stored in that module)

the visible evidence of this is that commands (such as keyboard
movements) could not be found
2011-01-11 23:18:23 -05:00

52 lines
1.3 KiB
JavaScript

function require(module, callback) {
if (Array.isArray(module)) {
var params = [];
module.forEach(function(m) {
params.push(require.modules[m]);
}, this);
if (callback) {
callback.apply(null, params);
}
}
if (typeof module === 'string') {
var payload = require.modules[module];
var module_name = module;
if (payload == null) {
console.error('Missing module: ' + module);
}
if (typeof payload === 'function') {
var exports = {};
var module = {
id: '',
uri: ''
};
payload(require, exports, module);
payload = exports;
// cache the resulting module object for next time
require.modules[module_name] = payload;
}
if (callback) {
callback();
}
return payload;
}
}
require.modules = {};
function define(module, payload) {
if (typeof module !== 'string') {
console.error('dropping module because define wasn\'t munged.');
console.trace();
return;
}
console.log('defining module: ' + module + ' as a ' + typeof payload);
require.modules[module] = payload;
}