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>
This commit is contained in:
parent
7b355c5bb3
commit
061b2c8f2c
@ -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…
x
Reference in New Issue
Block a user