surya panikkal
9 years ago
committed by
Anna Henningsen
No known key found for this signature in database
GPG Key ID: D8B9F5AEAE84E4CF
3 changed files with
28 additions and
2 deletions
doc/api/readline.md
lib/readline.js
test/parallel/test-readline-interface.js
@ -300,7 +300,8 @@ the following values:
treated like a TTY, and have ANSI/VT100 escape codes written to it.
Defaults to checking `isTTY` on the `output` stream upon instantiation.
- `historySize` - maximum number of history lines retained. Defaults to `30` .
- `historySize` - maximum number of history lines retained. To disable the
history set this value to `0` . Defaults to `30` .
The `completer` function is given the current line entered by the user, and
is supposed to return an Array with 2 entries:
@ -53,12 +53,15 @@ function Interface(input, output, completer, terminal) {
historySize = input . historySize ;
input = input . input ;
}
historySize = historySize || kHistorySize ;
if ( completer && typeof completer !== 'function' ) {
throw new TypeError ( 'Argument "completer" must be a function' ) ;
}
if ( historySize === undefined ) {
historySize = kHistorySize ;
}
if ( typeof historySize !== 'number' ||
isNaN ( historySize ) ||
historySize < 0 ) {
@ -228,6 +231,9 @@ Interface.prototype._writeToOutput = function _writeToOutput(stringToWrite) {
Interface . prototype . _ addHistory = function ( ) {
if ( this . line . length === 0 ) return '' ;
// if the history is disabled then return the line
if ( this . historySize === 0 ) return this . line ;
if ( this . history . length === 0 || this . history [ 0 ] !== this . line ) {
this . history . unshift ( this . line ) ;
@ -27,6 +27,25 @@ function isWarned(emitter) {
var rli ;
var called ;
// disable history
fi = new FakeInput ( ) ;
rli = new readline . Interface ( { input : fi , output : fi , terminal : terminal ,
historySize : 0 } ) ;
assert . strictEqual ( rli . historySize , 0 ) ;
fi . emit ( 'data' , 'asdf\n' ) ;
assert . deepStrictEqual ( rli . history , terminal ? [ ] : undefined ) ;
rli . close ( ) ;
// default history size 30
fi = new FakeInput ( ) ;
rli = new readline . Interface ( { input : fi , output : fi , terminal : terminal } ) ;
assert . strictEqual ( rli . historySize , 30 ) ;
fi . emit ( 'data' , 'asdf\n' ) ;
assert . deepStrictEqual ( rli . history , terminal ? [ 'asdf' ] : undefined ) ;
rli . close ( ) ;
// sending a full line
fi = new FakeInput ( ) ;
rli = new readline . Interface ( { input : fi , output : fi , terminal : terminal } ) ;