update
This commit is contained in:
parent
d9becc67b6
commit
9308795b8b
964 changed files with 104265 additions and 16 deletions
82
node_modules/ramda/src/internal/_reduce.js
generated
vendored
Normal file
82
node_modules/ramda/src/internal/_reduce.js
generated
vendored
Normal file
|
@ -0,0 +1,82 @@
|
|||
var _isArrayLike =
|
||||
/*#__PURE__*/
|
||||
require("./_isArrayLike");
|
||||
|
||||
var _xwrap =
|
||||
/*#__PURE__*/
|
||||
require("./_xwrap");
|
||||
|
||||
var bind =
|
||||
/*#__PURE__*/
|
||||
require("../bind");
|
||||
|
||||
function _arrayReduce(xf, acc, list) {
|
||||
var idx = 0;
|
||||
var len = list.length;
|
||||
|
||||
while (idx < len) {
|
||||
acc = xf['@@transducer/step'](acc, list[idx]);
|
||||
|
||||
if (acc && acc['@@transducer/reduced']) {
|
||||
acc = acc['@@transducer/value'];
|
||||
break;
|
||||
}
|
||||
|
||||
idx += 1;
|
||||
}
|
||||
|
||||
return xf['@@transducer/result'](acc);
|
||||
}
|
||||
|
||||
function _iterableReduce(xf, acc, iter) {
|
||||
var step = iter.next();
|
||||
|
||||
while (!step.done) {
|
||||
acc = xf['@@transducer/step'](acc, step.value);
|
||||
|
||||
if (acc && acc['@@transducer/reduced']) {
|
||||
acc = acc['@@transducer/value'];
|
||||
break;
|
||||
}
|
||||
|
||||
step = iter.next();
|
||||
}
|
||||
|
||||
return xf['@@transducer/result'](acc);
|
||||
}
|
||||
|
||||
function _methodReduce(xf, acc, obj, methodName) {
|
||||
return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc));
|
||||
}
|
||||
|
||||
var symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';
|
||||
|
||||
function _reduce(fn, acc, list) {
|
||||
if (typeof fn === 'function') {
|
||||
fn = _xwrap(fn);
|
||||
}
|
||||
|
||||
if (_isArrayLike(list)) {
|
||||
return _arrayReduce(fn, acc, list);
|
||||
}
|
||||
|
||||
if (typeof list['fantasy-land/reduce'] === 'function') {
|
||||
return _methodReduce(fn, acc, list, 'fantasy-land/reduce');
|
||||
}
|
||||
|
||||
if (list[symIterator] != null) {
|
||||
return _iterableReduce(fn, acc, list[symIterator]());
|
||||
}
|
||||
|
||||
if (typeof list.next === 'function') {
|
||||
return _iterableReduce(fn, acc, list);
|
||||
}
|
||||
|
||||
if (typeof list.reduce === 'function') {
|
||||
return _methodReduce(fn, acc, list, 'reduce');
|
||||
}
|
||||
|
||||
throw new TypeError('reduce: list must be array or iterable');
|
||||
}
|
||||
|
||||
module.exports = _reduce;
|
Loading…
Add table
Add a link
Reference in a new issue