Sha256: b4cdd2a6b60df287b9d49a94815f1de461294faaaed1b21caad6d99b0e41aefd
Contents?: true
Size: 743 Bytes
Versions: 3
Compression:
Stored size: 743 Bytes
Contents
module BubbleWrap module Reactor # A simple mixin that adds events to your object. module Eventable # When `event` is triggered the block will execute # and be passed the arguments that are passed to # `trigger`. def on(event, &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 } blk end # Trigger an event def trigger(event, *args) events[event].map do |event| event.call(*args) end end private def events @events ||= Hash.new { |h,k| h[k] = [] } end end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
bubble-wrap-1.3.0.osx | motion/reactor/eventable.rb |
bubble-wrap-1.2.0 | motion/reactor/eventable.rb |
bubble-wrap-1.2.0.pre | motion/reactor/eventable.rb |