Skip to content

Commit d232a68

Browse files
committed
extract Ember.isEmpty into ember-metal
Ember computed.empty should always have identical semantics
1 parent 9883a2d commit d232a68

File tree

5 files changed

+37
-32
lines changed

5 files changed

+37
-32
lines changed

packages/ember-metal/lib/computed.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -437,7 +437,7 @@ Ember.computed.not = function(dependentKey) {
437437
Ember.computed.empty = function(dependentKey) {
438438
return Ember.computed(dependentKey, function(key) {
439439
var val = get(this, dependentKey);
440-
return val === undefined || val === null || val === '' || (Ember.isArray(val) && get(val, 'length') === 0);
440+
return Ember.isEmpty(val);
441441
});
442442
};
443443

packages/ember-metal/lib/core.js

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -228,3 +228,30 @@ Ember.merge = function(original, updates) {
228228
original[prop] = updates[prop];
229229
}
230230
};
231+
/**
232+
Verifies that a value is `null` or an empty string, empty array,
233+
or empty function.
234+
235+
Constrains the rules on `Ember.isNone` by returning false for empty
236+
string and empty arrays.
237+
238+
```javascript
239+
Ember.isEmpty(); // true
240+
Ember.isEmpty(null); // true
241+
Ember.isEmpty(undefined); // true
242+
Ember.isEmpty(''); // true
243+
Ember.isEmpty([]); // true
244+
Ember.isEmpty('Adam Hawkins'); // false
245+
Ember.isEmpty([0,1,2]); // false
246+
```
247+
248+
@method isEmpty
249+
@for Ember
250+
@param {Object} obj Value to test
251+
@return {Boolean}
252+
*/
253+
Ember.isEmpty = function(obj) {
254+
return obj === null || obj === undefined || (obj.length === 0 && typeof obj !== 'function') || (typeof obj === 'object' && Ember.get(obj, 'length') === 0);
255+
};
256+
Ember.empty = Ember.deprecateFunc("Ember.empty is deprecated. Please use Ember.isEmpty instead.", Ember.isEmpty) ;
257+

packages/ember-runtime/tests/core/isEmpty_test.js renamed to packages/ember-metal/tests/core/is_empty_test.js

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,7 @@ module("Ember.isEmpty");
22

33
test("Ember.isEmpty", function() {
44
var string = "string", fn = function() {},
5-
object = {length: 0},
6-
arrayProxy = Ember.ArrayProxy.create({ content: Ember.A([]) });
5+
object = {length: 0};
76

87
equal(true, Ember.isEmpty(null), "for null");
98
equal(true, Ember.isEmpty(undefined), "for undefined");
@@ -16,5 +15,4 @@ test("Ember.isEmpty", function() {
1615
equal(true, Ember.isEmpty([]), "for an empty Array");
1716
equal(false, Ember.isEmpty({}), "for an empty Object");
1817
equal(true, Ember.isEmpty(object), "for an Object that has zero 'length'");
19-
equal(true, Ember.isEmpty(arrayProxy), "for an ArrayProxy that has empty content");
2018
});

packages/ember-runtime/lib/core.js

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -106,34 +106,6 @@ Ember.isNone = function(obj) {
106106
};
107107
Ember.none = Ember.deprecateFunc("Ember.none is deprecated. Please use Ember.isNone instead.", Ember.isNone);
108108

109-
/**
110-
Verifies that a value is `null` or an empty string, empty array,
111-
or empty function.
112-
113-
Constrains the rules on `Ember.isNone` by returning false for empty
114-
string and empty arrays.
115-
116-
```javascript
117-
Ember.isEmpty(); // true
118-
Ember.isEmpty(null); // true
119-
Ember.isEmpty(undefined); // true
120-
Ember.isEmpty(''); // true
121-
Ember.isEmpty([]); // true
122-
Ember.isEmpty('Adam Hawkins'); // false
123-
Ember.isEmpty([0,1,2]); // false
124-
```
125-
126-
@method isEmpty
127-
@for Ember
128-
@param {Object} obj Value to test
129-
@return {Boolean}
130-
*/
131-
Ember.isEmpty = function(obj) {
132-
return obj === null || obj === undefined || (obj.length === 0 && typeof obj !== 'function') || (typeof obj === 'object' && Ember.get(obj, 'length') === 0);
133-
};
134-
Ember.empty = Ember.deprecateFunc("Ember.empty is deprecated. Please use Ember.isEmpty instead.", Ember.isEmpty) ;
135-
136-
/**
137109
This will compare two javascript values of possibly different types.
138110
It will tell you which one is greater than the other by returning:
139111

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
require('ember-metal/core');
2+
module("Ember.isEmpty");
3+
4+
test("Ember.isEmpty", function() {
5+
var arrayProxy = Ember.ArrayProxy.create({ content: Ember.A([]) });
6+
7+
equal(true, Ember.isEmpty(arrayProxy), "for an ArrayProxy that has empty content");
8+
});

0 commit comments

Comments
 (0)