UNPKG

wonka

Version:

A fast push & pull stream library for Reason, loosely following the [callbag spec](https://github.com/callbag/callbag)

54 lines (48 loc) 1.81 kB
import * as Block from "bs-platform/lib/es6/block.js"; import * as Curry from "bs-platform/lib/es6/curry.js"; import * as Wonka_helpers from "../wonka_helpers.js"; function takeWhile(f) { return (function (source) { return (function (sink) { var ended = /* record */[/* contents */false]; var talkback = /* record */[/* contents */Wonka_helpers.talkbackPlaceholder]; Curry._1(source, (function (signal) { if (typeof signal === "number") { if (ended[0]) { return /* () */0; } else { ended[0] = true; return sink(/* End */0); } } else if (signal.tag) { if (ended[0]) { return /* () */0; } else if (f(signal[0])) { return sink(signal); } else { ended[0] = true; sink(/* End */0); return talkback[0](/* Close */1); } } else { talkback[0] = signal[0]; return sink(signal); } })); return sink(/* Start */Block.__(0, [(function (signal) { if (ended[0]) { return 0; } else if (signal) { ended[0] = true; return talkback[0](/* Close */1); } else { return talkback[0](/* Pull */0); } })])); }); }); } export { takeWhile , } /* No side effect */