summaryrefslogtreecommitdiff
path: root/deps/npm/node_modules/cli-table2/node_modules/lodash/internal/createAggregator.js
diff options
context:
space:
mode:
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.js35
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;