source: node_modules/ramda-adjunct/lib/fnull.js

main
Last change on this file was d24f17c, checked in by Aleksandar Panovski <apano77@…>, 15 months ago

Initial commit

  • Property mode set to 100644
File size: 1.5 KB
Line 
1"use strict";
2
3exports.__esModule = true;
4exports["default"] = void 0;
5var _ramda = require("ramda");
6var _defaultWhen = _interopRequireDefault(require("./defaultWhen"));
7var _mapIndexed = _interopRequireDefault(require("./mapIndexed"));
8function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
9/**
10 * Returns a function which is called with the given arguments. If any of the given arguments are null or undefined,
11 * the corresponding default value for that argument is used instead.
12 *
13 * @func fnull
14 * @memberOf RA
15 * @category Function
16 * @sig (a ... -> b) -> [c] -> a ... | c -> b
17 * @param {Function} function to be executed
18 * @param {Array} defaults default arguments
19 * @return {Function} will apply provided arguments or default ones
20 * @example
21 *
22 * const addDefaults = RA.fnull((a, b) => a + b, [4, 5])
23 *
24 * addDefaults(1, 2); // => 3
25 * addDefaults(null, 2); // => 6
26 * addDefaults(2, null); // => 7
27 * addDefaults(undefined, undefined); // => 9
28 */
29
30var fnull = (0, _ramda.curry)(function (fn, defaults) {
31 return (0, _ramda.curryN)(fn.length, function () {
32 for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
33 args[_key] = arguments[_key];
34 }
35 var argsWithDefaults = (0, _mapIndexed["default"])(function (val, idx) {
36 return (0, _defaultWhen["default"])(_ramda.isNil, defaults[idx], val);
37 }, args);
38 return (0, _ramda.apply)(fn, argsWithDefaults);
39 });
40});
41var _default = fnull;
42exports["default"] = _default;
Note: See TracBrowser for help on using the repository browser.