conforms.js
 1  var baseClone = require('./_baseClone'),
 2      baseConforms = require('./_baseConforms');
 3  
 4  /** Used to compose bitmasks for cloning. */
 5  var CLONE_DEEP_FLAG = 1;
 6  
 7  /**
 8   * Creates a function that invokes the predicate properties of `source` with
 9   * the corresponding property values of a given object, returning `true` if
10   * all predicates return truthy, else `false`.
11   *
12   * **Note:** The created function is equivalent to `_.conformsTo` with
13   * `source` partially applied.
14   *
15   * @static
16   * @memberOf _
17   * @since 4.0.0
18   * @category Util
19   * @param {Object} source The object of property predicates to conform to.
20   * @returns {Function} Returns the new spec function.
21   * @example
22   *
23   * var objects = [
24   *   { 'a': 2, 'b': 1 },
25   *   { 'a': 1, 'b': 2 }
26   * ];
27   *
28   * _.filter(objects, _.conforms({ 'b': function(n) { return n > 1; } }));
29   * // => [{ 'a': 1, 'b': 2 }]
30   */
31  function conforms(source) {
32    return baseConforms(baseClone(source, CLONE_DEEP_FLAG));
33  }
34  
35  module.exports = conforms;