UNPKG

parse-js

Version:

Utility library for object structure conversion.

46 lines (33 loc) 1.18 kB
'use strict'; var _isUndefined = require('lodash/isUndefined'); var _includes = require('lodash/includes'); var TRUE = ['1', 'true', 'yes', 'y']; var BOOLEAN = 'BOOLEAN'; var STRING = 'STRING'; var NUMBER = 'NUMBER'; function BooleanTransformer() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; if (!(this instanceof BooleanTransformer)) { return this.transform(new BooleanTransformer(options)); } this._defaultValue = options.defaultValue; this._reverseTo = options.reverseTo || BOOLEAN; } BooleanTransformer.BOOLEAN = BOOLEAN; BooleanTransformer.STRING = STRING; BooleanTransformer.NUMBER = NUMBER; BooleanTransformer.prototype.parse = function (value) { if (_isUndefined(value) && !_isUndefined(this._defaultValue)) return this._defaultValue; return typeof value === 'string' ? _includes(TRUE, value.toLowerCase()) : !!value; }; BooleanTransformer.prototype.reverse = function (source) { source = !!source; if (this._reverseTo === STRING) { return source ? 'true' : 'false'; } if (this._reverseTo === NUMBER) { return source ? 1 : 0; } return source; }; module.exports = BooleanTransformer;