class Reacto::Operations::Take
Public Class Methods
new(how_many_to_take)
click to toggle source
# File lib/reacto/operations/take.rb, line 6 def initialize(how_many_to_take) if how_many_to_take < 0 raise ArgumentError.new('Attempt to take negative size!') end @how_many_to_take = how_many_to_take end
Public Instance Methods
call(tracker)
click to toggle source
# File lib/reacto/operations/take.rb, line 14 def call(tracker) taken = 0 closed = false behaviour = -> (value) do return if closed if taken < @how_many_to_take tracker.on_value(value) taken += 1 else closed = true tracker.on_close end end Subscriptions::OperationSubscription.new(tracker, value: behaviour) end