| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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. |
| */ |
| |
| /** |
| Merge the contents of two objects together into the first object. |
| |
| ```javascript |
| Ember.merge({first: 'Tom'}, {last: 'Dale'}); // {first: 'Tom', last: 'Dale'} |
| var a = {first: 'Yehuda'}, b = {last: 'Katz'}; |
| Ember.merge(a, b); // a == {first: 'Yehuda', last: 'Katz'}, b == {last: 'Katz'} |
| ``` |
| |
| @method merge |
| @for Ember |
| @param {Object} original The object to merge into |
| @param {Object} updates The object to copy properties from |
| @return {Object} |
| */ |
| Ember.merge = function(original, updates) { |
| for (var prop in updates) { |
| if (!updates.hasOwnProperty(prop)) { continue; } |
| original[prop] = updates[prop]; |
| } |
| return original; |
| }; |
| |
| /** |
| Returns true if the passed value is null or undefined. This avoids errors |
| from JSLint complaining about use of ==, which can be technically |
| confusing. |
| |
| ```javascript |
| Ember.isNone(); // true |
| Ember.isNone(null); // true |
| Ember.isNone(undefined); // true |
| Ember.isNone(''); // false |
| Ember.isNone([]); // false |
| Ember.isNone(function() {}); // false |
| ``` |
| |
| @method isNone |
| @for Ember |
| @param {Object} obj Value to test |
| @return {Boolean} |
| */ |
| Ember.isNone = function(obj) { |
| return obj === null || obj === undefined; |
| }; |
| |
| /** |
| Verifies that a value is `null` or an empty string, empty array, |
| or empty function. |
| |
| Constrains the rules on `Ember.isNone` by returning false for empty |
| string and empty arrays. |
| |
| ```javascript |
| Ember.isEmpty(); // true |
| Ember.isEmpty(null); // true |
| Ember.isEmpty(undefined); // true |
| Ember.isEmpty(''); // true |
| Ember.isEmpty([]); // true |
| Ember.isEmpty('Adam Hawkins'); // false |
| Ember.isEmpty([0,1,2]); // false |
| ``` |
| |
| @method isEmpty |
| @for Ember |
| @param {Object} obj Value to test |
| @return {Boolean} |
| */ |
| Ember.isEmpty = function(obj) { |
| return Ember.isNone(obj) || (obj.length === 0 && typeof obj !== 'function') || (typeof obj === 'object' && Ember.get(obj, 'length') === 0); |
| }; |
| |
| /** |
| A value is blank if it is empty or a whitespace string. |
| |
| ```javascript |
| Ember.isBlank(); // true |
| Ember.isBlank(null); // true |
| Ember.isBlank(undefined); // true |
| Ember.isBlank(''); // true |
| Ember.isBlank([]); // true |
| Ember.isBlank('\n\t'); // true |
| Ember.isBlank(' '); // true |
| Ember.isBlank({}); // false |
| Ember.isBlank('\n\t Hello'); // false |
| Ember.isBlank('Hello world'); // false |
| Ember.isBlank([1,2,3]); // false |
| ``` |
| |
| @method isBlank |
| @for Ember |
| @param {Object} obj Value to test |
| @return {Boolean} |
| */ |
| Ember.isBlank = function(obj) { |
| return Ember.isEmpty(obj) || (typeof obj === 'string' && obj.match(/\S/) === null); |
| }; |
| |
| Em.View.reopen({ |
| /** |
| * overwritten set method of Ember.View to avoid uncaught errors |
| * when trying to set property of destroyed view |
| */ |
| set: function(attr, value){ |
| if(!this.get('isDestroyed') && !this.get('isDestroying')){ |
| this._super(attr, value); |
| } else { |
| console.debug('Calling set on destroyed view'); |
| } |
| } |
| }); |