parse-js
Version:
Utility library for object structure conversion.
46 lines (33 loc) • 1.18 kB
JavaScript
;
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;