Skip to content

Commit

Permalink
readline: allow history to be disabled
Browse files Browse the repository at this point in the history
fix #6336
1.  The `historySize` to default to `30` only if `undefined`.
2.  If `historySize` is set to 0, then disable caching the line.
3.  Added unit tests.
4.  Updated documentation.
  • Loading branch information
suryagh committed Apr 25, 2016
1 parent 7940ecf commit 5ac572c
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 2 deletions.
3 changes: 2 additions & 1 deletion doc/api/readline.md
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
8 changes: 7 additions & 1 deletion lib/readline.js
Original file line number Diff line number Diff line change
Expand Up @@ -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) {
Expand Down Expand Up @@ -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);

Expand Down
13 changes: 13 additions & 0 deletions test/parallel/test-readline-interface.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,19 @@ 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);
rli.close();

// default history size 30
fi = new FakeInput();
rli = new readline.Interface({ input: fi, output: fi, terminal: terminal});
assert.strictEqual(rli.historySize, 30);
rli.close();

// sending a full line
fi = new FakeInput();
rli = new readline.Interface({ input: fi, output: fi, terminal: terminal });
Expand Down

0 comments on commit 5ac572c

Please sign in to comment.