-
Notifications
You must be signed in to change notification settings - Fork 3
๐ Callbag operator that combines consecutive values from the same source
License
staltz/callbag-scan
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
Repository files navigation
/** * callbag-scan * ------------ * * Callbag operator that combines consecutive values from the same source. * It's essentially like array `.reduce`, but delivers a new accumulated value * for each value from the callbag source. Works on either pullable or * listenable sources. * * `npm install callbag-scan` * * Example: * * const fromIter = require('callbag-from-iter'); * const forEach = require('callbag-for-each'); * const scan = require('callbag-scan'); * * const iterSource = fromIter([1,2,3,4,5]); * const scanned = scan((prev, x) => prev + x, 0)(iterSource); * * forEach(x => console.log(x))(scanned); // 1 * // 3 * // 6 * // 10 * // 15 */ function scan(reducer, seed) { let hasAcc = arguments.length === 2; return source => (start, sink) => { if (start !== 0) return; let acc = seed; source(0, (t, d) => { if (t === 1) { acc = hasAcc ? reducer(acc, d) : ((hasAcc = true), d); sink(1, acc); } else sink(t, d); }); }; } module.exports = scan;
About
๐ Callbag operator that combines consecutive values from the same source
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published