class Reacto::Operations::OperationOnLabeled

Public Class Methods

new(label, action, op: :map, **args) click to toggle source
# File lib/reacto/operations/operation_on_labeled.rb, line 6
def initialize(label, action, op: :map, **args)
  @op = op
  @action = action
  @label = label
  @args = args
end

Public Instance Methods

call(tracker) click to toggle source
# File lib/reacto/operations/operation_on_labeled.rb, line 13
def call(tracker)
  value = -> (v) do
    to_emit =
      if v.is_a?(LabeledTrackable) && v.label == @label
        v.send(@op, **@args, &@action)
      else
        v
      end

    tracker.on_value(to_emit)
  end

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