UNPKG

ramda-extension

Version:

Helpful functions built on top of the mighty Ramda

34 lines (33 loc) 1.97 kB
import { map, defaultTo, transpose, apply, call, lt, equals, when, pipe, curryN, o, flip, useWith, length, append, identity, prepend, gt, cond } from 'ramda'; import argumentsToList from './argumentsToList'; import equalsLength from './equalsLength'; import overHead from './overHead'; var pipe4 = /*#__PURE__*/curryN(4, pipe); var pipe2 = /*#__PURE__*/curryN(2, pipe); var call3 = /*#__PURE__*/curryN(3, call); var mapOrphans = /*#__PURE__*/o(map, /*#__PURE__*/when( /*#__PURE__*/equalsLength(1))); var prependUndefined = /*#__PURE__*/o( /*#__PURE__*/mapOrphans( /*#__PURE__*/prepend(undefined)), transpose); var appendUndefined = /*#__PURE__*/o( /*#__PURE__*/mapOrphans( /*#__PURE__*/append(undefined)), transpose); var mapLength = /*#__PURE__*/map(length); var inputIsSameAsDefault = /*#__PURE__*/o( /*#__PURE__*/apply(equals), mapLength); var inputIsBigger = /*#__PURE__*/o( /*#__PURE__*/apply(lt), mapLength); var inputIsSmaller = /*#__PURE__*/o( /*#__PURE__*/apply(gt), mapLength); var transposeAndFillMissing = /*#__PURE__*/cond([[inputIsSameAsDefault, transpose], [inputIsBigger, prependUndefined], [inputIsSmaller, appendUndefined]]); var makeDefaultArgs = /*#__PURE__*/o( /*#__PURE__*/apply(call), /*#__PURE__*/overHead(defaultTo)); var transformationPipe = /*#__PURE__*/pipe4(argumentsToList, transposeAndFillMissing, /*#__PURE__*/map(makeDefaultArgs)); var createTransformationPipeWithSuppliedFn = /*#__PURE__*/o(call3, /*#__PURE__*/o(transformationPipe, apply)); var waitForArguments = /*#__PURE__*/pipe2(argumentsToList); var callInputsAndWaitForArguments = /*#__PURE__*/pipe(call, waitForArguments); /** * Creates default arguments for given function * * @func * @category Function * * @example * * R_.defaultArgs(['a', 'b'], R.concat)(undefined, 'c') // ac * */ var defaultArgs = /*#__PURE__*/useWith( /*#__PURE__*/flip(callInputsAndWaitForArguments), [identity, createTransformationPipeWithSuppliedFn]); export default defaultArgs;