module Reacto::Behaviours

Public Instance Methods

array_repeat_enumerator(array) click to toggle source
# File lib/reacto/behaviours.rb, line 53
def array_repeat_enumerator(array)
  size = array.size

  Enumerator.new do |yielder|
    n = 0
    loop do
      yielder.yield array[n % size]
      n = n + 1
    end
  end
end
constant(const) click to toggle source
# File lib/reacto/behaviours.rb, line 65
def constant(const)
  -> (_val) { const }
end
enumerable(enumerable_value) click to toggle source
# File lib/reacto/behaviours.rb, line 28
def enumerable(enumerable_value)
  ->(tracker) do
    begin
      enumerable_value.each do |val|
        break unless tracker.subscribed?
        tracker.on_value(val)
      end

      tracker.on_close if tracker.subscribed?
    rescue => error
      tracker.on_error(error) if tracker.subscribed?
    end
  end
end
integers_enumerator() click to toggle source
# File lib/reacto/behaviours.rb, line 43
def integers_enumerator
  Enumerator.new do |yielder|
    n = 0
    loop do
      yielder << n
      n = n + 1
    end
  end
end
same_predicate(val) click to toggle source
# File lib/reacto/behaviours.rb, line 69
def same_predicate(val)
  -> (value) { val == value }
end
single_tracker_value(tracker, value) click to toggle source
# File lib/reacto/behaviours.rb, line 14
def single_tracker_value(tracker, value)
  with_close_and_error(tracker) do |subscriber|
    subscriber.on_value(value) if subscriber.subscribed?
  end
end
single_value(value) click to toggle source
# File lib/reacto/behaviours.rb, line 20
def single_value(value)
  lambda do |tracker|
    with_close_and_error(tracker) do |subscriber|
      subscriber.on_value(value) if subscriber.subscribed?
    end
  end
end
with_close_and_error(tracker) { |tracker| ... } click to toggle source
# File lib/reacto/behaviours.rb, line 5
def with_close_and_error(tracker, &block)
  begin
    yield tracker if block_given?
    tracker.on_close if tracker.subscribed?
  rescue StandardError => error
    tracker.on_error(error) if tracker.subscribed?
  end
end