Projekt

Obecné

Profil

Stáhnout (1.07 KB) Statistiky
| Větev: | Revize:
1
var apply = require('./_apply');
2

    
3
/* Built-in method references for those with the same name as other `lodash` methods. */
4
var nativeMax = Math.max;
5

    
6
/**
7
 * A specialized version of `baseRest` which transforms the rest array.
8
 *
9
 * @private
10
 * @param {Function} func The function to apply a rest parameter to.
11
 * @param {number} [start=func.length-1] The start position of the rest parameter.
12
 * @param {Function} transform The rest array transform.
13
 * @returns {Function} Returns the new function.
14
 */
15
function overRest(func, start, transform) {
16
  start = nativeMax(start === undefined ? (func.length - 1) : start, 0);
17
  return function() {
18
    var args = arguments,
19
        index = -1,
20
        length = nativeMax(args.length - start, 0),
21
        array = Array(length);
22

    
23
    while (++index < length) {
24
      array[index] = args[start + index];
25
    }
26
    index = -1;
27
    var otherArgs = Array(start + 1);
28
    while (++index < start) {
29
      otherArgs[index] = args[index];
30
    }
31
    otherArgs[start] = transform(array);
32
    return apply(func, this, otherArgs);
33
  };
34
}
35

    
36
module.exports = overRest;
(238-238/571)