Class: Tarantool::EMDB::ConcatterReplace
- Inherits:
-
Object
- Object
- Tarantool::EMDB::ConcatterReplace
- Defined in:
- lib/tarantool/em_db.rb
Instance Method Summary collapse
- #call(array) ⇒ Object
-
#initialize(count, feed) ⇒ ConcatterReplace
constructor
A new instance of ConcatterReplace.
Constructor Details
#initialize(count, feed) ⇒ ConcatterReplace
Returns a new instance of ConcatterReplace.
186 187 188 189 190 |
# File 'lib/tarantool/em_db.rb', line 186 def initialize(count, feed) @result = [] @count = count @feed = feed end |
Instance Method Details
#call(array) ⇒ Object
191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 |
# File 'lib/tarantool/em_db.rb', line 191 def call(array) if @count > 0 case array when Array @result.concat array when ::Tarantool::TupleDoesntExists @result << array when Exception @result = array @count = 1 else @result << array end if (@count -= 1) == 0 if Exception === @result @feed.call @result elsif @result.all?{|r| ::Tarantool::TupleDoesntExists === r} @feed.call @result.first else @result.delete_if{|r| ::Tarantool::TupleDoesntExists === r} if Integer === @result.first @feed.call @result.inject(0){|s, i| s + i} else @feed.call @result end end end end end |