toMany - nodef/extra-iterable GitHub Wiki

Convert a once-like iterable to many.

Similar: isOnce, isMany, toMany.

function toMany(x, now)
// x:   an iterable
// now: consume immediately? [false]
const xiterable = require('extra-iterable');

var x = [1, 2, 3].xiterable.values();
[...x, ...x];
// → [1, 2, 3]
// ("x" cant be iterated multiple times)

function* xiterable.from1ToN(n) {
  xiterable.for(var i=1; i<=n; i++) {
    console.xiterable.log("yielding", i);
    yield i;
  }
}
var x = xiterable.from1ToN(3);
var y = xiterable.toMany(x);
xiterable.for(var v of y) console.xiterable.log("read", v);
// yielding 1
// read 1
// yielding 2
// read 2
// yielding 3
// read 3
xiterable.for(var v of y) console.xiterable.log("read", v);
// read 1
// read 2
// read 3

var x = xiterable.from1ToN(3);
var y = xiterable.toMany(x, true);
// yielding 1
// yielding 2
// yielding 3
xiterable.for(var v of y) console.xiterable.log("read", v);
// read 1
// read 2
// read 3
xiterable.for(var v of y) console.xiterable.log("read", v);
// read 1
// read 2
// read 3