Skip to content

Commit

Permalink
Removing more beforeObserver-related code
Browse files Browse the repository at this point in the history
This stuff is unused now.
  • Loading branch information
ef4 authored and rwjblue committed Aug 23, 2015
1 parent c9bbfb6 commit a517504
Show file tree
Hide file tree
Showing 3 changed files with 0 additions and 122 deletions.
73 changes: 0 additions & 73 deletions packages/ember-metal/lib/mixin.js
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,6 @@ import { Binding } from 'ember-metal/binding';
import {
addObserver,
removeObserver,
_addBeforeObserver,
_removeBeforeObserver,
_suspendObserver
} from 'ember-metal/observer';
import {
Expand Down Expand Up @@ -362,13 +360,11 @@ function replaceObserversAndListeners(obj, key, observerOrListener) {
var prev = obj[key];

if ('function' === typeof prev) {
updateObserversAndListeners(obj, key, prev, '__ember_observesBefore__', _removeBeforeObserver);
updateObserversAndListeners(obj, key, prev, '__ember_observes__', removeObserver);
updateObserversAndListeners(obj, key, prev, '__ember_listens__', removeListener);
}

if ('function' === typeof observerOrListener) {
updateObserversAndListeners(obj, key, observerOrListener, '__ember_observesBefore__', _addBeforeObserver);
updateObserversAndListeners(obj, key, observerOrListener, '__ember_observes__', addObserver);
updateObserversAndListeners(obj, key, observerOrListener, '__ember_listens__', addListener);
}
Expand Down Expand Up @@ -818,75 +814,6 @@ export function _immediateObserver() {
return observer.apply(this, arguments);
}

/**
When observers fire, they are called with the arguments `obj`, `keyName`.
Note, `@each.property` observer is called per each add or replace of an element
and it's not called with a specific enumeration item.
A `_beforeObserver` fires before a property changes.
A `_beforeObserver` is an alternative form of `.observesBefore()`.
```javascript
App.PersonView = Ember.View.extend({
friends: [{ name: 'Tom' }, { name: 'Stefan' }, { name: 'Kris' }],
valueDidChange: Ember.observer('content.value', function(obj, keyName) {
// only run if updating a value already in the DOM
if (this.get('state') === 'inDOM') {
var color = obj.get(keyName) > this.changingFrom ? 'green' : 'red';
// logic
}
}),
friendsDidChange: Ember.observer('[email protected]', function(obj, keyName) {
// some logic
// obj.get(keyName) returns friends array
})
});
```
Also available as `Function.prototype.observesBefore` if prototype extensions are
enabled.
@method beforeObserver
@for Ember
@param {String} propertyNames*
@param {Function} func
@return func
@deprecated
@private
*/
export function _beforeObserver(...args) {
var func = args.slice(-1)[0];
var paths;

var addWatchedProperty = function(path) { paths.push(path); };

var _paths = args.slice(0, -1);

if (typeof func !== 'function') {
// revert to old, soft-deprecated argument ordering

func = args[0];
_paths = args.slice(1);
}

paths = [];

for (var i = 0; i < _paths.length; ++i) {
expandProperties(_paths[i], addWatchedProperty);
}

if (typeof func !== 'function') {
throw new Ember.Error('Ember.beforeObserver called without a function');
}

func.__ember_observesBefore__ = paths;
return func;
}

export {
IS_BINDING,
Mixin,
Expand Down
1 change: 0 additions & 1 deletion packages/ember-metal/lib/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -332,7 +332,6 @@ function _wrap(func, superFunc) {

superWrapper.wrappedFunction = func;
superWrapper.__ember_observes__ = func.__ember_observes__;
superWrapper.__ember_observesBefore__ = func.__ember_observesBefore__;
superWrapper.__ember_listens__ = func.__ember_listens__;

return superWrapper;
Expand Down
48 changes: 0 additions & 48 deletions packages/ember-metal/tests/observer_test.js
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import {
Mixin,
mixin,
observer,
_beforeObserver,
_immediateObserver
} from 'ember-metal/mixin';
import run from 'ember-metal/run_loop';
Expand Down Expand Up @@ -679,53 +678,6 @@ testBoth('observer should fire before dependent property is modified', function(
equal(count, 1, 'should have invoked observer');
});

testBoth('before observer watching multiple properties via brace expansion should fire when properties change', function (get, set) {
var obj = {};
var count = 0;

mixin(obj, {
fooAndBarWatcher: _beforeObserver('{foo,bar}', function () {
count++;
})
});

set(obj, 'foo', 'foo');
equal(count, 1, 'observer specified via brace expansion invoked on property change');

set(obj, 'bar', 'bar');
equal(count, 2, 'observer specified via brace expansion invoked on property change');

set(obj, 'baz', 'baz');
equal(count, 2, 'observer not invoked on unspecified property');
});

testBoth('before observer watching multiple properties via brace expansion should fire when dependent property changes', function (get, set) {
var obj = { baz: 'Initial' };
var count = 0;

defineProperty(obj, 'foo', computed(function() {
return get(this, 'bar').toLowerCase();
}).property('bar'));

defineProperty(obj, 'bar', computed(function() {
return get(this, 'baz').toUpperCase();
}).property('baz'));

mixin(obj, {
fooAndBarWatcher: _beforeObserver('{foo,bar}', function () {
count++;
})
});

get(obj, 'foo');
set(obj, 'baz', 'Baz');
// fire once for foo, once for bar
equal(count, 2, 'observer specified via brace expansion invoked on dependent property change');

set(obj, 'quux', 'Quux');
equal(count, 2, 'observer not fired on unspecified property');
});

testBoth('_addBeforeObserver should propagate through prototype', function(get, set) {
var obj = { foo: 'foo', count: 0 };
var obj2;
Expand Down

0 comments on commit a517504

Please sign in to comment.