UNPKG

bearcat-buffer

Version:

bearcat buffer

228 lines (192 loc) 4.12 kB
var Utils = {}; Utils.invokeCallback = function(cb) { if (typeof cb === 'function') { cb.apply(null, Array.prototype.slice.call(arguments, 1)); } }; Utils.applyCallback = function(cb, args) { if (typeof cb === 'function') { cb.apply(null, args); } }; Utils.getObjectClass = function(obj) { if (!obj) { return; } var constructor = obj.constructor; if (!constructor) { return; } if (constructor.name) { return constructor.name; } var str = constructor.toString(); if (!str) { return; } var arr = null; if (str.charAt(0) == '[') { arr = str.match(/\[\w+\s*(\w+)\]/); } else { arr = str.match(/function\s*(\w+)/); } if (arr && arr.length == 2) { return arr[1]; } }; /** * Utils check float * * @param {Float} float * @return {Boolean} true|false * @api public */ Utils.checkFloat = function(v) { return v === Number(v) && v % 1 !== 0; // return parseInt(v) !== v; } /** * Utils check type * * @param {String} type * @return {Function} high order function * @api public */ Utils.isType = function(type) { return function(obj) { return {}.toString.call(obj) == "[object " + type + "]"; } } /** * Utils check array * * @param {Array} array * @return {Boolean} true|false * @api public */ Utils.checkArray = Array.isArray || Utils.isType("Array"); /** * Utils check number * * @param {Number} number * @return {Boolean} true|false * @api public */ Utils.checkNumber = Utils.isType("Number"); /** * Utils check function * * @param {Function} func function * @return {Boolean} true|false * @api public */ Utils.checkFunction = Utils.isType("Function"); /** * Utils check object * * @param {Object} obj object * @return {Boolean} true|false * @api public */ Utils.checkObject = Utils.isType("Object"); /** * Utils check string * * @param {String} string * @return {Boolean} true|false * @api public */ Utils.checkString = Utils.isType("String"); /** * Utils check boolean * * @param {Object} obj object * @return {Boolean} true|false * @api public */ Utils.checkBoolean = Utils.isType("Boolean"); /** * Utils check bean * * @param {Object} obj object * @return {Boolean} true|false * @api public */ Utils.checkBean = function(obj) { return obj && obj['$id'] && Utils.checkFunction(obj['writeFields']) && Utils.checkFunction(obj['readFields']); } Utils.checkNull = function(obj) { return !Utils.isNotNull(obj); } /** * Utils args to array * * @param {Object} args arguments * @return {Array} array * @api public */ Utils.to_array = function(args) { var len = args.length; var arr = new Array(len); for (var i = 0; i < len; i++) { arr[i] = args[i]; } return arr; } /** * Utils check is not null * * @param {Object} value * @return {Boolean} true|false * @api public */ Utils.isNotNull = function(value) { if (value !== null && typeof value !== 'undefined') return true; return false; } Utils.getType = function(object) { if (object == null || typeof object === 'undefined') { return Utils.typeMap['null']; } if (Buffer.isBuffer(object)) { return Utils.typeMap['buffer']; } if (Utils.checkArray(object)) { return Utils.typeMap['array']; } if (Utils.checkString(object)) { return Utils.typeMap['string']; } if (Utils.checkObject(object)) { if (Utils.checkBean(object)) { return Utils.typeMap['bean']; } return Utils.typeMap['object']; } if (Utils.checkBoolean(object)) { return Utils.typeMap['boolean']; } if (Utils.checkNumber(object)) { if (Utils.checkFloat(object)) { return Utils.typeMap['float']; } if (isNaN(object)) { return Utils.typeMap['null']; } return object > 0 ? Utils.typeMap['uint'] : Utils.typeMap['sint']; } } var typeArray = ['', 'null', 'buffer', 'array', 'string', 'object', 'bean', 'boolean', 'float', 'uint', 'sint']; var typeMap = {}; for (var i = 1; i <= typeArray.length; i++) { typeMap[typeArray[i]] = i; } Utils.typeArray = typeArray; Utils.typeMap = typeMap; Utils.getBearcat = function() { return require('bear' + 'cat'); } module.exports = Utils;