UNPKG

iter-tools-es

Version:
38 lines (31 loc) 707 B
const { iterableCurry } = require('../../internal/iterable.js'); const { __interleave } = require('../$interleave/interleave.js'); function* byComparison({ compare }, all, ...peekrs) { let candidate; while (!all.done) { candidate = all.value; for (const peekr of peekrs) { if (!peekr.done && compare(peekr.value, candidate.value) < 0) { candidate = peekr; } } yield candidate.value; candidate.advance(); } } function __collate(sources, compare) { return __interleave(sources, byComparison, { compare }); } exports.__collate = __collate; const collate = /*#__PURE__*/iterableCurry(__collate, { variadic: true }); exports.collate = collate;