Sha256: 0407c3457248198ea46e19094f77c7dc094d927aba5e59f3515a672f53ef6092

Contents?: true

Size: 1.35 KB

Versions: 69

Compression:

Stored size: 1.35 KB

Contents

var forOwn = require('./forOwn');
var isArray = require('../lang/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;
        }
    }

    module.exports = 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/object/deepMatches.js
trusty-festivity-extension-2.6.2 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.6.1 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.6 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.19 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.18 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.17 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.16 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.15 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.14 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.13 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.12 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.11 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.10 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.9 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.8 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.7 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.6 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.5 node_modules/bower/node_modules/mout/object/deepMatches.js
trusty-festivity-extension-2.5.4 node_modules/bower/node_modules/mout/object/deepMatches.js