setPrompt()
and question()
accept the value which is not string too (e.g. number, Date, Object, etc.).
This commit is contained in:
parent
055e4b3060
commit
cabbc1ffea
3 changed files with 15 additions and 10 deletions
|
@ -14,7 +14,7 @@ console.log('Oh, so your favorite food is ' + answer);
|
|||
## Installation
|
||||
|
||||
```
|
||||
npm install -g readline-sync
|
||||
npm install readline-sync
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
@ -100,6 +100,7 @@ try {
|
|||
+ If `options.noEchoBack` is used, the text that input by user is saved to temporary file (e.g. `/tmp/readline-sync.stdout`). This file is removed immediately after reading is done, but you have to be careful about it because this text is *plain*. Removing the file might fail, or the file might be peeped before it is removed.
|
||||
|
||||
## Release History
|
||||
* 2014-07-12 v0.4.1 `setPrompt()` and `question()` accept the value which is not string too (e.g. number, Date, Object, etc.).
|
||||
* 2014-07-12 v0.4.0 Add `options.noEchoBack`.
|
||||
* 2014-07-12 v0.3.0 Add `setPrint()`.
|
||||
* 2014-06-27 v0.2.3 Add alternative reading via shell on the environment which don't support interactively reading.
|
||||
|
|
|
@ -20,16 +20,16 @@ var promptText = '> ',
|
|||
function _readlineSync(display, options) {
|
||||
var input = '', rsize, err;
|
||||
|
||||
if (display) {
|
||||
if (display !== '') {
|
||||
if (typeof print === 'function') { print(display, encoding); }
|
||||
stdout.write(display, encoding);
|
||||
stdout.write(display + '', encoding);
|
||||
}
|
||||
|
||||
if (options && options.noEchoBack) { // Try reading via shell
|
||||
|
||||
input = _readlineShell(true);
|
||||
if (typeof input !== 'string') {
|
||||
if (display) { stdout.write('\n', encoding); } // Return from prompt line.
|
||||
if (display !== '') { stdout.write('\n', encoding); } // Return from prompt line.
|
||||
throw new Error('Can\'t read via shell');
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ function _readlineSync(display, options) {
|
|||
err.errno = e.errno;
|
||||
err.code = e.code;
|
||||
}
|
||||
if (display) { stdout.write('\n', encoding); } // Return from prompt line.
|
||||
if (display !== '') { stdout.write('\n', encoding); } // Return from prompt line.
|
||||
throw err || e;
|
||||
}
|
||||
|
||||
|
@ -136,9 +136,9 @@ exports.useShellSet = function(use) { useShell = use; };
|
|||
exports.setPrint = function(fnc) { print = fnc; };
|
||||
|
||||
exports.setPrompt = function(newPrompt) {
|
||||
if (typeof newPrompt === 'string') {
|
||||
promptText = newPrompt;
|
||||
}
|
||||
/* jshint eqnull:true */
|
||||
promptText = newPrompt != null ? newPrompt : '';
|
||||
/* jshint eqnull:false */
|
||||
};
|
||||
|
||||
exports.setEncoding = function(newEncoding) {
|
||||
|
@ -152,5 +152,9 @@ exports.prompt = function(options) {
|
|||
};
|
||||
|
||||
exports.question = function(query, options) {
|
||||
return _readlineSync(typeof query === 'string' ? query : '', options);
|
||||
return _readlineSync(
|
||||
/* jshint eqnull:true */
|
||||
query != null ? query : '',
|
||||
/* jshint eqnull:false */
|
||||
options);
|
||||
};
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"name": "readline-sync",
|
||||
"description": "Synchronous Readline",
|
||||
"version": "0.4.0",
|
||||
"version": "0.4.1",
|
||||
"homepage": "https://github.com/anseki/readline-sync",
|
||||
"author": {
|
||||
"name": "anseki"
|
||||
|
|
Loading…
Reference in a new issue