diff options
Diffstat (limited to 'deps/npm/node_modules/cli-table2/node_modules/lodash/internal/createAggregator.js')
-rw-r--r-- | deps/npm/node_modules/cli-table2/node_modules/lodash/internal/createAggregator.js | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/deps/npm/node_modules/cli-table2/node_modules/lodash/internal/createAggregator.js b/deps/npm/node_modules/cli-table2/node_modules/lodash/internal/createAggregator.js new file mode 100644 index 0000000000..c3d3cec6e1 --- /dev/null +++ b/deps/npm/node_modules/cli-table2/node_modules/lodash/internal/createAggregator.js @@ -0,0 +1,35 @@ +var baseCallback = require('./baseCallback'), + baseEach = require('./baseEach'), + isArray = require('../lang/isArray'); + +/** + * Creates a `_.countBy`, `_.groupBy`, `_.indexBy`, or `_.partition` function. + * + * @private + * @param {Function} setter The function to set keys and values of the accumulator object. + * @param {Function} [initializer] The function to initialize the accumulator object. + * @returns {Function} Returns the new aggregator function. + */ +function createAggregator(setter, initializer) { + return function(collection, iteratee, thisArg) { + var result = initializer ? initializer() : {}; + iteratee = baseCallback(iteratee, thisArg, 3); + + if (isArray(collection)) { + var index = -1, + length = collection.length; + + while (++index < length) { + var value = collection[index]; + setter(result, value, iteratee(value, index, collection), collection); + } + } else { + baseEach(collection, function(value, key, collection) { + setter(result, value, iteratee(value, key, collection), collection); + }); + } + return result; + }; +} + +module.exports = createAggregator; |