diff options
Diffstat (limited to 'sandbox/testAppNevena/Front/node_modules/inquirer/lib/prompts/confirm.js')
-rw-r--r-- | sandbox/testAppNevena/Front/node_modules/inquirer/lib/prompts/confirm.js | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/sandbox/testAppNevena/Front/node_modules/inquirer/lib/prompts/confirm.js b/sandbox/testAppNevena/Front/node_modules/inquirer/lib/prompts/confirm.js new file mode 100644 index 00000000..8171aab5 --- /dev/null +++ b/sandbox/testAppNevena/Front/node_modules/inquirer/lib/prompts/confirm.js @@ -0,0 +1,102 @@ +'use strict'; +/** + * `confirm` type prompt + */ + +const _ = { + extend: require('lodash/extend'), + isBoolean: require('lodash/isBoolean'), +}; +const chalk = require('chalk'); +const { take, takeUntil } = require('rxjs/operators'); +const Base = require('./base'); +const observe = require('../utils/events'); + +class ConfirmPrompt extends Base { + constructor(questions, rl, answers) { + super(questions, rl, answers); + + let rawDefault = true; + + _.extend(this.opt, { + filter(input) { + let value = rawDefault; + if (input != null && input !== '') { + value = /^y(es)?/i.test(input); + } + + return value; + }, + }); + + if (_.isBoolean(this.opt.default)) { + rawDefault = this.opt.default; + } + + this.opt.default = rawDefault ? 'Y/n' : 'y/N'; + } + + /** + * Start the Inquiry session + * @param {Function} cb Callback when prompt is done + * @return {this} + */ + + _run(cb) { + this.done = cb; + + // Once user confirm (enter key) + const events = observe(this.rl); + events.keypress.pipe(takeUntil(events.line)).forEach(this.onKeypress.bind(this)); + + events.line.pipe(take(1)).forEach(this.onEnd.bind(this)); + + // Init + this.render(); + + return this; + } + + /** + * Render the prompt to screen + * @return {ConfirmPrompt} self + */ + + render(answer) { + let message = this.getQuestion(); + + if (typeof answer === 'boolean') { + message += chalk.cyan(answer ? 'Yes' : 'No'); + } else { + message += this.rl.line; + } + + this.screen.render(message); + + return this; + } + + /** + * When user press `enter` key + */ + + onEnd(input) { + this.status = 'answered'; + + const output = this.opt.filter(input); + this.render(output); + + this.screen.done(); + this.done(output); + } + + /** + * When user press a key + */ + + onKeypress() { + this.render(); + } +} + +module.exports = ConfirmPrompt; |