| 'use strict'; |
| |
| const utils = require('./utils'); |
| const roles = { |
| default(prompt, choice) { |
| return choice; |
| }, |
| checkbox(prompt, choice) { |
| throw new Error('checkbox role is not implemented yet'); |
| }, |
| editable(prompt, choice) { |
| throw new Error('editable role is not implemented yet'); |
| }, |
| expandable(prompt, choice) { |
| throw new Error('expandable role is not implemented yet'); |
| }, |
| heading(prompt, choice) { |
| choice.disabled = ''; |
| choice.indicator = [choice.indicator, ' '].find(v => v != null); |
| choice.message = choice.message || ''; |
| return choice; |
| }, |
| input(prompt, choice) { |
| throw new Error('input role is not implemented yet'); |
| }, |
| option(prompt, choice) { |
| return roles.default(prompt, choice); |
| }, |
| radio(prompt, choice) { |
| throw new Error('radio role is not implemented yet'); |
| }, |
| separator(prompt, choice) { |
| choice.disabled = ''; |
| choice.indicator = [choice.indicator, ' '].find(v => v != null); |
| choice.message = choice.message || prompt.symbols.line.repeat(5); |
| return choice; |
| }, |
| spacer(prompt, choice) { |
| return choice; |
| } |
| }; |
| |
| module.exports = (name, options = {}) => { |
| let role = utils.merge({}, roles, options.roles); |
| return role[name] || role.default; |
| }; |