wrapperPlant.js 981 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. var baseLodash = require('../internal/baseLodash'),
  2. wrapperClone = require('../internal/wrapperClone');
  3. /**
  4. * Creates a clone of the chained sequence planting `value` as the wrapped value.
  5. *
  6. * @name plant
  7. * @memberOf _
  8. * @category Chain
  9. * @returns {Object} Returns the new `lodash` wrapper instance.
  10. * @example
  11. *
  12. * var array = [1, 2];
  13. * var wrapped = _(array).map(function(value) {
  14. * return Math.pow(value, 2);
  15. * });
  16. *
  17. * var other = [3, 4];
  18. * var otherWrapped = wrapped.plant(other);
  19. *
  20. * otherWrapped.value();
  21. * // => [9, 16]
  22. *
  23. * wrapped.value();
  24. * // => [1, 4]
  25. */
  26. function wrapperPlant(value) {
  27. var result,
  28. parent = this;
  29. while (parent instanceof baseLodash) {
  30. var clone = wrapperClone(parent);
  31. if (result) {
  32. previous.__wrapped__ = clone;
  33. } else {
  34. result = clone;
  35. }
  36. var previous = clone;
  37. parent = parent.__wrapped__;
  38. }
  39. previous.__wrapped__ = value;
  40. return result;
  41. }
  42. module.exports = wrapperPlant;