travis-web/assets/scripts/vendor/minispade.js

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;
}
};