Spaces:
Build error
Build error
| var readline = require('readline') | |
| var Promise = require('any-promise') | |
| var objectAssign = require('object-assign') | |
| var Interface = readline.Interface | |
| function wrapCompleter (completer) { | |
| if (completer.length === 2) return completer | |
| return function (line, cb) { | |
| var result = completer(line) | |
| if (typeof result.then !== 'function') { | |
| return cb(null, result) | |
| } | |
| result.catch(cb).then(function (result) { | |
| process.nextTick(function () { cb(null, result) }) | |
| }) | |
| } | |
| } | |
| function InterfaceAsPromised (input, output, completer, terminal) { | |
| if (arguments.length === 1) { | |
| var options = input | |
| if (typeof options.completer === 'function') { | |
| options = objectAssign({}, options, { | |
| completer: wrapCompleter(options.completer) | |
| }) | |
| } | |
| Interface.call(this, options) | |
| } else { | |
| if (typeof completer === 'function') { | |
| completer = wrapCompleter(completer) | |
| } | |
| Interface.call(this, input, output, completer, terminal) | |
| } | |
| } | |
| InterfaceAsPromised.prototype = Object.create(Interface.prototype) | |
| InterfaceAsPromised.prototype.question = function (question, callback) { | |
| if (typeof callback === 'function') { | |
| return Interface.prototype.question.call(this, question, callback) | |
| } | |
| var self = this | |
| return new Promise(function (resolve) { | |
| Interface.prototype.question.call(self, question, resolve) | |
| }) | |
| } | |
| objectAssign(exports, readline, { | |
| Interface: InterfaceAsPromised, | |
| createInterface: function (input, output, completer, terminal) { | |
| if (arguments.length === 1) { | |
| return new InterfaceAsPromised(input) | |
| } | |
| return new InterfaceAsPromised(input, output, completer, terminal) | |
| } | |
| }) | |