23 lines
750 B
JavaScript
23 lines
750 B
JavaScript
const rTrue=['t','true','y','yes','on','positive','up','enabled','affirmative','yea','sure']
|
|
const rFalse=['f','false','n','no','off','negative','down','disabled','nope']
|
|
|
|
function createBoolean (opts={}) {
|
|
return (value => {
|
|
if (value===undefined) return opts.undefined
|
|
if (value===null) return opts.null
|
|
if (!isNaN(Number(value))) return Number(value) <1 ? false :true
|
|
if (typeof value==='string') {
|
|
value = value.trim()
|
|
value = value.toLowerCase()
|
|
if ((opts.rTrue || rTrue).includes(value)) return true
|
|
if ((opts.rFalse || rFalse).includes(value)) return false
|
|
}
|
|
return !!value
|
|
})
|
|
}
|
|
|
|
const toBoolean = createBoolean()
|
|
|
|
export default toBoolean
|
|
export { toBoolean, createBoolean, rTrue, rFalse }
|