UNPKG

ramda-extension

Version:

Helpful functions built on top of the mighty Ramda

48 lines (40 loc) 2.19 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 _argumentsToList = _interopRequireDefault(require("./argumentsToList")); var _equalsLength = _interopRequireDefault(require("./equalsLength")); var _overHead = _interopRequireDefault(require("./overHead")); var pipe4 = (0, _ramda.curryN)(4, _ramda.pipe); var pipe2 = (0, _ramda.curryN)(2, _ramda.pipe); var call3 = (0, _ramda.curryN)(3, _ramda.call); var mapOrphans = (0, _ramda.o)(_ramda.map, (0, _ramda.when)((0, _equalsLength.default)(1))); var prependUndefined = (0, _ramda.o)(mapOrphans((0, _ramda.prepend)(undefined)), _ramda.transpose); var appendUndefined = (0, _ramda.o)(mapOrphans((0, _ramda.append)(undefined)), _ramda.transpose); var mapLength = (0, _ramda.map)(_ramda.length); var inputIsSameAsDefault = (0, _ramda.o)((0, _ramda.apply)(_ramda.equals), mapLength); var inputIsBigger = (0, _ramda.o)((0, _ramda.apply)(_ramda.lt), mapLength); var inputIsSmaller = (0, _ramda.o)((0, _ramda.apply)(_ramda.gt), mapLength); var transposeAndFillMissing = (0, _ramda.cond)([[inputIsSameAsDefault, _ramda.transpose], [inputIsBigger, prependUndefined], [inputIsSmaller, appendUndefined]]); var makeDefaultArgs = (0, _ramda.o)((0, _ramda.apply)(_ramda.call), (0, _overHead.default)(_ramda.defaultTo)); var transformationPipe = pipe4(_argumentsToList.default, transposeAndFillMissing, (0, _ramda.map)(makeDefaultArgs)); var createTransformationPipeWithSuppliedFn = (0, _ramda.o)(call3, (0, _ramda.o)(transformationPipe, _ramda.apply)); var waitForArguments = pipe2(_argumentsToList.default); var callInputsAndWaitForArguments = (0, _ramda.pipe)(_ramda.call, waitForArguments); /** * Creates default arguments for given function * * @func * @category Function * * @example * * R_.defaultArgs(['a', 'b'], R.concat)(undefined, 'c') // ac * */ var defaultArgs = (0, _ramda.useWith)((0, _ramda.flip)(callInputsAndWaitForArguments), [_ramda.identity, createTransformationPipeWithSuppliedFn]); var _default = defaultArgs; exports.default = _default;