add support for more than one callback
This commit is contained in:
parent
0ab52943f5
commit
91cafec437
3
CHANGES
3
CHANGES
|
@ -1,5 +1,8 @@
|
||||||
= 1.3.1 / Not Yet Released
|
= 1.3.1 / Not Yet Released
|
||||||
|
|
||||||
|
* Support adding more than one callback to the stream object. (Konstantin
|
||||||
|
Haase)
|
||||||
|
|
||||||
= 1.3.0 / 2011-09-30
|
= 1.3.0 / 2011-09-30
|
||||||
|
|
||||||
* Added `stream` helper method for easily creating streaming APIs, Server
|
* Added `stream` helper method for easily creating streaming APIs, Server
|
||||||
|
|
|
@ -247,11 +247,11 @@ module Sinatra
|
||||||
def self.defer(*) yield end
|
def self.defer(*) yield end
|
||||||
|
|
||||||
def initialize(scheduler = self.class, keep_open = false, &back)
|
def initialize(scheduler = self.class, keep_open = false, &back)
|
||||||
@back, @scheduler, @callback, @keep_open = back.to_proc, scheduler, nil, keep_open
|
@back, @scheduler, @callbacks, @keep_open = back.to_proc, scheduler, [], keep_open
|
||||||
end
|
end
|
||||||
|
|
||||||
def close
|
def close
|
||||||
@scheduler.schedule { @callback.call if @callback }
|
@scheduler.schedule { @callbacks.each { |c| c.call }}
|
||||||
end
|
end
|
||||||
|
|
||||||
def each(&front)
|
def each(&front)
|
||||||
|
@ -272,7 +272,7 @@ module Sinatra
|
||||||
end
|
end
|
||||||
|
|
||||||
def callback(&block)
|
def callback(&block)
|
||||||
@callback = block
|
@callbacks << block
|
||||||
end
|
end
|
||||||
|
|
||||||
alias errback callback
|
alias errback callback
|
||||||
|
|
|
@ -56,6 +56,16 @@ class StreamingTest < Test::Unit::TestCase
|
||||||
assert_equal 0, final
|
assert_equal 0, final
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it 'allows adding more than one callback' do
|
||||||
|
a = b = false
|
||||||
|
stream = Stream.new { }
|
||||||
|
stream.callback { a = true }
|
||||||
|
stream.callback { b = true }
|
||||||
|
stream.each { |str| }
|
||||||
|
assert a, 'should trigger first callback'
|
||||||
|
assert b, 'should trigger second callback'
|
||||||
|
end
|
||||||
|
|
||||||
class MockScheduler
|
class MockScheduler
|
||||||
def initialize(*) @schedule, @defer = [], [] end
|
def initialize(*) @schedule, @defer = [], [] end
|
||||||
def schedule(&block) @schedule << block end
|
def schedule(&block) @schedule << block end
|
||||||
|
|
Loading…
Reference in New Issue