Skip to content

Commit

Permalink
Revert "not using Hash.new for Eventable fixes the retain cycle until…
Browse files Browse the repository at this point in the history
… this"

This reverts commit 98f6c18.
  • Loading branch information
joenoon committed Jul 15, 2013
1 parent 5254305 commit 4837318
Showing 1 changed file with 4 additions and 9 deletions.
13 changes: 4 additions & 9 deletions motion/reactor/eventable.rb
Original file line number Diff line number Diff line change
Expand Up @@ -7,33 +7,28 @@ module Eventable
# and be passed the arguments that are passed to
# `trigger`.
def on(event, &blk)
events_for_event(event).push blk
__events__[event].push blk
end

# When `event` is triggered, do not call the given
# block any more
def off(event, &blk)
__events__[event].delete_if { |b| b == blk } if __events__.key?(event)
__events__[event].delete_if { |b| b == blk }
blk
end

# Trigger an event
def trigger(event, *args)
blks = events_for_event(event).clone
blks = __events__[event].clone
blks.map do |blk|
blk.call(*args)
end
end

private

def events_for_event(event)
__events__[event] ||= []
__events__[event]
end

def __events__
@__events__ ||= {}
@__events__ ||= Hash.new { |h,k| h[k] = [] }
end
end
end
Expand Down

0 comments on commit 4837318

Please sign in to comment.