UNPKG

ramda-extension

Version:

Helpful functions built on top of the mighty Ramda

53 lines (44 loc) 1.25 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _ramda = require("ramda"); var _isArray = _interopRequireDefault(require("./isArray")); var _isObject = _interopRequireDefault(require("./isObject")); var recursiveArray = function recursiveArray(r) { return (0, _ramda.o)(_ramda.flatten, (0, _ramda.map)(flattenValues))(r); }; var recursiveObject = function recursiveObject(r) { return (0, _ramda.o)(flattenValues, _ramda.values)(r); }; /** * Recursively flatten values from object and array. * * @func * @category List * * @param {Array|Object} value * @return {Array} array of values * * @sig {k: v} → [v] * * @example * * R_.flattenValues([ * 'hi', * { foo: 'bar' }, * { * foo: { * bar: ['baz', { foofoo: 'hi' }], * }, * }, * ['bar', 'hi'], * ['barbar', { hrun: 'hi' }], * ]) // ['hi','bar','baz','hi','hi','hi'] * */ var flattenValues = (0, _ramda.cond)([[_isArray.default, recursiveArray], [_isObject.default, recursiveObject], [_ramda.T, (0, _ramda.of)(Array)]]); var _default = flattenValues; exports.default = _default;