mirror of
https://github.com/sinatra/sinatra
synced 2023-03-27 23:18:01 -04:00
add support for more than one callback
This commit is contained in:
parent
0ab52943f5
commit
91cafec437
3 changed files with 16 additions and 3 deletions
3
CHANGES
3
CHANGES
|
@ -1,5 +1,8 @@
|
|||
= 1.3.1 / Not Yet Released
|
||||
|
||||
* Support adding more than one callback to the stream object. (Konstantin
|
||||
Haase)
|
||||
|
||||
= 1.3.0 / 2011-09-30
|
||||
|
||||
* Added `stream` helper method for easily creating streaming APIs, Server
|
||||
|
|
|
@ -247,11 +247,11 @@ module Sinatra
|
|||
def self.defer(*) yield end
|
||||
|
||||
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
|
||||
|
||||
def close
|
||||
@scheduler.schedule { @callback.call if @callback }
|
||||
@scheduler.schedule { @callbacks.each { |c| c.call }}
|
||||
end
|
||||
|
||||
def each(&front)
|
||||
|
@ -272,7 +272,7 @@ module Sinatra
|
|||
end
|
||||
|
||||
def callback(&block)
|
||||
@callback = block
|
||||
@callbacks << block
|
||||
end
|
||||
|
||||
alias errback callback
|
||||
|
|
|
@ -56,6 +56,16 @@ class StreamingTest < Test::Unit::TestCase
|
|||
assert_equal 0, final
|
||||
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
|
||||
def initialize(*) @schedule, @defer = [], [] end
|
||||
def schedule(&block) @schedule << block end
|
||||
|
|
Loading…
Add table
Reference in a new issue