dist/regular/strict/dejavu.js
function parseInterfaces(interfaces, constructor) {
        var interfs = toArray(interfaces),
            x = interfs.length,
            interf,
            key,
            value;

        for (x -= 1; x >= 0; x -= 1) {
            interf = interfs[x];

            // Grab methods
            for (key in interf[$interface].methods) {

                value = interf[$interface].methods[key];

                 // Check if method is already defined as abstract and is compatible
                if (constructor[$abstract].methods[key]) {
                    if (!isFunctionCompatible(constructor[$abstract].methods[key], value)) {
                        throw new Error('Method "' + key + '( ' + value.signature + ')" described in interface "' + interf.prototype.$name + '" is not compatible with the one already defined in "' + constructor.prototype.$name + '": "' + key + '(' + constructor[$abstract].methods[key].signature + ')".');
                    }
                } else {
                    constructor[$abstract].methods[key] = interf[$interface].methods[key];
                }
            }

            // Grab static methods
            for (key in interf[$interface].staticMethods) {

                value = interf[$interface].staticMethods[key];

                // Check if method is already defined as abstract and is compatible
                if (constructor[$abstract].staticMethods[key]) {
                    if (!isFunctionCompatible(constructor[$abstract].staticMethods[key], value)) {
                        throw new Error('Static method "' + key + '( ' + value.signature + ')" described in interface "' + interf.prototype.$name + '" is not compatible with the one already defined in "' + constructor.prototype.$name + '": "' + key + '(' + constructor[$abstract].staticMethods[key].signature + ')".');
                    }
                } else {
                    constructor[$abstract].staticMethods[key] = value;
                }
            }
        }
    }
function parseInterfaces(interfaces, constructor) {
        var interfs = toArray(interfaces),
            x = interfs.length,
            interf,
            key,
            value;

        for (x -= 1; x >= 0; x -= 1) {
            interf = interfs[x];

            // Grab methods
            for (key in interf[$interface].methods) {

                value = interf[$interface].methods[key];

                 // Check if method is already defined as abstract and is compatible
                if (constructor[$abstract].methods[key]) {
                    if (!isFunctionCompatible(constructor[$abstract].methods[key], value)) {
                        throw new Error('Method "' + key + '( ' + value.signature + ')" described in interface "' + interf.prototype.$name + '" is not compatible with the one already defined in "' + constructor.prototype.$name + '": "' + key + '(' + constructor[$abstract].methods[key].signature + ')".');
                    }
                } else {
                    constructor[$abstract].methods[key] = interf[$interface].methods[key];
                }
            }

            // Grab static methods
            for (key in interf[$interface].staticMethods) {

                value = interf[$interface].staticMethods[key];

                // Check if method is already defined as abstract and is compatible
                if (constructor[$abstract].staticMethods[key]) {
                    if (!isFunctionCompatible(constructor[$abstract].staticMethods[key], value)) {
                        throw new Error('Static method "' + key + '( ' + value.signature + ')" described in interface "' + interf.prototype.$name + '" is not compatible with the one already defined in "' + constructor.prototype.$name + '": "' + key + '(' + constructor[$abstract].staticMethods[key].signature + ')".');
                    }
                } else {
                    constructor[$abstract].staticMethods[key] = value;
                }
            }
        }
    }
function parseInterfaces ( interfaces , constructor ) { var interfs = toArray ( interfaces ) , x = interfs . length , interf , key , value ; for ( x -= 1 ; x >= 0 ; x -= 1 ) { interf = interfs [ x ] ; // Grab methods for ( key in interf [ $interface ] . methods ) { value = interf [ $interface ] . methods [ key ] ; // Check if method is already defined as abstract and is compatible if ( constructor [ $abstract ] . methods [ key ] ) { if ( ! isFunctionCompatible ( constructor [ $abstract ] . methods [ key ] , value ) ) { throw new Error ( 'Method "' + key + '( ' + value . signature + ')" described in interface "' + interf . prototype . $name + '" is not compatible with the one already defined in "' + constructor . prototype . $name + '": "' + key + '(' + constructor [ $abstract ] . methods [ key ] . signature + ')".' ) ; } } else { constructor [ $abstract ] . methods [ key ] = interf [ $interface ] . methods [ key ] ; } } // Grab static methods for ( key in interf [ $interface ] . staticMethods ) { value = interf [ $interface ] . staticMethods [ key ] ; // Check if method is already defined as abstract and is compatible if ( constructor [ $abstract ] . staticMethods [ key ] ) { if ( ! isFunctionCompatible ( constructor [ $abstract ] . staticMethods [ key ] , value ) ) { throw new Error ( 'Static method "' + key + '( ' + value . signature + ')" described in interface "' + interf . prototype . $name + '" is not compatible with the one already defined in "' + constructor . prototype . $name + '": "' + key + '(' + constructor [ $abstract ] . staticMethods [ key ] . signature + ')".' ) ; } } else { constructor [ $abstract ] . staticMethods [ key ] = value ; } } } }
Parse interfaces.

@param {Array}    interfaces  The interfaces
@param {Function} constructor The constructor
Parse interfaces .