Browse Source

doc: repl: add defineComand and displayPrompt

Also some minor edits so the additions make sense.

PR-URL: https://github.com/nodejs/node/pull/3765
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Rich Trott <rtrott@gmail.com>
process-exit-stdio-flushing
Bryan English 9 years ago
committed by Rich Trott
parent
commit
061b2c8f2c
  1. 62
      doc/api/repl.markdown

62
doc/api/repl.markdown

@ -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

Loading…
Cancel
Save