| |
| /** |
| * HOP ref. |
| */ |
| |
| var has = Object.prototype.hasOwnProperty; |
| |
| /** |
| * Return own keys in `obj`. |
| * |
| * @param {Object} obj |
| * @return {Array} |
| * @api public |
| */ |
| |
| exports.keys = Object.keys || function(obj){ |
| var keys = []; |
| for (var key in obj) { |
| if (has.call(obj, key)) { |
| keys.push(key); |
| } |
| } |
| return keys; |
| }; |
| |
| /** |
| * Return own values in `obj`. |
| * |
| * @param {Object} obj |
| * @return {Array} |
| * @api public |
| */ |
| |
| exports.values = function(obj){ |
| var vals = []; |
| for (var key in obj) { |
| if (has.call(obj, key)) { |
| vals.push(obj[key]); |
| } |
| } |
| return vals; |
| }; |
| |
| /** |
| * Merge `b` into `a`. |
| * |
| * @param {Object} a |
| * @param {Object} b |
| * @return {Object} a |
| * @api public |
| */ |
| |
| exports.merge = function(a, b){ |
| for (var key in b) { |
| if (has.call(b, key)) { |
| a[key] = b[key]; |
| } |
| } |
| return a; |
| }; |
| |
| /** |
| * Return length of `obj`. |
| * |
| * @param {Object} obj |
| * @return {Number} |
| * @api public |
| */ |
| |
| exports.length = function(obj){ |
| return exports.keys(obj).length; |
| }; |
| |
| /** |
| * Check if `obj` is empty. |
| * |
| * @param {Object} obj |
| * @return {Boolean} |
| * @api public |
| */ |
| |
| exports.isEmpty = function(obj){ |
| return 0 == exports.length(obj); |
| }; |