21 lines
668 B
JavaScript
21 lines
668 B
JavaScript
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;
|
|
};
|