index.js 711 B

123456789101112131415161718192021222324252627282930313233
  1. 'use strict';
  2. const lenient = require('./lenient');
  3. const yn = (input, options) => {
  4. input = String(input).trim();
  5. options = Object.assign({
  6. lenient: false,
  7. default: null
  8. }, options);
  9. if (options.default !== null && typeof options.default !== 'boolean') {
  10. throw new TypeError(`Expected the \`default\` option to be of type \`boolean\`, got \`${typeof options.default}\``);
  11. }
  12. if (/^(?:y|yes|true|1)$/i.test(input)) {
  13. return true;
  14. }
  15. if (/^(?:n|no|false|0)$/i.test(input)) {
  16. return false;
  17. }
  18. if (options.lenient === true) {
  19. return lenient(input, options);
  20. }
  21. return options.default;
  22. };
  23. module.exports = yn;
  24. // TODO: Remove this for the next major release
  25. module.exports.default = yn;