build/moon-unit.js
function buildClass(base, def) {

    var parent;

    if (def === void 0) {

        // If no base class is specified, then Object.prototype
        // is the parent prototype
        def = base;
        base = null;
        parent = Object.prototype;

    } else if (base === null) {

        // If the base is null, then then then the parent prototype is null
        parent = null;

    } else if (typeof base === "function") {

        parent = base.prototype;

        // Prototype must be null or an object
        if (parent !== null && Object(parent) !== parent)
            parent = void 0;
    }

    if (parent === void 0)
        throw new TypeError;

    // Create the prototype object
    var proto = Object.create(parent),
        statics = {};

    function __(target, obj) {

        if (!obj) mergeProperties(proto, target, false);
        else mergeProperties(target, obj, false);
    }

    __.static = function(obj) { return mergeProperties(statics, obj, false); };
    __.super = parent;
    __.csuper = base || Function.prototype;

    // Generate method collections, closing over super bindings
    def(__);

    var ctor = proto.constructor;

    // Set constructor's prototype
    ctor.prototype = proto;

    // Set class "static" methods
    forEachDesc(statics, function(name, desc) { return Object.defineProperty(ctor, name, desc); });

    // Inherit from base constructor
    if (base && ctor.__proto__)
        Object.setPrototypeOf(ctor, base);

    return ctor;
}
function buildClass(base, def) {

    var parent;

    if (def === void 0) {

        // If no base class is specified, then Object.prototype
        // is the parent prototype
        def = base;
        base = null;
        parent = Object.prototype;

    } else if (base === null) {

        // If the base is null, then then then the parent prototype is null
        parent = null;

    } else if (typeof base === "function") {

        parent = base.prototype;

        // Prototype must be null or an object
        if (parent !== null && Object(parent) !== parent)
            parent = void 0;
    }

    if (parent === void 0)
        throw new TypeError;

    // Create the prototype object
    var proto = Object.create(parent),
        statics = {};

    function __(target, obj) {

        if (!obj) mergeProperties(proto, target, false);
        else mergeProperties(target, obj, false);
    }

    __.static = function(obj) { return mergeProperties(statics, obj, false); };
    __.super = parent;
    __.csuper = base || Function.prototype;

    // Generate method collections, closing over super bindings
    def(__);

    var ctor = proto.constructor;

    // Set constructor's prototype
    ctor.prototype = proto;

    // Set class "static" methods
    forEachDesc(statics, function(name, desc) { return Object.defineProperty(ctor, name, desc); });

    // Inherit from base constructor
    if (base && ctor.__proto__)
        Object.setPrototypeOf(ctor, base);

    return ctor;
}
function buildClass ( base , def ) { var parent ; if ( def === void 0 ) { // If no base class is specified, then Object.prototype // is the parent prototype def = base ; base = null ; parent = Object . prototype ; } else if ( base === null ) { // If the base is null, then then then the parent prototype is null parent = null ; } else if ( typeof base === "function" ) { parent = base . prototype ; // Prototype must be null or an object if ( parent !== null && Object ( parent ) !== parent ) parent = void 0 ; } if ( parent === void 0 ) throw new TypeError ; // Create the prototype object var proto = Object . create ( parent ) , statics = { } ; function __ ( target , obj ) { if ( ! obj ) mergeProperties ( proto , target , false ) ; else mergeProperties ( target , obj , false ) ; } __ . static = function ( obj ) { return mergeProperties ( statics , obj , false ) ; } ; __ . super = parent ; __ . csuper = base || Function . prototype ; // Generate method collections, closing over super bindings def ( __ ) ; var ctor = proto . constructor ; // Set constructor's prototype ctor . prototype = proto ; // Set class "static" methods forEachDesc ( statics , function ( name , desc ) { return Object . defineProperty ( ctor , name , desc ) ; } ) ; // Inherit from base constructor if ( base && ctor . __proto__ ) Object . setPrototypeOf ( ctor , base ) ; return ctor ; }
Builds a class
Builds a class