Projekt

Obecné

Profil

Stáhnout (1.02 KB) Statistiky
| Větev: | Revize:
1
var baseRest = require('./_baseRest'),
2
    isIterateeCall = require('./_isIterateeCall');
3

    
4
/**
5
 * Creates a function like `_.assign`.
6
 *
7
 * @private
8
 * @param {Function} assigner The function to assign values.
9
 * @returns {Function} Returns the new assigner function.
10
 */
11
function createAssigner(assigner) {
12
  return baseRest(function(object, sources) {
13
    var index = -1,
14
        length = sources.length,
15
        customizer = length > 1 ? sources[length - 1] : undefined,
16
        guard = length > 2 ? sources[2] : undefined;
17

    
18
    customizer = (assigner.length > 3 && typeof customizer == 'function')
19
      ? (length--, customizer)
20
      : undefined;
21

    
22
    if (guard && isIterateeCall(sources[0], sources[1], guard)) {
23
      customizer = length < 3 ? undefined : customizer;
24
      length = 1;
25
    }
26
    object = Object(object);
27
    while (++index < length) {
28
      var source = sources[index];
29
      if (source) {
30
        assigner(object, source, index, customizer);
31
      }
32
    }
33
    return object;
34
  });
35
}
36

    
37
module.exports = createAssigner;
(159-159/571)