Mini-Require

A shim for RequireJS which we (unfortunately) have to use for our legacy crap

by Patrick Hund

JavaScript

(function ($) {
    var registry = {
        jquery: $
    };
    
    window.define = function (name, dependencyNames, factory) {
        var module;
        
        //Allow for anonymous functions
        if (typeof name !== "string") {
            //Adjust args appropriately
            factory = dependencyNames;
            dependencyNames = name;
            name = null;
        }
        
        // allow define(function()..)
        if ($.isFunction(dependencyNames)) {
            factory = dependencyNames;
            dependencyNames = [];
        }
        
        module = factory.apply(null, getDependencies(dependencyNames));
        
        if (name !== null) {
            registry[name] = module;
        }
    };

    window.require = function(dependencyNames, callback) {
        callback.apply(null, getDependencies(dependencyNames));
    };

    function getDependencies(dependencyNames) {
        var dependencies = [];
        
        $.each(dependencyNames, function () {
            dependencies.push(registry[this]);
        });
        
        if (dependencies.length === 0) {
            dependencies.push($);
        }
        
        return dependencies;
    }
}(jQuery));

define("Cookie", ["jquery"], function ($) {
    function Cookie() {};
    Cookie.prototype.hello = function () {
        alert("Cooookies!");
    };
    return Cookie;
});

define("libs/bower-libs/mde-parking/js/Parking", [
    "jquery",
    "Cookie"
], function ($, Cookie) {
    console.log(typeof Cookie);
    function Parking() {
        this.cookie = new Cookie();
    };
    Parking.prototype.hi = function () {
        this.cookie.hello();
    }
    return Parking;
});

require([
    "jquery",
    "libs/bower-libs/mde-parking/js/Parking"
], function ($, Parking) {
    var parking = new Parking();
    parking.hi();
});