Skip to content

Commit 02d69c8

Browse files
committed
Merge pull request #5136 from amiel/isPresent
[FEATURE ember-metal-is-present] Add Ember.isPresent
2 parents 2c8bbf0 + 065921e commit 02d69c8

File tree

5 files changed

+75
-1
lines changed

5 files changed

+75
-1
lines changed

FEATURES.md

+8
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,11 @@ for a detailed explanation.
7575
Prior to this feature `home.index` route would not be created for the above resource.
7676

7777
Added in [#4251](https://github.com/emberjs/ember.js/pull/4251)
78+
79+
* `ember-metal-is-present`
80+
81+
Adds `Ember.isPresent` as the inverse of `Ember.isBlank`. This convenience
82+
method can lead to more semantic and clearer code.
83+
84+
Added in [#5136](https://github.com/emberjs/ember.js/pull/5136)
85+

features.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@
88
"ember-routing-linkto-target-attribute": null,
99
"ember-routing-will-change-hooks": null,
1010
"ember-routing-consistent-resources": true,
11-
"event-dispatcher-can-disable-event-manager": null
11+
"event-dispatcher-can-disable-event-manager": null,
12+
"ember-metal-is-present": null
1213
},
1314
"debugStatements": [
1415
"Ember.warn",
+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import isBlank from 'ember-metal/is_blank';
2+
var isPresent;
3+
4+
if (Ember.FEATURES.isEnabled('ember-metal-is-present')) {
5+
/**
6+
A value is present if it not `isBlank`.
7+
8+
```javascript
9+
Ember.isPresent(); // false
10+
Ember.isPresent(null); // false
11+
Ember.isPresent(undefined); // false
12+
Ember.isPresent(''); // false
13+
Ember.isPresent([]); // false
14+
Ember.isPresent('\n\t'); // false
15+
Ember.isPresent(' '); // false
16+
Ember.isPresent({}); // true
17+
Ember.isPresent('\n\t Hello'); // true
18+
Ember.isPresent('Hello world'); // true
19+
Ember.isPresent([1,2,3]); // true
20+
```
21+
22+
@method isPresent
23+
@for Ember
24+
@param {Object} obj Value to test
25+
@return {Boolean}
26+
@since 1.7.0
27+
*/
28+
isPresent = function isPresent(obj) {
29+
return !isBlank(obj);
30+
};
31+
}
32+
33+
export default isPresent;

packages/ember-metal/lib/main.js

+5
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ import libraries from "ember-metal/libraries";
8484
import {isNone, none} from 'ember-metal/is_none';
8585
import {isEmpty, empty} from 'ember-metal/is_empty';
8686
import isBlank from 'ember-metal/is_blank';
87+
import isPresent from 'ember-metal/is_present';
8788
// END IMPORTS
8889

8990
// BEGIN EXPORTS
@@ -233,6 +234,10 @@ Ember.empty = empty;
233234

234235
Ember.isBlank = isBlank;
235236

237+
if (Ember.FEATURES.isEnabled('ember-metal-is-present')) {
238+
Ember.isPresent = isPresent;
239+
}
240+
236241
Ember.merge = merge;
237242

238243
/**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import isPresent from 'ember-metal/is_present';
2+
3+
if (Ember.FEATURES.isEnabled('ember-metal-is-present')) {
4+
QUnit.module("Ember.isPresent");
5+
6+
test("Ember.isPresent", function() {
7+
var string = "string", fn = function() {},
8+
object = {length: 0};
9+
10+
equal(false, isPresent(), "for no params");
11+
equal(false, isPresent(null), "for null");
12+
equal(false, isPresent(undefined), "for undefined");
13+
equal(false, isPresent(""), "for an empty String");
14+
equal(false, isPresent(" "), "for a whitespace String");
15+
equal(false, isPresent("\n\t"), "for another whitespace String");
16+
equal(true, isPresent("\n\t Hi"), "for a String with whitespaces");
17+
equal(true, isPresent(true), "for true");
18+
equal(true, isPresent(false), "for false");
19+
equal(true, isPresent(string), "for a String");
20+
equal(true, isPresent(fn), "for a Function");
21+
equal(true, isPresent(0), "for 0");
22+
equal(false, isPresent([]), "for an empty Array");
23+
equal(true, isPresent({}), "for an empty Object");
24+
equal(false, isPresent(object), "for an Object that has zero 'length'");
25+
equal(true, isPresent([1,2,3]), "for a non-empty array");
26+
});
27+
}

0 commit comments

Comments
 (0)