moltres-utils
Version:
Utils for Moltres apps
70 lines (61 loc) • 1.81 kB
JavaScript
require("core-js/modules/es6.object.define-property");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _curryN = _interopRequireDefault(require("../common/curryN"));
var _defn = _interopRequireDefault(require("../common/defn"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Walk using the given walkee and iteratee functions.
*
* @function
* @since v0.0.4
* @category data
* @sig
* @param {Function} walkee The function responsible for returning the next value in the walk
* @param {Function} iteratee The iterator function.
* @returns {*} The final value returned by the walk
* @example
*
* const depthFirstWalkee = (value, iteratee, recur) => {
* if (isObject(value)) {
* forEachObjIndexed((child) => {
* recur(child, iteratee)
* }, value)
* }
* iteratee(value, data)
* }
* let result = []
* walk(
* depthFirstWalkee,
* (value) => result.push(value),
* {
* a: {
* b: 'b'
* }
* }
* )
* console.log(result)
* //=> [
* 'b',
* { b: 'b' },
* { a: { b: 'b' } }
* ]
*/
var walk = (0, _curryN.default)(3, (0, _defn.default)('walk', function (walkee, iteratee) {
var walker = function walker() {
for (var _len2 = arguments.length, pass = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
pass[_key2] = arguments[_key2];
}
return walkee.apply(void 0, pass.concat([walker]));
};
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
args[_key - 2] = arguments[_key];
}
return walkee.apply(void 0, args.concat([iteratee, walker]));
}));
var _default = walk;
exports.default = _default;
//# sourceMappingURL=walk.js.map
;