parroit/crafter

View on GitHub
lib/body-concat.jst

Summary

Maintainability
Test Coverage
function module_preamble() {
    var loadedModules = {};
    var modulesFactories = {};
    define_modules();
    <%= exportCode %>

    //jshint ignore:start
    function define_modules() {%= modules %}
    //jshint ignore:end
    
    function require(id) {
        if (id in loadedModules) {
            return loadedModules[id].exports;
        }

        if (!(id in modulesFactories)) {
            throw new Error('Module "' + id + '" not found.');
        }

        var exports = {};
        var module = {
            exports: exports,
            id: id
        };
        var factory = modulesFactories[id];
        
        loadedModules[id] = module;

        factory(module, exports);
        
        return module.exports;
    }

    function _define(id, factory) {
        modulesFactories[id] = factory;
    }
}

(function (root, factory) {
    var exported = factory();

    if (typeof define === 'function' && define.amd) {
        define('<%= outputName %>', [], function () {
            return exported;
        });
    } else if (typeof exports === 'object') {
        module.exports = exported;
    } else {
        root['<%= outputName %>'] = factory();
    }
}(this, module_preamble));