iter-tools-es
Version:
The iterable toolbox
27 lines (22 loc) • 547 B
JavaScript
const {
iterableCurry
} = require('../../internal/iterable.js');
const {
__spliterate
} = require('../$spliterate/spliterate.js');
function* predicateSpliterator(split, {
predicate
}, source) {
let i = 0;
for (const value of source) {
yield predicate(value, i++) ? split : value;
}
}
function __splitWhen(source, predicate) {
return __spliterate(source, predicateSpliterator, {
predicate
});
}
exports.__splitWhen = __splitWhen;
const splitWhen = /*#__PURE__*/iterableCurry(__splitWhen);
exports.splitWhen = splitWhen;