_flatCat.js•1.01 kB
var _forceReduced = require('./_forceReduced');
var _reduce = require('./_reduce');
var _xfBase = require('./_xfBase');
var isArrayLike = require('../isArrayLike');
module.exports = (function() {
var preservingReduced = function(xf) {
return {
'@@transducer/init': _xfBase.init,
'@@transducer/result': function(result) {
return xf['@@transducer/result'](result);
},
'@@transducer/step': function(result, input) {
var ret = xf['@@transducer/step'](result, input);
return ret['@@transducer/reduced'] ? _forceReduced(ret) : ret;
}
};
};
return function _xcat(xf) {
var rxf = preservingReduced(xf);
return {
'@@transducer/init': _xfBase.init,
'@@transducer/result': function(result) {
return rxf['@@transducer/result'](result);
},
'@@transducer/step': function(result, input) {
return !isArrayLike(input) ? _reduce(rxf, result, [input]) : _reduce(rxf, result, input);
}
};
};
}());