view js/require.js @ 102:00b02ba5236c

made all delegates have a dotted name (namespaced), modified black-box.js a bit
author Atul Varma <avarma@mozilla.com>
date Wed, 28 Apr 2010 20:06:26 -0700
parents d3ed74176b4d
children
line wrap: on
line source

var Require = {
  modules: {},
  build: function build(modules, moduleExports) {
    if (!modules)
      modules = this.modules;

    if (!moduleExports)
      moduleExports = {};

    return function require(module) {
      if (!(module in moduleExports)) {
        if (!(module in modules))
          throw new Error("module not found: " + module);
        var exports = {};
        var globalScope = {};
        modules[module].call(globalScope, exports, require);
        moduleExports[module] = exports;
      }
      return moduleExports[module];
    };
  },
  preload: function preload(document, scripts, cb) {
    var scriptsLeft = scripts.length;

    function onScriptLoaded() {
      scriptsLeft--;
      if (!scriptsLeft)
        cb();
    };

    scripts.forEach(
      function(scriptName) {
        var script = document.createElement("script");

        script.src = scriptName;
        script.onload = onScriptLoaded;
        document.body.appendChild(script);
      });
  }
};

function require(module) {
  throw new Error("require() not available at global scope: " + module);
}