Skip to content

Commit

Permalink
[FEATURE ember-metal-is-present]
Browse files Browse the repository at this point in the history
Add Ember.isPresent as inverse of Ember.isBlank
  • Loading branch information
Amiel Martin committed Jul 10, 2014
1 parent a47897e commit 065921e
Show file tree
Hide file tree
Showing 5 changed files with 75 additions and 1 deletion.
8 changes: 8 additions & 0 deletions FEATURES.md
Expand Up @@ -75,3 +75,11 @@ for a detailed explanation.
Prior to this feature `home.index` route would not be created for the above resource. Prior to this feature `home.index` route would not be created for the above resource.


Added in [#4251](https://github.com/emberjs/ember.js/pull/4251) Added in [#4251](https://github.com/emberjs/ember.js/pull/4251)

* `ember-metal-is-present`

Adds `Ember.isPresent` as the inverse of `Ember.isBlank`. This convenience
method can lead to more semantic and clearer code.

Added in [#5136](https://github.com/emberjs/ember.js/pull/5136)

3 changes: 2 additions & 1 deletion features.json
Expand Up @@ -8,7 +8,8 @@
"ember-routing-linkto-target-attribute": null, "ember-routing-linkto-target-attribute": null,
"ember-routing-will-change-hooks": null, "ember-routing-will-change-hooks": null,
"ember-routing-consistent-resources": true, "ember-routing-consistent-resources": true,
"event-dispatcher-can-disable-event-manager": null "event-dispatcher-can-disable-event-manager": null,
"ember-metal-is-present": null
}, },
"debugStatements": [ "debugStatements": [
"Ember.warn", "Ember.warn",
Expand Down
33 changes: 33 additions & 0 deletions packages/ember-metal/lib/is_present.js
@@ -0,0 +1,33 @@
import isBlank from 'ember-metal/is_blank';
var isPresent;

if (Ember.FEATURES.isEnabled('ember-metal-is-present')) {
/**
A value is present if it not `isBlank`.
```javascript
Ember.isPresent(); // false
Ember.isPresent(null); // false
Ember.isPresent(undefined); // false
Ember.isPresent(''); // false
Ember.isPresent([]); // false
Ember.isPresent('\n\t'); // false
Ember.isPresent(' '); // false
Ember.isPresent({}); // true
Ember.isPresent('\n\t Hello'); // true
Ember.isPresent('Hello world'); // true
Ember.isPresent([1,2,3]); // true
```
@method isPresent
@for Ember
@param {Object} obj Value to test
@return {Boolean}
@since 1.7.0
*/
isPresent = function isPresent(obj) {
return !isBlank(obj);
};
}

export default isPresent;
5 changes: 5 additions & 0 deletions packages/ember-metal/lib/main.js
Expand Up @@ -81,6 +81,7 @@ import libraries from "ember-metal/libraries";
import {isNone, none} from 'ember-metal/is_none'; import {isNone, none} from 'ember-metal/is_none';
import {isEmpty, empty} from 'ember-metal/is_empty'; import {isEmpty, empty} from 'ember-metal/is_empty';
import isBlank from 'ember-metal/is_blank'; import isBlank from 'ember-metal/is_blank';
import isPresent from 'ember-metal/is_present';
// END IMPORTS // END IMPORTS


// BEGIN EXPORTS // BEGIN EXPORTS
Expand Down Expand Up @@ -230,6 +231,10 @@ Ember.empty = empty;


Ember.isBlank = isBlank; Ember.isBlank = isBlank;


if (Ember.FEATURES.isEnabled('ember-metal-is-present')) {
Ember.isPresent = isPresent;
}

Ember.merge = merge; Ember.merge = merge;


/** /**
Expand Down
27 changes: 27 additions & 0 deletions packages/ember-metal/tests/is_present_test.js
@@ -0,0 +1,27 @@
import isPresent from 'ember-metal/is_present';

if (Ember.FEATURES.isEnabled('ember-metal-is-present')) {
QUnit.module("Ember.isPresent");

test("Ember.isPresent", function() {
var string = "string", fn = function() {},
object = {length: 0};

equal(false, isPresent(), "for no params");
equal(false, isPresent(null), "for null");
equal(false, isPresent(undefined), "for undefined");
equal(false, isPresent(""), "for an empty String");
equal(false, isPresent(" "), "for a whitespace String");
equal(false, isPresent("\n\t"), "for another whitespace String");
equal(true, isPresent("\n\t Hi"), "for a String with whitespaces");
equal(true, isPresent(true), "for true");
equal(true, isPresent(false), "for false");
equal(true, isPresent(string), "for a String");
equal(true, isPresent(fn), "for a Function");
equal(true, isPresent(0), "for 0");
equal(false, isPresent([]), "for an empty Array");
equal(true, isPresent({}), "for an empty Object");
equal(false, isPresent(object), "for an Object that has zero 'length'");
equal(true, isPresent([1,2,3]), "for a non-empty array");
});
}

0 comments on commit 065921e

Please sign in to comment.