"Fossies" - the Fresh Open Source Software Archive

Member "Atom/resources/app/apm/node_modules/lodash.restparam/index.js" (11 Apr 2017, 2319 Bytes) of package /windows/misc/atom-windows.zip:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) Javascript source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file.

    1 /**
    2  * lodash 3.6.1 (Custom Build) <https://lodash.com/>
    3  * Build: `lodash modern modularize exports="npm" -o ./`
    4  * Copyright 2012-2015 The Dojo Foundation <http://dojofoundation.org/>
    5  * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>
    6  * Copyright 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors
    7  * Available under MIT license <https://lodash.com/license>
    8  */
    9 
   10 /** Used as the `TypeError` message for "Functions" methods. */
   11 var FUNC_ERROR_TEXT = 'Expected a function';
   12 
   13 /* Native method references for those with the same name as other `lodash` methods. */
   14 var nativeMax = Math.max;
   15 
   16 /**
   17  * Creates a function that invokes `func` with the `this` binding of the
   18  * created function and arguments from `start` and beyond provided as an array.
   19  *
   20  * **Note:** This method is based on the [rest parameter](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/rest_parameters).
   21  *
   22  * @static
   23  * @memberOf _
   24  * @category Function
   25  * @param {Function} func The function to apply a rest parameter to.
   26  * @param {number} [start=func.length-1] The start position of the rest parameter.
   27  * @returns {Function} Returns the new function.
   28  * @example
   29  *
   30  * var say = _.restParam(function(what, names) {
   31  *   return what + ' ' + _.initial(names).join(', ') +
   32  *     (_.size(names) > 1 ? ', & ' : '') + _.last(names);
   33  * });
   34  *
   35  * say('hello', 'fred', 'barney', 'pebbles');
   36  * // => 'hello fred, barney, & pebbles'
   37  */
   38 function restParam(func, start) {
   39   if (typeof func != 'function') {
   40     throw new TypeError(FUNC_ERROR_TEXT);
   41   }
   42   start = nativeMax(start === undefined ? (func.length - 1) : (+start || 0), 0);
   43   return function() {
   44     var args = arguments,
   45         index = -1,
   46         length = nativeMax(args.length - start, 0),
   47         rest = Array(length);
   48 
   49     while (++index < length) {
   50       rest[index] = args[start + index];
   51     }
   52     switch (start) {
   53       case 0: return func.call(this, rest);
   54       case 1: return func.call(this, args[0], rest);
   55       case 2: return func.call(this, args[0], args[1], rest);
   56     }
   57     var otherArgs = Array(start + 1);
   58     index = -1;
   59     while (++index < start) {
   60       otherArgs[index] = args[index];
   61     }
   62     otherArgs[start] = rest;
   63     return func.apply(this, otherArgs);
   64   };
   65 }
   66 
   67 module.exports = restParam;