UNPKG

eff

Version:

An extensible effect monad based on the freer monad

44 lines (37 loc) 4.61 kB
"use strict"; var _ava = _interopRequireDefault(require("ava")); var _stream = require("stream"); var _eff = require("./eff"); var _output = require("./output"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } _ava.default.cb("Put string", function (t) { var stringToWrite = "Hello, World!"; var writtenString = ""; var writableStream = new _stream.Writable({ write: function write(chunk, encoding, callback) { writtenString = writtenString + chunk.toString(); callback(); } }); var application = (0, _output.putString)(stringToWrite); (0, _eff.run)([(0, _output.interpretOutput)(writableStream)])(function () { t.is(writtenString, stringToWrite); t.end(); })(application); }); _ava.default.cb("Put string line", function (t) { var stringToWrite = "Hello, World!"; var writtenString = ""; var writableStream = new _stream.Writable({ write: function write(chunk, encoding, callback) { writtenString = writtenString + chunk.toString(); callback(); } }); var application = (0, _output.putStringLine)(stringToWrite); (0, _eff.run)([(0, _output.interpretOutput)(writableStream)])(function () { t.is(writtenString, stringToWrite + "\n"); t.end(); })(application); }); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NvdXJjZXMvb3V0cHV0LnRlc3QuanMiXSwibmFtZXMiOlsidGVzdCIsImNiIiwidCIsInN0cmluZ1RvV3JpdGUiLCJ3cml0dGVuU3RyaW5nIiwid3JpdGFibGVTdHJlYW0iLCJXcml0YWJsZSIsIndyaXRlIiwiY2h1bmsiLCJlbmNvZGluZyIsImNhbGxiYWNrIiwidG9TdHJpbmciLCJhcHBsaWNhdGlvbiIsImlzIiwiZW5kIl0sIm1hcHBpbmdzIjoiOztBQUVBOztBQUNBOztBQUVBOztBQUNBOzs7O0FBRUFBLGFBQUtDLEVBQUwsQ0FBUSxZQUFSLEVBQXNCLFVBQUFDLENBQUMsRUFBSTtBQUMxQixNQUFNQyxhQUFhLEdBQUcsZUFBdEI7QUFFQSxNQUFJQyxhQUFhLEdBQUcsRUFBcEI7QUFFQSxNQUFNQyxjQUFjLEdBQUcsSUFBSUMsZ0JBQUosQ0FBYTtBQUNuQ0MsSUFBQUEsS0FEbUMsaUJBQzdCQyxLQUQ2QixFQUN0QkMsUUFEc0IsRUFDWkMsUUFEWSxFQUNGO0FBQ2hDTixNQUFBQSxhQUFhLEdBQUdBLGFBQWEsR0FBR0ksS0FBSyxDQUFDRyxRQUFOLEVBQWhDO0FBQ0FELE1BQUFBLFFBQVE7QUFDUjtBQUprQyxHQUFiLENBQXZCO0FBT0EsTUFBTUUsV0FBVyxHQUFHLHVCQUFVVCxhQUFWLENBQXBCO0FBRUEsZ0JBQUksQ0FBQyw2QkFBZ0JFLGNBQWhCLENBQUQsQ0FBSixFQUF1QyxZQUFNO0FBQzVDSCxJQUFBQSxDQUFDLENBQUNXLEVBQUYsQ0FBS1QsYUFBTCxFQUFvQkQsYUFBcEI7QUFDQUQsSUFBQUEsQ0FBQyxDQUFDWSxHQUFGO0FBQ0EsR0FIRCxFQUdHRixXQUhIO0FBSUEsQ0FsQkQ7O0FBb0JBWixhQUFLQyxFQUFMLENBQVEsaUJBQVIsRUFBMkIsVUFBQUMsQ0FBQyxFQUFJO0FBQy9CLE1BQU1DLGFBQWEsR0FBRyxlQUF0QjtBQUVBLE1BQUlDLGFBQWEsR0FBRyxFQUFwQjtBQUVBLE1BQU1DLGNBQWMsR0FBRyxJQUFJQyxnQkFBSixDQUFhO0FBQ25DQyxJQUFBQSxLQURtQyxpQkFDN0JDLEtBRDZCLEVBQ3RCQyxRQURzQixFQUNaQyxRQURZLEVBQ0Y7QUFDaENOLE1BQUFBLGFBQWEsR0FBR0EsYUFBYSxHQUFHSSxLQUFLLENBQUNHLFFBQU4sRUFBaEM7QUFDQUQsTUFBQUEsUUFBUTtBQUNSO0FBSmtDLEdBQWIsQ0FBdkI7QUFPQSxNQUFNRSxXQUFXLEdBQUcsMkJBQWNULGFBQWQsQ0FBcEI7QUFFQSxnQkFBSSxDQUFDLDZCQUFnQkUsY0FBaEIsQ0FBRCxDQUFKLEVBQXVDLFlBQU07QUFDNUNILElBQUFBLENBQUMsQ0FBQ1csRUFBRixDQUFLVCxhQUFMLEVBQW9CRCxhQUFhLEdBQUcsSUFBcEM7QUFDQUQsSUFBQUEsQ0FBQyxDQUFDWSxHQUFGO0FBQ0EsR0FIRCxFQUdHRixXQUhIO0FBSUEsQ0FsQkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBAZmxvdyAqL1xuXG5pbXBvcnQgdGVzdCBmcm9tIFwiYXZhXCI7XG5pbXBvcnQgeyBXcml0YWJsZSB9IGZyb20gXCJzdHJlYW1cIjtcblxuaW1wb3J0IHsgcnVuIH0gZnJvbSBcIi4vZWZmXCI7XG5pbXBvcnQgeyBwdXRTdHJpbmcsIHB1dFN0cmluZ0xpbmUsIGludGVycHJldE91dHB1dCB9IGZyb20gXCIuL291dHB1dFwiO1xuXG50ZXN0LmNiKFwiUHV0IHN0cmluZ1wiLCB0ID0+IHtcblx0Y29uc3Qgc3RyaW5nVG9Xcml0ZSA9IFwiSGVsbG8sIFdvcmxkIVwiO1xuXG5cdGxldCB3cml0dGVuU3RyaW5nID0gXCJcIjtcblxuXHRjb25zdCB3cml0YWJsZVN0cmVhbSA9IG5ldyBXcml0YWJsZSh7XG5cdFx0d3JpdGUoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuXHRcdFx0d3JpdHRlblN0cmluZyA9IHdyaXR0ZW5TdHJpbmcgKyBjaHVuay50b1N0cmluZygpO1xuXHRcdFx0Y2FsbGJhY2soKTtcblx0XHR9LFxuXHR9KTtcblxuXHRjb25zdCBhcHBsaWNhdGlvbiA9IHB1dFN0cmluZyhzdHJpbmdUb1dyaXRlKTtcblxuXHRydW4oW2ludGVycHJldE91dHB1dCh3cml0YWJsZVN0cmVhbSldKSgoKSA9PiB7XG5cdFx0dC5pcyh3cml0dGVuU3RyaW5nLCBzdHJpbmdUb1dyaXRlKTtcblx0XHR0LmVuZCgpO1xuXHR9KShhcHBsaWNhdGlvbik7XG59KTtcblxudGVzdC5jYihcIlB1dCBzdHJpbmcgbGluZVwiLCB0ID0+IHtcblx0Y29uc3Qgc3RyaW5nVG9Xcml0ZSA9IFwiSGVsbG8sIFdvcmxkIVwiO1xuXG5cdGxldCB3cml0dGVuU3RyaW5nID0gXCJcIjtcblxuXHRjb25zdCB3cml0YWJsZVN0cmVhbSA9IG5ldyBXcml0YWJsZSh7XG5cdFx0d3JpdGUoY2h1bmssIGVuY29kaW5nLCBjYWxsYmFjaykge1xuXHRcdFx0d3JpdHRlblN0cmluZyA9IHdyaXR0ZW5TdHJpbmcgKyBjaHVuay50b1N0cmluZygpO1xuXHRcdFx0Y2FsbGJhY2soKTtcblx0XHR9LFxuXHR9KTtcblxuXHRjb25zdCBhcHBsaWNhdGlvbiA9IHB1dFN0cmluZ0xpbmUoc3RyaW5nVG9Xcml0ZSk7XG5cblx0cnVuKFtpbnRlcnByZXRPdXRwdXQod3JpdGFibGVTdHJlYW0pXSkoKCkgPT4ge1xuXHRcdHQuaXMod3JpdHRlblN0cmluZywgc3RyaW5nVG9Xcml0ZSArIFwiXFxuXCIpO1xuXHRcdHQuZW5kKCk7XG5cdH0pKGFwcGxpY2F0aW9uKTtcbn0pO1xuIl19