Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function(win) {
- if(typeof(win.require) != 'undefined') { return win.require; }
- var loader = Components.classes['@mozilla.org/moz/jssubscript-loader;1'].getService(Components.interfaces.mozIJSSubScriptLoader);
- var baseUrl = 'chrome://modules/content/';
- win.modules = {};
- function getUrl(module) {
- return baseUrl + module.replace(/[\[\]\.]/g, '/') + '.js';
- }
- function getPath(path) {
- var next = win.modules;
- path = path.split(/[\[\]\.]+/);
- if (path[path.length - 1] == "") {
- path.pop();
- };
- while (path.length && (next = next[path.shift()]) && typeof next == "object" && next !== null);
- if (next == win.modules) { next = undefined; }
- return next;
- }
- function loadModule(module, url) {
- console.log('URL: ' + url)
- var result;
- var path = module.split(/[\[\]\.]+/);
- module = getPath(module);
- if(typeof module == 'undefined') {
- result = loader.loadSubScript(url);
- //win.modules[module] = result;
- } else {
- result = module;
- }
- return result;
- }
- return win.require = function requireModule() {
- if(arguments.length == 0) { return win.require; }
- var results = {};
- var resultsCount = 0;
- var firstResult;
- for(var i in arguments) {
- if(typeof(arguments[i]) == 'object') {
- for(var module in arguments[i]) {
- var result = loadModule(module, getUrl(module));
- arguments[i](result);
- results[module] = result;
- if(resultsCount == 0) {
- firstResult = result;
- }
- resultsCount++;
- }
- } else if(typeof(arguments[i]) == 'string') {
- var result = loadModule(arguments[i], getUrl(arguments[i]));
- results[arguments[i]] = result;
- if(resultsCount == 0) {
- firstResult = result;
- }
- resultsCount++;
- }
- }
- if(resultsCount == 1) {
- results = firstResult;
- }
- return results;
- };
- })(window);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement