0.2.3 • Published 10 years ago

single-prompt v0.2.3

Weekly downloads
46
License
-
Repository
-
Last release
10 years ago

single-prompt Build Status

NPM

Renamed to keypress-prompt

single-prompt is a simple prompter to get a single character or digit on the console:

  • returns a promise
  • automatically lowercases the answer to avoid any issue with case
  • trigged on a single keypress (no need to press enter)
  • limited to single character choices
  • does work with numeric choices and attempts to coerce input to choice type
  • rejects promise if ctrl-c is pressed

Example of prompting for a character

$ cat character.js
var prompter = require('single-prompt');

prompter
  .prompt('Are you crazy', ['y', 'n'])
  .then(function(choice) {
      console.log('choice', choice);
  });

$ node character.js
Are you crazy [y, n]: n
choice n

Example of prompting for a number

$ cat number.js
var prompter = require('./src/single-prompt');

prompter
  .prompt('Number of diners', [1, 2, 3, 4, 5])
  .then(function(choice) {
      console.log('choice', choice);
  });

$ node number.js
Number of diners [1, 2, 3, 4, 5]: 2
choice 2

Note that internally single-prompt attempts to coerce the input to the type of the provided choices. If the match is an integer, it will return an integer so in this example, 2 is of type 'number'. It is assumed you won't do something silly like prompt with options like [1, '1']. It will work just maybe not quite how you want it to.

Bailing out

If Ctrl-C is press at the prompt, the promise will be rejected.

Testing

fakeKeypress is provided for use in tests. For example:

it('lowercases the input to avoid issues with case', function(done) {
    var promise = prompter.prompt('Yes or no', ['y', 'n']);

    prompter.fakeKeypress('N');

    promise.then(
        function(key) {
            expect(key).toBe('n');
            done();
        },
        function() {
            expect('promise').toBe('not rejected');
            done();
        }
    );
});

To send Ctrl-C:

fakeKeypress('c', {
    name: 'c',
    ctrl: true
});
0.2.3

10 years ago

0.2.2

10 years ago

0.2.1

10 years ago

0.2.0

10 years ago

0.1.5

10 years ago

0.1.4

10 years ago

0.1.3

10 years ago

0.1.2

10 years ago

0.1.1

10 years ago

0.1.0

10 years ago

0.0.9

10 years ago

0.0.8

10 years ago

0.0.7

10 years ago

0.0.6

10 years ago

0.0.5

10 years ago

0.0.4

10 years ago

0.0.3

10 years ago

0.0.2

10 years ago

0.0.1

10 years ago