confinode
Version:
Node application configuration reader
42 lines • 1.46 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const ConfinodeError_1 = require("../../ConfinodeError");
const messages_1 = require("../../messages");
const ConfigDescription_1 = require("../ConfigDescription");
/**
* Description of a boolean item. Boolean parser tries also to convert some numbers and strings.
*/
class BooleanDescription extends ConfigDescription_1.LeafItemDescription {
/**
* Create the description of a boolean item.
*
* @param defaultValue - The value to use for inexistent value.
*/
constructor(defaultValue) {
super(defaultValue);
}
parseValue(value, fileName, keyName) {
if (typeof value === 'boolean') {
return value;
}
else if (typeof value === 'number') {
if (value === 0) {
return false;
}
else if (value === 1) {
return true;
}
}
else if (typeof value === 'string') {
if (/^(?:f(?:alse)?|n(?:o)?|0)$/i.test(value)) {
return false;
}
else if (/^(?:t(?:rue)?|y(?:es)?|1)$/i.test(value)) {
return true;
}
}
throw new ConfinodeError_1.default('expected', keyName, fileName, new messages_1.Message(messages_1.Level.Error, 'expectedBoolean'));
}
}
exports.default = BooleanDescription;
//# sourceMappingURL=BooleanDescription.js.map