12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- 'use strict';
- var _ = {
- isString: require('lodash/isString'),
- isNumber: require('lodash/isNumber'),
- extend: require('lodash/extend'),
- isFunction: require('lodash/isFunction'),
- };
- /**
- * Choice object
- * Normalize input as choice object
- * @constructor
- * @param {Number|String|Object} val Choice value. If an object is passed, it should contains
- * at least one of `value` or `name` property
- */
- module.exports = class Choice {
- constructor(val, answers) {
- // Don't process Choice and Separator object
- if (val instanceof Choice || val.type === 'separator') {
- // eslint-disable-next-line no-constructor-return
- return val;
- }
- if (_.isString(val) || _.isNumber(val)) {
- this.name = String(val);
- this.value = val;
- this.short = String(val);
- } else {
- _.extend(this, val, {
- name: val.name || val.value,
- value: 'value' in val ? val.value : val.name,
- short: val.short || val.name || val.value,
- });
- }
- if (_.isFunction(val.disabled)) {
- this.disabled = val.disabled(answers);
- } else {
- this.disabled = val.disabled;
- }
- }
- };
|