mirror of
https://github.com/swc-project/swc.git
synced 2024-12-21 04:32:01 +03:00
53 lines
1.8 KiB
TypeScript
53 lines
1.8 KiB
TypeScript
|
// Loaded from https://deno.land/x/ramda@v0.27.2/source/internal/_curry3.js
|
||
|
|
||
|
|
||
|
import _curry1 from './_curry1.js';
|
||
|
import _curry2 from './_curry2.js';
|
||
|
import _isPlaceholder from './_isPlaceholder.js';
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Optimized internal three-arity curry function.
|
||
|
*
|
||
|
* @private
|
||
|
* @category Function
|
||
|
* @param {Function} fn The function to curry.
|
||
|
* @return {Function} The curried function.
|
||
|
*/
|
||
|
export default function _curry3(fn) {
|
||
|
return function f3(a, b, c) {
|
||
|
switch (arguments.length) {
|
||
|
case 0:
|
||
|
return f3;
|
||
|
case 1:
|
||
|
return _isPlaceholder(a)
|
||
|
? f3
|
||
|
: _curry2(function(_b, _c) { return fn(a, _b, _c); });
|
||
|
case 2:
|
||
|
return _isPlaceholder(a) && _isPlaceholder(b)
|
||
|
? f3
|
||
|
: _isPlaceholder(a)
|
||
|
? _curry2(function(_a, _c) { return fn(_a, b, _c); })
|
||
|
: _isPlaceholder(b)
|
||
|
? _curry2(function(_b, _c) { return fn(a, _b, _c); })
|
||
|
: _curry1(function(_c) { return fn(a, b, _c); });
|
||
|
default:
|
||
|
return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c)
|
||
|
? f3
|
||
|
: _isPlaceholder(a) && _isPlaceholder(b)
|
||
|
? _curry2(function(_a, _b) { return fn(_a, _b, c); })
|
||
|
: _isPlaceholder(a) && _isPlaceholder(c)
|
||
|
? _curry2(function(_a, _c) { return fn(_a, b, _c); })
|
||
|
: _isPlaceholder(b) && _isPlaceholder(c)
|
||
|
? _curry2(function(_b, _c) { return fn(a, _b, _c); })
|
||
|
: _isPlaceholder(a)
|
||
|
? _curry1(function(_a) { return fn(_a, b, c); })
|
||
|
: _isPlaceholder(b)
|
||
|
? _curry1(function(_b) { return fn(a, _b, c); })
|
||
|
: _isPlaceholder(c)
|
||
|
? _curry1(function(_c) { return fn(a, b, _c); })
|
||
|
: fn(a, b, c);
|
||
|
}
|
||
|
};
|
||
|
}
|