| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- /*
- * Utilities: A classic collection of JavaScript utilities
- * Copyright 2112 Matthew Eernisse ([email protected])
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
- /**
- @name object
- @namespace object
- */
- var object = new (function () {
- /**
- @name object#merge
- @public
- @function
- @return {Object} Returns the merged object
- @description Merge merges `otherObject` into `object` and takes care of deep
- merging of objects
- @param {Object} object Object to merge into
- @param {Object} otherObject Object to read from
- */
- this.merge = function (object, otherObject) {
- var obj = object || {}
- , otherObj = otherObject || {}
- , key, value;
- for (key in otherObj) {
- value = otherObj[key];
- // Check if a value is an Object, if so recursively add it's key/values
- if (typeof value === 'object' && !(value instanceof Array)) {
- // Update value of object to the one from otherObj
- obj[key] = this.merge(obj[key], value);
- }
- // Value is anything other than an Object, so just add it
- else {
- obj[key] = value;
- }
- }
- return obj;
- };
- /**
- @name object#reverseMerge
- @public
- @function
- @return {Object} Returns the merged object
- @description ReverseMerge merges `object` into `defaultObject`
- @param {Object} object Object to read from
- @param {Object} defaultObject Object to merge into
- */
- this.reverseMerge = function (object, defaultObject) {
- // Same as `merge` except `defaultObject` is the object being changed
- // - this is useful if we want to easily deal with default object values
- return this.merge(defaultObject, object);
- };
- /**
- @name object#isEmpty
- @public
- @function
- @return {Boolean} Returns true if empty false otherwise
- @description isEmpty checks if an Object is empty
- @param {Object} object Object to check if empty
- */
- this.isEmpty = function (object) {
- // Returns true if a object is empty false if not
- for (var i in object) { return false; }
- return true;
- };
- /**
- @name object#toArray
- @public
- @function
- @return {Array} Returns an array of objects each including the original key and value
- @description Converts an object to an array of objects each including the original key/value
- @param {Object} object Object to convert
- */
- this.toArray = function (object) {
- // Converts an object into an array of objects with the original key, values
- array = [];
- for (var i in object) {
- array.push({ key: i, value: object[i] });
- }
- return array;
- };
- })();
- module.exports = object;
|