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