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
JavaScript
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 */