class Reacto::Operations::TakeWhile

Public Class Methods

new(predicate) click to toggle source
# File lib/reacto/operations/take_while.rb, line 6
def initialize(predicate)
  @predicate = predicate
end

Public Instance Methods

call(tracker) click to toggle source
# File lib/reacto/operations/take_while.rb, line 10
def call(tracker)
  closed = false

  behaviour = -> (value) do
    return if closed

    if @predicate.call(value)
      tracker.on_value(value)
    else
      closed = true
      tracker.on_close
    end
  end

  Subscriptions::OperationSubscription.new(tracker, value: behaviour)
end