iter-tools-es
Version:
The iterable toolbox
40 lines (33 loc) • 955 B
JavaScript
const {
iterableCurry
} = require('../../internal/iterable.js');
const {
seqsToArray
} = require('../../internal/any-seq.js');
const {
__windowAhead
} = require('../$window-ahead/window-ahead.js');
const {
__startsWithAnySeq
} = require('../$starts-with-any-seq/starts-with-any-seq.js');
function __includesAnySeq(iterable, seqs, same = Object.is) {
const seqsArr = seqsToArray(seqs);
if (!seqsArr.length) return false;
if (seqsArr.find(seq => !seq.length)) return true;
const maxMatchLength = seqsArr.reduce((max, {
length
}) => Math.max(max, length), 1);
for (const buffer of __windowAhead(iterable, maxMatchLength)) {
if (__startsWithAnySeq(buffer, seqsArr, same)) {
return true;
}
}
return false;
}
exports.__includesAnySeq = __includesAnySeq;
const includesAnySeq = /*#__PURE__*/iterableCurry(__includesAnySeq, {
minArgs: 1,
maxArgs: 2,
reduces: true
});
exports.includesAnySeq = includesAnySeq;