UNPKG

confinode

Version:

Node application configuration reader

45 lines 1.64 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ConfinodeError_1 = require("../../ConfinodeError"); const messages_1 = require("../../messages"); const ConfigDescription_1 = require("../ConfigDescription"); /** * Description of a choice item. */ class ChoiceDescription extends ConfigDescription_1.LeafItemDescription { /** * Create the description of a choice item. * * @param choices - The available choices. * @param defaultValue - An optional default value. */ constructor(choices, defaultValue) { super(defaultValue); this.choices = choices; } parseValue(value, fileName, keyName) { if (this.choices.includes(value)) { return value; } else { let parsedValue; if (typeof value === 'boolean' || typeof value === 'number') { // Try as string parsedValue = String(value); if (this.choices.includes(parsedValue)) { return parsedValue; } } if (typeof value === 'string' && value !== '') { // Try as number parsedValue = Number(value); if (!isNaN(parsedValue) && this.choices.includes(parsedValue)) { return parsedValue; } } } throw new ConfinodeError_1.default('expected', keyName, fileName, new messages_1.Message(messages_1.Level.Error, 'expectedChoice', this.choices)); } } exports.default = ChoiceDescription; //# sourceMappingURL=ChoiceDescription.js.map