/**
- callbag-filter
*
- Callbag operator that conditionally lets data pass through. Works on either
- pullable or listenable sources. *
npm install callbag-filter
*- Example: *
- const fromIter = require('callbag-from-iter');
- const iterate = require('callbag-iterate');
- const filter = require('callbag-filter'); *
- const source = filter(x => x % 2)(fromIter([1,2,3,4,5])); *
- iterate(x => console.log(x))(source); // 1
- // 3
- // 5 */
const filter = condition => source => (start, sink) => { if (start !== 0) return; let talkback; source(0, (t, d) => { if (t === 0) { talkback = d; sink(t, d); } else if (t === 1) { if (condition(d)) sink(t, d); else talkback(1); } else sink(t, d); }); };
module.exports = filter;