mirror of
https://github.com/atom/atom.git
synced 2026-04-06 03:02:13 -04:00
EventEmitter.off with no args removes all subscriptions
This commit is contained in:
@@ -52,6 +52,13 @@ describe "EventEmitter mixin", ->
|
||||
object.trigger('junk.garbage')
|
||||
|
||||
describe ".off", ->
|
||||
describe "when called with no arguments", ->
|
||||
it "removes all subscriptions", ->
|
||||
object.off()
|
||||
object.trigger 'foo'
|
||||
expect(fooHandler1).not.toHaveBeenCalled()
|
||||
expect(fooHandler2).not.toHaveBeenCalled()
|
||||
|
||||
describe "when called with a non-namespaced event name", ->
|
||||
it "removes all handlers for that event name", ->
|
||||
object.off 'foo'
|
||||
|
||||
@@ -24,13 +24,16 @@ module.exports =
|
||||
else
|
||||
@eventHandlersByEventName?[eventName]?.forEach (handler) -> handler(event)
|
||||
|
||||
off: (eventName, handler) ->
|
||||
off: (eventName='', handler) ->
|
||||
[eventName, namespace] = eventName.split('.')
|
||||
eventName = undefined if eventName is ''
|
||||
eventName = undefined if eventName == ''
|
||||
|
||||
subscriptionCountBefore = @subscriptionCount()
|
||||
|
||||
if namespace
|
||||
if !eventName? and !namespace?
|
||||
@eventHandlersByEventName = {}
|
||||
@eventHandlersByNamespace = {}
|
||||
else if namespace
|
||||
if eventName
|
||||
handlers = @eventHandlersByNamespace?[namespace]?[eventName] ? []
|
||||
for handler in new Array(handlers...)
|
||||
|
||||
Reference in New Issue
Block a user