Created
February 28, 2017 05:51
regenerator-by-bable
This file contains hidden or 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