|
12345678910111213141516171819202122232425262728293031323334353637 |
- 'use strict';
- var _ = require('lodash');
-
- /**
- * 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') {
- 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;
- }
- }
- };
|