/*! * Should * Copyright(c) 2010-2014 TJ Holowaychuk * MIT Licensed */ /** * Check if given obj just a primitive type wrapper * @param {Object} obj * @returns {boolean} * @api private */ exports.isWrapperType = function(obj) { return isNumber(obj) || isString(obj) || isBoolean(obj); }; /** * Merge object b with object a. * * var a = { foo: 'bar' } * , b = { bar: 'baz' }; * * utils.merge(a, b); * // => { foo: 'bar', bar: 'baz' } * * @param {Object} a * @param {Object} b * @return {Object} * @api private */ exports.merge = function(a, b){ if (a && b) { for (var key in b) { a[key] = b[key]; } } return a; }; function isNumber(arg) { return typeof arg === 'number' || arg instanceof Number; } exports.isNumber = isNumber; function isString(arg) { return typeof arg === 'string' || arg instanceof String; } function isBoolean(arg) { return typeof arg === 'boolean' || arg instanceof Boolean; } exports.isBoolean = isBoolean; exports.isString = isString; function isBuffer(arg) { return typeof Buffer !== 'undefined' && arg instanceof Buffer; } exports.isBuffer = isBuffer; function isDate(d) { return isObject(d) && objectToString(d) === '[object Date]'; } exports.isDate = isDate; function objectToString(o) { return Object.prototype.toString.call(o); } function isObject(arg) { return typeof arg === 'object' && arg !== null; } exports.isObject = isObject; function isRegExp(re) { return isObject(re) && objectToString(re) === '[object RegExp]'; } exports.isRegExp = isRegExp; function isNullOrUndefined(arg) { return arg == null; } exports.isNullOrUndefined = isNullOrUndefined; function isArguments(object) { return objectToString(object) === '[object Arguments]'; } exports.isArguments = isArguments; exports.isFunction = function(arg) { return typeof arg === 'function' || arg instanceof Function; }; function isError(e) { return isObject(e) && objectToString(e) === '[object Error]'; } exports.isError = isError; exports.inspect = require('util').inspect; exports.AssertionError = require('assert').AssertionError; var hasOwnProperty = Object.prototype.hasOwnProperty; exports.forOwn = function(obj, f, context) { for(var prop in obj) { if(hasOwnProperty.call(obj, prop)) { f.call(context, obj[prop], prop); } } };