jsOMS/Autoloader.js

60 lines
1.7 KiB
JavaScript

(function (jsOMS, undefined) {
jsOMS.Autoloader = {};
jsOMS.Autoloader.loaded = [];
jsOMS.Autoloader.namespaced = [];
jsOMS.Autoloader.defineNamespace = function(namespace)
{
if(jsOMS.Autoloader.namespaced.indexOf(namespace) === -1) {
let paths = namespace.split('.');
paths.splice(0, 1);
let length = paths.length,
current = jsOMS;
for(let i = 0; i < length; i++) {
if(typeof current[paths[i]] === 'undefined') {
current[paths[i]] = {};
}
current = current[paths[i]];
}
jsOMS.Autoloader.namespaced.push(namespace);
}
};
jsOMS.Autoloader.initPreloaded = function()
{
let scripts = document.getElementsByTagName('script'),
length = scripts.length;
for(let i = 0; i < length; i++) {
scripts[i].src.replace(URL + '/', '');
if(jsOMS.Autoloader.loaded.indexOf(scripts[i].src) === -1) {
jsOMS.Autoloader.loaded.push(scripts[i].src);
}
}
};
jsOMS.Autoloader.setPreloaded = function(file)
{
if(jsOMS.Autoloader.loaded.indexOf(file) === -1) {
jsOMS.Autoloader.loaded.push(file);
}
};
jsOMS.Autoloader.include = function(file, callback)
{
let length = file.length;
for(let i = 0; i < length; i++) {
if(jsOMS.Autoloader.loaded.indexOf(file) === -1) {
// todo: implement asset loading and pass callback
jsOMS.Autoloader.loaded.push(file);
}
}
};
}(window.jsOMS = window.jsOMS || {}));