Class: Reacto::Operations::Diff

Inherits:
Object
  • Object
show all
Defined in:
lib/reacto/operations/diff.rb

Constant Summary collapse

DEFAULT_FN =
-> (a, b) { [a, b] }

Instance Method Summary collapse

Constructor Details

#initialize(fn = DEFAULT_FN, initial = NO_VALUE) ⇒ Diff

Returns a new instance of Diff.



9
10
11
12
# File 'lib/reacto/operations/diff.rb', line 9

def initialize(fn = DEFAULT_FN, initial = NO_VALUE)
  @fn = fn
  @prev = initial
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
# File 'lib/reacto/operations/diff.rb', line 14

def call(tracker)
  value = lambda do |v|
    if @prev == NO_VALUE
      @prev = v
      return
    end

    current = @fn.call(@prev, v)
    @prev = v

    tracker.on_value(current)
  end


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