From 848ce7936f98c79aa1f6661bfaaa0e8fb8b51b48 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki & Nathan Sobo Date: Thu, 16 May 2013 13:43:18 -0700 Subject: [PATCH] DRY up subscribe and subscribeToCommand subscribeToCommand now supports unsubscribing by object. --- src/stdlib/subscriber.coffee | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/stdlib/subscriber.coffee b/src/stdlib/subscriber.coffee index 5975451a5..e1ad6f4a2 100644 --- a/src/stdlib/subscriber.coffee +++ b/src/stdlib/subscriber.coffee @@ -1,23 +1,24 @@ _ = require 'underscore' module.exports = - subscribe: (eventEmitter, subscribeArgs...) -> - eventEmitter.on(subscribeArgs...) + subscribeWith: (eventEmitter, methodName, args) -> + eventEmitter[methodName](args...) @subscriptions ?= [] @subscriptionsByObject ?= new WeakMap @subscriptionsByObject.set(eventEmitter, []) unless @subscriptionsByObject.has(eventEmitter) - eventName = _.first(subscribeArgs) - callback = _.last(subscribeArgs) + eventName = _.first(args) + callback = _.last(args) subscription = cancel: -> eventEmitter.off eventName, callback @subscriptions.push(subscription) @subscriptionsByObject.get(eventEmitter).push(subscription) - subscribeToCommand: (view, eventName, callback) -> - view.command eventName, callback - @subscriptions ?= [] - @subscriptions.push(cancel: -> view.off eventName, callback) + subscribe: (eventEmitter, args...) -> + @subscribeWith(eventEmitter, 'on', args) + + subscribeToCommand: (eventEmitter, args...) -> + @subscribeWith(eventEmitter, 'command', args) unsubscribe: (object) -> if object?