Created
February 28, 2017 05:51
-
-
Save justjavac/cdfe4cc0a55744e093250b8aca6a325a to your computer and use it in GitHub Desktop.
regenerator-by-bable
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"use strict"; | |
var _asyncGenerator = function () { function AwaitValue(value) { this.value = value; } function AsyncGenerator(gen) { var front, back; function send(key, arg) { return new Promise(function (resolve, reject) { var request = { key: key, arg: arg, resolve: resolve, reject: reject, next: null }; if (back) { back = back.next = request; } else { front = back = request; resume(key, arg); } }); } function resume(key, arg) { try { var result = gen[key](arg); var value = result.value; if (value instanceof AwaitValue) { Promise.resolve(value.value).then(function (arg) { resume("next", arg); }, function (arg) { resume("throw", arg); }); } else { settle(result.done ? "return" : "normal", result.value); } } catch (err) { settle("throw", err); } } function settle(type, value) { switch (type) { case "return": front.resolve({ value: value, done: true }); break; case "throw": front.reject(value); break; default: front.resolve({ value: value, done: false }); break; } front = front.next; if (front) { resume(front.key, front.arg); } else { back = null; } } this._invoke = send; if (typeof gen.return !== "function") { this.return = undefined; } } if (typeof Symbol === "function" && Symbol.asyncIterator) { AsyncGenerator.prototype[Symbol.asyncIterator] = function () { return this; }; } AsyncGenerator.prototype.next = function (arg) { return this._invoke("next", arg); }; AsyncGenerator.prototype.throw = function (arg) { return this._invoke("throw", arg); }; AsyncGenerator.prototype.return = function (arg) { return this._invoke("return", arg); }; return { wrap: function wrap(fn) { return function () { return new AsyncGenerator(fn.apply(this, arguments)); }; }, await: function await(value) { return new AwaitValue(value); } }; }(); | |
var readLines = function () { | |
var _ref = _asyncGenerator.wrap(regeneratorRuntime.mark(function _callee(path) { | |
var file; | |
return regeneratorRuntime.wrap(function _callee$(_context) { | |
while (1) { | |
switch (_context.prev = _context.next) { | |
case 0: | |
_context.next = 2; | |
return _asyncGenerator.await(fileOpen(path)); | |
case 2: | |
file = _context.sent; | |
_context.prev = 3; | |
case 4: | |
if (file.EOF) { | |
_context.next = 11; | |
break; | |
} | |
_context.next = 7; | |
return _asyncGenerator.await(file.readLine()); | |
case 7: | |
_context.next = 9; | |
return _context.sent; | |
case 9: | |
_context.next = 4; | |
break; | |
case 11: | |
_context.prev = 11; | |
_context.next = 14; | |
return _asyncGenerator.await(file.close()); | |
case 14: | |
return _context.finish(11); | |
case 15: | |
case "end": | |
return _context.stop(); | |
} | |
} | |
}, _callee, this, [[3,, 11, 15]]); | |
})); | |
return function readLines(_x) { | |
return _ref.apply(this, arguments); | |
}; | |
}(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment