source: frontend/node_modules/underscore/modules/restArguments.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 11 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 1.1 KB
Line 
1// Some functions take a variable number of arguments, or a few expected
2// arguments at the beginning and then a variable number of values to operate
3// on. This helper accumulates all remaining arguments past the function’s
4// argument length (or an explicit `startIndex`), into an array that becomes
5// the last argument. Similar to ES6’s "rest parameter".
6export default function restArguments(func, startIndex) {
7 startIndex = startIndex == null ? func.length - 1 : +startIndex;
8 return function() {
9 var length = Math.max(arguments.length - startIndex, 0),
10 rest = Array(length),
11 index = 0;
12 for (; index < length; index++) {
13 rest[index] = arguments[index + startIndex];
14 }
15 switch (startIndex) {
16 case 0: return func.call(this, rest);
17 case 1: return func.call(this, arguments[0], rest);
18 case 2: return func.call(this, arguments[0], arguments[1], rest);
19 }
20 var args = Array(startIndex + 1);
21 for (index = 0; index < startIndex; index++) {
22 args[index] = arguments[index];
23 }
24 args[startIndex] = rest;
25 return func.apply(this, args);
26 };
27}
Note: See TracBrowser for help on using the repository browser.