From 3de9bc94294d0cab691d8a6e261733e8a8e98342 Mon Sep 17 00:00:00 2001 From: cjihrig Date: Sat, 2 Apr 2016 20:55:17 -0400 Subject: [PATCH] readline: document emitKeypressEvents() This commit adds documentation to the already publicly available readline.emitKeypressEvents() method. PR-URL: https://github.com/nodejs/node/pull/6024 Reviewed-By: James M Snell Reviewed-By: Benjamin Gruenbaum Reviewed-By: Fedor Indutny --- doc/api/readline.markdown | 5 ++++ .../test-readline-emit-keypress-events.js | 30 +++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 test/parallel/test-readline-emit-keypress-events.js diff --git a/doc/api/readline.markdown b/doc/api/readline.markdown index c2b77c524533bf..db543d2306a591 100644 --- a/doc/api/readline.markdown +++ b/doc/api/readline.markdown @@ -354,6 +354,11 @@ a `'resize'` event on the `output` if/when the columns ever change Move cursor to the specified position in a given TTY stream. +## readline.emitKeypressEvents(stream) + +Causes `stream` to begin emitting `'keypress'` events corresponding to its +input. + ## readline.moveCursor(stream, dx, dy) Move cursor relative to it's current position in a given TTY stream. diff --git a/test/parallel/test-readline-emit-keypress-events.js b/test/parallel/test-readline-emit-keypress-events.js new file mode 100644 index 00000000000000..ddadf6d223feaf --- /dev/null +++ b/test/parallel/test-readline-emit-keypress-events.js @@ -0,0 +1,30 @@ +'use strict'; +// emitKeypressEvents is thoroughly tested in test-readline-keys.js. +// However, that test calls it implicitly. This is just a quick sanity check +// to verify that it works when called explicitly. + +require('../common'); +const assert = require('assert'); +const readline = require('readline'); +const PassThrough = require('stream').PassThrough; +const stream = new PassThrough(); +const sequence = []; +const keys = []; + +readline.emitKeypressEvents(stream); + +stream.on('keypress', (s, k) => { + sequence.push(s); + keys.push(k); +}); + +stream.write('foo'); + +process.on('exit', () => { + assert.deepStrictEqual(sequence, ['f', 'o', 'o']); + assert.deepStrictEqual(keys, [ + { sequence: 'f', name: 'f', ctrl: false, meta: false, shift: false }, + { sequence: 'o', name: 'o', ctrl: false, meta: false, shift: false }, + { sequence: 'o', name: 'o', ctrl: false, meta: false, shift: false } + ]); +});