56 lines
1.3 KiB
JavaScript
56 lines
1.3 KiB
JavaScript
/*jshint evil:true*/
|
|
|
|
minispade = {
|
|
root: null,
|
|
modules: {},
|
|
loaded: {},
|
|
|
|
globalEval: function(data) {
|
|
if ( data ) {
|
|
// We use execScript on Internet Explorer
|
|
// We use an anonymous function so that context is window
|
|
// rather than jQuery in Firefox
|
|
( window.execScript || function( data ) {
|
|
window[ "eval" ].call( window, data );
|
|
} )( data );
|
|
}
|
|
},
|
|
|
|
require: function(name) {
|
|
var loaded = minispade.loaded[name];
|
|
var mod = minispade.modules[name];
|
|
|
|
if (!loaded) {
|
|
if (mod) {
|
|
minispade.loaded[name] = true;
|
|
|
|
if (typeof mod === "string") {
|
|
this.globalEval(mod);
|
|
} else {
|
|
mod();
|
|
}
|
|
} else {
|
|
if (minispade.root && name.substr(0,minispade.root.length) !== minispade.root) {
|
|
return minispade.require(minispade.root+name);
|
|
} else {
|
|
throw "The module '" + name + "' could not be found";
|
|
}
|
|
}
|
|
}
|
|
|
|
return loaded;
|
|
},
|
|
|
|
requireAll: function(regex) {
|
|
for (var module in this.modules) {
|
|
if (!this.modules.hasOwnProperty(module)) { continue; }
|
|
if (regex && !regex.test(module)) { continue; }
|
|
minispade.require(module);
|
|
}
|
|
},
|
|
|
|
register: function(name, callback) {
|
|
minispade.modules[name] = callback;
|
|
}
|
|
};
|