1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
var trim = require('./trim');
function boolMatch(s, matchers) {
var i, matcher, down = s.toLowerCase();
matchers = [].concat(matchers);
for (i = 0; i < matchers.length; i += 1) {
matcher = matchers[i];
if (!matcher) continue;
if (matcher.test && matcher.test(s)) return true;
if (matcher.toLowerCase() === down) return true;
}
}
module.exports = function toBoolean(str, trueValues, falseValues) {
if (typeof str === 'number') str = '' + str;
if (typeof str !== 'string') return !!str;
str = trim(str);
if (boolMatch(str, trueValues || ['true', '1'])) return true;
if (boolMatch(str, falseValues || ['false', '0'])) return false;
};
|