multiple values auto emit

This commit is contained in:
Colin Surprenant 2011-11-15 23:53:13 -05:00
parent 89396e1ad0
commit 96fa35ab50
2 changed files with 4 additions and 4 deletions

View File

@ -39,8 +39,8 @@ module RedStorm
def execute(tuple)
if (output = instance_exec(tuple, &self.class.on_receive_block)) && self.class.emit?
values = [output].flatten
self.class.anchor? ? @collector.emit(tuple, Values.new(*values)) : emit(*values)
values_list = !output.is_a?(Array) ? [[output]] : !output.first.is_a?(Array) ? [output] : output
values_list.each{|values| self.class.anchor? ? @collector.emit(tuple, Values.new(*values)) : @collector.emit(Values.new(*values))}
@collector.ack(tuple) if self.class.ack?
end
end

View File

@ -297,7 +297,7 @@ describe RedStorm::SimpleBolt do
class RedStorm::Values; end
it "should auto emit on single value output" do
it "should auto single emit on single value output" do
class Bolt1 < RedStorm::SimpleBolt
on_receive {|tuple| tuple}
end
@ -326,7 +326,7 @@ describe RedStorm::SimpleBolt do
bolt.execute("output")
end
it "should auto emit on multiple value output" do
it "should auto single emit on multiple value output" do
class Bolt1 < RedStorm::SimpleBolt
on_receive {|tuple| tuple}
end