@ -138,10 +138,6 @@ and try to print `obj` in REPL, it will invoke the custom `inspect()` function:
> obj
> obj
{ bar: 'baz' }
{ bar: 'baz' }
[Readline Interface]: readline.html#readline_class_interface
[util.inspect()]: util.html#util_util_inspect_object_options
[here]: util.html#util_custom_inspect_function_on_objects
## repl.start(options)
## repl.start(options)
Returns and starts a `REPLServer` instance, that inherits from
Returns and starts a `REPLServer` instance, that inherits from
@ -244,6 +240,10 @@ a `net.Server` and `net.Socket` instance, see: https://gist.github.com/2209310
For an example of running a REPL instance over `curl(1)` ,
For an example of running a REPL instance over `curl(1)` ,
see: https://gist.github.com/2053342
see: https://gist.github.com/2053342
## Class: REPLServer
This inherits from [Readline Interface][] with the following events:
### Event: 'exit'
### Event: 'exit'
`function () {}`
`function () {}`
@ -254,7 +254,7 @@ to signal "end" on the `input` stream.
Example of listening for `exit` :
Example of listening for `exit` :
r.on('exit', function () {
replServer .on('exit', function () {
console.log('Got "exit" event from repl!');
console.log('Got "exit" event from repl!');
process.exit();
process.exit();
});
});
@ -271,11 +271,59 @@ be emitted.
Example of listening for `reset` :
Example of listening for `reset` :
// Extend the initial repl context.
// Extend the initial repl context.
var r = repl.start({ options ... });
var replServer = repl.start({ options ... });
someExtension.extend(r.context);
someExtension.extend(r.context);
// When a new context is created extend it as well.
// When a new context is created extend it as well.
r.on('reset', function (context) {
replServer .on('reset', function (context) {
console.log('repl has a new context');
console.log('repl has a new context');
someExtension.extend(context);
someExtension.extend(context);
});
});
### replServer.defineCommand(keyword, cmd)
* `keyword` {String}
* `cmd` {Object|Function}
Makes a command available in the REPL. The command is invoked by typing a `.`
followed by the keyword. The `cmd` is an object with the following values:
- `help` - help text to be displayed when `.help` is entered (Optional).
- `action` - a function to execute, potentially taking in a string argument,
when the command is invoked, bound to the REPLServer instance (Required).
If a function is provided instead of an object for `cmd` , it is treated as the
`action` .
Example of defining a command:
// repl_test.js
var repl = require('repl');
var replServer = repl.start();
replServer.defineCommand('sayhello', {
help: 'Say hello',
action: function(name) {
this.write('Hello, ' + name + '!\n');
this.displayPrompt();
}
});
Example of invoking that command from the REPL:
> .sayhello Node.js User
Hello, Node.js User!
### replServer.displayPrompt([preserveCursor])
* `preserveCursor` {Boolean}
Like [readline.prompt][] except also adding indents with ellipses when inside
blocks. The `preserveCursor` argument is passed to [readline.prompt][]. This is
used primarily with `defineCommand` . It's also used internally to render each
prompt line.
[Readline Interface]: readline.html#readline_class_interface
[readline.prompt]: readline.html#readline_rl_prompt_preservecursor
[util.inspect()]: util.html#util_util_inspect_object_options
[here]: util.html#util_custom_inspect_function_on_objects