Skip to content

Instantly share code, notes, and snippets.

@TylorS
Last active May 16, 2017 16:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TylorS/d3bebced91d2f60253f3a682e824a121 to your computer and use it in GitHub Desktop.
Save TylorS/d3bebced91d2f60253f3a682e824a121 to your computer and use it in GitHub Desktop.
esnextbin sketch
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>ESNextbin Sketch</title>
<!-- put additional styles and scripts here -->
</head>
<body>
<!-- put markup and other contents here -->
</body>
</html>
import * as jsc from 'jsverify'
import { propagateTask, propagateEndTask, runEffects, tap } from '@most/core'
import { disposeBoth } from '@most/disposable'
import { newDefaultScheduler } from '@most/scheduler'
console.clear()
const scheduler = newDefaultScheduler()
const drain = stream => runEffects(stream, scheduler)
const observe = (f, stream) => drain(tap(f, stream))
class Generate {
constructor (value) {
this.value = value
}
run (sink, scheduler) {
const { value } = this
return disposeBoth(
scheduler.asap(propagateTask(runGenerate(scheduler), value, sink)),
scheduler.asap(propagateEndTask(sink))
)
}
}
const generate = (value) => new Generate(value)
function runGenerate(scheduler) {
return function (time, value, sink) {
jsc.forAll(value, "bool", (x) => {
sink.event(scheduler.now(), value)
return true
})
}
}
const stream = generate("bool")
console.log(stream)
observe(console.log, stream)
{
"name": "esnextbin-sketch",
"version": "0.0.0",
"dependencies": {
"babel-runtime": "6.23.0",
"jsverify": "0.8.2",
"@most/core": "0.3.1",
"@most/disposable": "0.5.0",
"@most/scheduler": "0.4.0"
}
}
'use strict';
var _classCallCheck2 = require('babel-runtime/helpers/classCallCheck');
var _classCallCheck3 = _interopRequireDefault(_classCallCheck2);
var _createClass2 = require('babel-runtime/helpers/createClass');
var _createClass3 = _interopRequireDefault(_createClass2);
var _jsverify = require('jsverify');
var jsc = _interopRequireWildcard(_jsverify);
var _core = require('@most/core');
var _disposable = require('@most/disposable');
var _scheduler = require('@most/scheduler');
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) newObj[key] = obj[key]; } } newObj.default = obj; return newObj; } }
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
console.clear();
var scheduler = (0, _scheduler.newDefaultScheduler)();
var drain = function drain(stream) {
return (0, _core.runEffects)(stream, scheduler);
};
var observe = function observe(f, stream) {
return drain((0, _core.tap)(f, stream));
};
var Generate = function () {
function Generate(value) {
(0, _classCallCheck3.default)(this, Generate);
this.value = value;
}
(0, _createClass3.default)(Generate, [{
key: 'run',
value: function run(sink, scheduler) {
var value = this.value;
return (0, _disposable.disposeBoth)(scheduler.asap((0, _core.propagateTask)(runGenerate(scheduler), value, sink)), scheduler.asap((0, _core.propagateEndTask)(sink)));
}
}]);
return Generate;
}();
var generate = function generate(value) {
return new Generate(value);
};
function runGenerate(scheduler) {
return function (time, value, sink) {
jsc.forAll(value, "bool", function (x) {
sink.event(scheduler.now(), value);
return true;
});
};
}
var stream = generate("bool");
console.log(stream);
observe(console.log, stream);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment