Class: Reacto::Operations::Inject
- Inherits:
-
Object
- Object
- Reacto::Operations::Inject
- Defined in:
- lib/reacto/operations/inject.rb
Instance Method Summary collapse
- #call(tracker) ⇒ Object
-
#initialize(injector, initial = NO_VALUE) ⇒ Inject
constructor
A new instance of Inject.
Constructor Details
#initialize(injector, initial = NO_VALUE) ⇒ Inject
Returns a new instance of Inject.
8 9 10 11 12 |
# File 'lib/reacto/operations/inject.rb', line 8 def initialize(injector, initial = NO_VALUE) @injector = injector @current = initial @has_values = false end |
Instance Method Details
#call(tracker) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/reacto/operations/inject.rb', line 14 def call(tracker) inject = lambda do |v| if @current == NO_VALUE @current = v else @current = @injector.call(@current, v) end @has_values = true tracker.on_value(@current) end close = lambda do unless @has_values || @current == NO_VALUE tracker.on_value(@current) end tracker.on_close end Subscriptions::OperationSubscription.new( tracker, value: inject, close: close ) end |