mirror of https://github.com/lukechilds/node.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
966 B
44 lines
966 B
16 years ago
|
#!/usr/bin/env node
|
||
|
|
||
|
node.stdio.open();
|
||
|
|
||
|
var buffered_cmd = '';
|
||
|
|
||
|
function prompt () {
|
||
|
node.stdio.write(buffered_cmd.length ? '... ' : "\nnode> ");
|
||
|
}
|
||
|
|
||
|
node.stdio.write("Welcome to the Node.js REPL.\n");
|
||
|
node.stdio.write("Enter ECMAScript at the prompt.\n");
|
||
|
node.stdio.write("Type Control-D to exit.\n");
|
||
|
node.stdio.write("For more information, see http://tinyclouds.org/node\n");
|
||
|
|
||
|
prompt();
|
||
|
|
||
|
var trimmer = /^\s*(.+)\s*$/m;
|
||
|
|
||
|
node.stdio.addListener("data", function (cmd) {
|
||
|
var matches = trimmer.exec(cmd);
|
||
|
|
||
|
if (matches && matches.length == 2) {
|
||
|
cmd = matches[1];
|
||
|
try {
|
||
|
buffered_cmd += cmd;
|
||
|
try {
|
||
|
node.stdio.write(JSON.stringify(eval(buffered_cmd)) + "\n");
|
||
|
buffered_cmd = '';
|
||
|
} catch (e) {
|
||
|
if (!(e instanceof SyntaxError))
|
||
|
throw e;
|
||
|
}
|
||
|
} catch (e) {
|
||
|
node.stdio.writeError('caught an exception: ' + e + '\n');
|
||
|
buffered_cmd = '';
|
||
|
}
|
||
|
}
|
||
|
|
||
|
prompt();
|
||
|
});
|
||
|
|
||
|
// vim:ft=javascript
|