time-to-botec

Benchmark sampling in different programming languages
Log | Files | Refs | README

plant.js (1016B)


      1 var baseLodash = require('./_baseLodash'),
      2     wrapperClone = require('./_wrapperClone');
      3 
      4 /**
      5  * Creates a clone of the chain sequence planting `value` as the wrapped value.
      6  *
      7  * @name plant
      8  * @memberOf _
      9  * @since 3.2.0
     10  * @category Seq
     11  * @param {*} value The value to plant.
     12  * @returns {Object} Returns the new `lodash` wrapper instance.
     13  * @example
     14  *
     15  * function square(n) {
     16  *   return n * n;
     17  * }
     18  *
     19  * var wrapped = _([1, 2]).map(square);
     20  * var other = wrapped.plant([3, 4]);
     21  *
     22  * other.value();
     23  * // => [9, 16]
     24  *
     25  * wrapped.value();
     26  * // => [1, 4]
     27  */
     28 function wrapperPlant(value) {
     29   var result,
     30       parent = this;
     31 
     32   while (parent instanceof baseLodash) {
     33     var clone = wrapperClone(parent);
     34     clone.__index__ = 0;
     35     clone.__values__ = undefined;
     36     if (result) {
     37       previous.__wrapped__ = clone;
     38     } else {
     39       result = clone;
     40     }
     41     var previous = clone;
     42     parent = parent.__wrapped__;
     43   }
     44   previous.__wrapped__ = value;
     45   return result;
     46 }
     47 
     48 module.exports = wrapperPlant;