49 lines
		
	
	
		
			1016 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			49 lines
		
	
	
		
			1016 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | var baseLodash = require('./_baseLodash'), | ||
|  |     wrapperClone = require('./_wrapperClone'); | ||
|  | 
 | ||
|  | /** | ||
|  |  * Creates a clone of the chain sequence planting `value` as the wrapped value. | ||
|  |  * | ||
|  |  * @name plant | ||
|  |  * @memberOf _ | ||
|  |  * @since 3.2.0 | ||
|  |  * @category Seq | ||
|  |  * @param {*} value The value to plant. | ||
|  |  * @returns {Object} Returns the new `lodash` wrapper instance. | ||
|  |  * @example | ||
|  |  * | ||
|  |  * function square(n) { | ||
|  |  *   return n * n; | ||
|  |  * } | ||
|  |  * | ||
|  |  * var wrapped = _([1, 2]).map(square); | ||
|  |  * var other = wrapped.plant([3, 4]); | ||
|  |  * | ||
|  |  * other.value(); | ||
|  |  * // => [9, 16]
 | ||
|  |  * | ||
|  |  * wrapped.value(); | ||
|  |  * // => [1, 4]
 | ||
|  |  */ | ||
|  | function wrapperPlant(value) { | ||
|  |   var result, | ||
|  |       parent = this; | ||
|  | 
 | ||
|  |   while (parent instanceof baseLodash) { | ||
|  |     var clone = wrapperClone(parent); | ||
|  |     clone.__index__ = 0; | ||
|  |     clone.__values__ = undefined; | ||
|  |     if (result) { | ||
|  |       previous.__wrapped__ = clone; | ||
|  |     } else { | ||
|  |       result = clone; | ||
|  |     } | ||
|  |     var previous = clone; | ||
|  |     parent = parent.__wrapped__; | ||
|  |   } | ||
|  |   previous.__wrapped__ = value; | ||
|  |   return result; | ||
|  | } | ||
|  | 
 | ||
|  | module.exports = wrapperPlant; |