summaryrefslogtreecommitdiff
path: root/node_modules/boolean/lib/isBooleanable.ts
blob: 7052ee342a72dd883e26b380b2e6505ed84929c3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
const isBooleanable = function (value: any): boolean {
  switch (Object.prototype.toString.call(value)) {
    case '[object String]':
      return [
        'true', 't', 'yes', 'y', 'on', '1',
        'false', 'f', 'no', 'n', 'off', '0'
      ].includes(value.trim().toLowerCase());

    case '[object Number]':
      return [ 0, 1 ].includes(value.valueOf());

    case '[object Boolean]':
      return true;

    default:
      return false;
  }
};

export { isBooleanable };