| 'use strict'; |
| const lenient = require('./lenient'); |
| |
| const yn = (input, options) => { |
| input = String(input).trim(); |
| |
| options = Object.assign({ |
| lenient: false, |
| default: null |
| }, options); |
| |
| if (options.default !== null && typeof options.default !== 'boolean') { |
| throw new TypeError(`Expected the \`default\` option to be of type \`boolean\`, got \`${typeof options.default}\``); |
| } |
| |
| if (/^(?:y|yes|true|1)$/i.test(input)) { |
| return true; |
| } |
| |
| if (/^(?:n|no|false|0)$/i.test(input)) { |
| return false; |
| } |
| |
| if (options.lenient === true) { |
| return lenient(input, options); |
| } |
| |
| return options.default; |
| }; |
| |
| module.exports = yn; |
| // TODO: Remove this for the next major release |
| module.exports.default = yn; |