subscriber does not need to be a block, but an object that responds to #call

This commit is contained in:
Aaron Patterson 2010-07-18 17:20:20 -07:00
parent b2c8a5fd3e
commit 8cbb89c0bf

@ -8,9 +8,9 @@ def initialize
@listeners_for = {}
end
def subscribe(pattern = nil, &block)
def subscribe(pattern = nil, block = Proc.new)
@listeners_for.clear
Subscriber.new(pattern, &block).tap do |s|
Subscriber.new(pattern, block).tap do |s|
@subscribers << s
end
end
@ -33,14 +33,14 @@ def wait
end
class Subscriber #:nodoc:
def initialize(pattern, &block)
def initialize(pattern, delegate)
@pattern = pattern
@block = block
@delegate = delegate
end
def publish(*args)
return unless subscribed_to?(args.first)
@block.call(*args)
@delegate.call(*args)
true
end