Sha256: b7f529c9f3447aa74c6d87a7ac015315ef433d46df2f1a93e370e9c5630816dd

Contents?: true

Size: 1.34 KB

Versions: 69

Compression:

Stored size: 1.34 KB

Contents

define(['./forOwn', '../lang/isArray'], function(forOwn, isArray) {

    function containsMatch(array, pattern) {
        var i = -1, length = array.length;
        while (++i < length) {
            if (deepMatches(array[i], pattern)) {
                return true;
            }
        }

        return false;
    }

    function matchArray(target, pattern) {
        var i = -1, patternLength = pattern.length;
        while (++i < patternLength) {
            if (!containsMatch(target, pattern[i])) {
                return false;
            }
        }

        return true;
    }

    function matchObject(target, pattern) {
        var result = true;
        forOwn(pattern, function(val, key) {
            if (!deepMatches(target[key], val)) {
                // Return false to break out of forOwn early
                return (result = false);
            }
        });

        return result;
    }

    /**
     * Recursively check if the objects match.
     */
    function deepMatches(target, pattern){
        if (target && typeof target === 'object') {
            if (isArray(target) && isArray(pattern)) {
                return matchArray(target, pattern);
            } else {
                return matchObject(target, pattern);
            }
        } else {
            return target === pattern;
        }
    }

    return deepMatches;

});

Version data entries

69 entries across 69 versions & 2 rubygems

Version Path
trusty-festivity-extension-2.6.3 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.6.2 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.6.1 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.6 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.19 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.18 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.17 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.16 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.15 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.14 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.13 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.12 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.11 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.10 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.9 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.8 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.7 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.6 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.5 node_modules/bower/node_modules/mout/src/object/deepMatches.js
trusty-festivity-extension-2.5.4 node_modules/bower/node_modules/mout/src/object/deepMatches.js