3 * `confirm` type prompt
7 extend: require('lodash/extend'),
8 isBoolean: require('lodash/isBoolean'),
10 var chalk = require('chalk');
11 var { take, takeUntil } = require('rxjs/operators');
12 var Base = require('./base');
13 var observe = require('../utils/events');
15 class ConfirmPrompt extends Base {
16 constructor(questions, rl, answers) {
17 super(questions, rl, answers);
19 var rawDefault = true;
22 filter: function (input) {
23 var value = rawDefault;
24 if (input != null && input !== '') {
25 value = /^y(es)?/i.test(input);
32 if (_.isBoolean(this.opt.default)) {
33 rawDefault = this.opt.default;
36 this.opt.default = rawDefault ? 'Y/n' : 'y/N';
40 * Start the Inquiry session
41 * @param {Function} cb Callback when prompt is done
48 // Once user confirm (enter key)
49 var events = observe(this.rl);
50 events.keypress.pipe(takeUntil(events.line)).forEach(this.onKeypress.bind(this));
52 events.line.pipe(take(1)).forEach(this.onEnd.bind(this));
61 * Render the prompt to screen
62 * @return {ConfirmPrompt} self
66 var message = this.getQuestion();
68 if (typeof answer === 'boolean') {
69 message += chalk.cyan(answer ? 'Yes' : 'No');
71 message += this.rl.line;
74 this.screen.render(message);
80 * When user press `enter` key
84 this.status = 'answered';
86 var output = this.opt.filter(input);
94 * When user press a key
102 module.exports = ConfirmPrompt;