Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[FEATURE ember-metal-is-present] Add Ember.isPresent #5136

Merged
merged 1 commit into from Jul 10, 2014
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
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");
});
}