5b1165741006ad3dada0c81dcfb243f787376d23
[yaffs-website] / createOver.js
1 var apply = require('./apply'),
2     arrayMap = require('./arrayMap'),
3     baseFlatten = require('./baseFlatten'),
4     baseIteratee = require('./baseIteratee'),
5     rest = require('../rest');
6
7 /**
8  * Creates a function like `_.over`.
9  *
10  * @private
11  * @param {Function} arrayFunc The function to iterate over iteratees.
12  * @returns {Function} Returns the new invoker function.
13  */
14 function createOver(arrayFunc) {
15   return rest(function(iteratees) {
16     iteratees = arrayMap(baseFlatten(iteratees), baseIteratee);
17     return rest(function(args) {
18       var thisArg = this;
19       return arrayFunc(iteratees, function(iteratee) {
20         return apply(iteratee, thisArg, args);
21       });
22     });
23   });
24 }
25
26 module.exports = createOver;