|
|
@ -79,8 +79,6 @@ function REPLServer(prompt, stream) { |
|
|
|
rli.addListener('line', function (cmd) { |
|
|
|
cmd = trimWhitespace(cmd); |
|
|
|
|
|
|
|
var flushed = true; |
|
|
|
|
|
|
|
// Check to see if a REPL keyword was used. If it returns true,
|
|
|
|
// display next prompt and return.
|
|
|
|
if (cmd && cmd.charAt(0) === '.') { |
|
|
@ -100,7 +98,7 @@ function REPLServer(prompt, stream) { |
|
|
|
var ret = evalcx(self.buffered_cmd, context, "repl"); |
|
|
|
if (ret !== undefined) { |
|
|
|
context._ = ret; |
|
|
|
flushed = self.stream.write(exports.writer(ret) + "\n"); |
|
|
|
self.stream.write(exports.writer(ret) + "\n"); |
|
|
|
} |
|
|
|
|
|
|
|
self.buffered_cmd = ''; |
|
|
@ -113,28 +111,14 @@ function REPLServer(prompt, stream) { |
|
|
|
} catch (e) { |
|
|
|
// On error: Print the error and clear the buffer
|
|
|
|
if (e.stack) { |
|
|
|
flushed = self.stream.write(e.stack + "\n"); |
|
|
|
self.stream.write(e.stack + "\n"); |
|
|
|
} else { |
|
|
|
flushed = self.stream.write(e.toString() + "\n"); |
|
|
|
self.stream.write(e.toString() + "\n"); |
|
|
|
} |
|
|
|
self.buffered_cmd = ''; |
|
|
|
} |
|
|
|
|
|
|
|
// need to make sure the buffer is flushed before displaying the prompt
|
|
|
|
// again. This is really ugly. Need to have callbacks from
|
|
|
|
// net.Stream.write()
|
|
|
|
if (flushed) { |
|
|
|
self.displayPrompt(); |
|
|
|
} else { |
|
|
|
self.displayPromptOnDrain = true; |
|
|
|
} |
|
|
|
}); |
|
|
|
|
|
|
|
self.stream.addListener('drain', function () { |
|
|
|
if (self.displayPromptOnDrain) { |
|
|
|
self.displayPrompt(); |
|
|
|
self.displayPromptOnDrain = false; |
|
|
|
} |
|
|
|
self.displayPrompt(); |
|
|
|
}); |
|
|
|
|
|
|
|
rli.addListener('close', function () { |
|
|
|