class Reacto::Operations::Inject
Public Class Methods
new(injector, initial = NO_VALUE)
click to toggle source
# File lib/reacto/operations/inject.rb, line 7 def initialize(injector, initial = NO_VALUE) @injector = injector @initial = initial end
Public Instance Methods
call(tracker)
click to toggle source
# File lib/reacto/operations/inject.rb, line 12 def call(tracker) @current = @initial @has_values = false inject = -> (v) do if @current == NO_VALUE @current = v else @current = @injector.call(@current, v) end @has_values = true tracker.on_value(@current) end close = -> () do unless @has_values || @current == NO_VALUE tracker.on_value(@current) end tracker.on_close end error = -> (e) do unless @has_values || @current == NO_VALUE tracker.on_value(@current) end tracker.on_error(e) end Subscriptions::OperationSubscription.new( tracker, value: inject, close: close, error: error ) end