You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

25 lines
857 B

4 years ago
  1. var LazyWrapper = require('./_LazyWrapper'),
  2. arrayPush = require('./_arrayPush'),
  3. arrayReduce = require('./_arrayReduce');
  4. /**
  5. * The base implementation of `wrapperValue` which returns the result of
  6. * performing a sequence of actions on the unwrapped `value`, where each
  7. * successive action is supplied the return value of the previous.
  8. *
  9. * @private
  10. * @param {*} value The unwrapped value.
  11. * @param {Array} actions Actions to perform to resolve the unwrapped value.
  12. * @returns {*} Returns the resolved value.
  13. */
  14. function baseWrapperValue(value, actions) {
  15. var result = value;
  16. if (result instanceof LazyWrapper) {
  17. result = result.value();
  18. }
  19. return arrayReduce(actions, function(result, action) {
  20. return action.func.apply(action.thisArg, arrayPush([result], action.args));
  21. }, result);
  22. }
  23. module.exports = baseWrapperValue;