ramda-extension
Version:
Helpful functions built on top of the mighty Ramda
34 lines (33 loc) • 1.97 kB
JavaScript
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;