mirror of
https://github.com/denoland/deno.git
synced 2025-03-03 09:31:22 -05:00
Add repl functions "help" and "exit" (#1563)
This commit is contained in:
parent
457e65bc2f
commit
240ca25617
2 changed files with 31 additions and 6 deletions
24
js/repl.ts
24
js/repl.ts
|
@ -10,6 +10,24 @@ import { globalEval } from "./global_eval";
|
|||
|
||||
const window = globalEval("this");
|
||||
|
||||
const helpMsg = [
|
||||
"exit Exit the REPL",
|
||||
"help Print this help message"
|
||||
].join("\n");
|
||||
|
||||
const replCommands = {
|
||||
exit: {
|
||||
get() {
|
||||
exit(0);
|
||||
}
|
||||
},
|
||||
help: {
|
||||
get() {
|
||||
return helpMsg;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
function startRepl(historyFile: string): number {
|
||||
const builder = flatbuffers.createBuilder();
|
||||
const historyFile_ = builder.createString(historyFile);
|
||||
|
@ -54,6 +72,7 @@ export async function readline(rid: number, prompt: string): Promise<string> {
|
|||
// @internal
|
||||
export async function replLoop(): Promise<void> {
|
||||
window.deno = deno; // FIXME use a new scope (rather than window).
|
||||
Object.defineProperties(window, replCommands);
|
||||
|
||||
const historyFile = "deno_history.txt";
|
||||
const rid = startRepl(historyFile);
|
||||
|
@ -69,11 +88,6 @@ export async function replLoop(): Promise<void> {
|
|||
console.error(err);
|
||||
exit(1);
|
||||
}
|
||||
if (!code) {
|
||||
continue;
|
||||
} else if (code.trim() === ".exit") {
|
||||
break;
|
||||
}
|
||||
|
||||
evaluate(code);
|
||||
}
|
||||
|
|
|
@ -56,11 +56,22 @@ class Repl(object):
|
|||
assertEqual(code, 0)
|
||||
|
||||
def test_exit_command(self):
|
||||
out, err, code = self.input(".exit", "'ignored'", exit=False)
|
||||
out, err, code = self.input("exit", "'ignored'", exit=False)
|
||||
assertEqual(out, '')
|
||||
assertEqual(err, '')
|
||||
assertEqual(code, 0)
|
||||
|
||||
def test_help_command(self):
|
||||
out, err, code = self.input("help")
|
||||
expectedOut = '\n'.join([
|
||||
"exit Exit the REPL",
|
||||
"help Print this help message",
|
||||
"",
|
||||
])
|
||||
assertEqual(out, expectedOut)
|
||||
assertEqual(err, '')
|
||||
assertEqual(code, 0)
|
||||
|
||||
def test_function(self):
|
||||
out, err, code = self.input("deno.writeFileSync")
|
||||
assertEqual(out, '[Function: writeFileSync]\n')
|
||||
|
|
Loading…
Add table
Reference in a new issue