class ReactiveObservers::Observer::Container

Attributes

constrain[RW]
context[RW]
fields[RW]
notify[RW]
observed[RW]
observer[RW]
on[RW]
only[RW]
refine[RW]
trigger[RW]
trigger_with_previous_values[RW]

Public Class Methods

new(observer, observed, options) click to toggle source
# File lib/reactive_observers/observer/container.rb, line 15
def initialize(observer, observed, options)
  @observer = observer
  @observed = observed.is_a?(Symbol) ? observed.to_s.classify.constantize : observed
  @on = Array.wrap options[:on]
  @fields = Array.wrap options[:fields]
  @only = options[:only]
  @trigger = options[:trigger] || ReactiveObservers.configuration.default_trigger
  @notify = options[:notify]
  @refine = options[:refine]
  @context = options[:context]
  ReactiveObservers::Observer::ContainerValidator.new(self).run_validations!
  @constrain = load_observer_constrains
  @trigger_with_previous_values = options[:trigger_with_previous_values] || false
end

Public Instance Methods

compare() click to toggle source
# File lib/reactive_observers/observer/container.rb, line 30
def compare
  ReactiveObservers::Observer::ContainerComparator.new(self)
end
klass_observed?() click to toggle source
# File lib/reactive_observers/observer/container.rb, line 38
def klass_observed?
  @observed.is_a? Class
end
klass_observer?() click to toggle source
# File lib/reactive_observers/observer/container.rb, line 34
def klass_observer?
  @observer.is_a? Class
end
observed_klass() click to toggle source
# File lib/reactive_observers/observer/container.rb, line 48
def observed_klass
  return @observed if klass_observed?

  @observed.class
end
observer_klass() click to toggle source
# File lib/reactive_observers/observer/container.rb, line 42
def observer_klass
  return @observer if klass_observer?

  @observer.class
end
to_h() click to toggle source
# File lib/reactive_observers/observer/container.rb, line 54
def to_h
  { observer: @observer, observed: @observed, fields: @fields, on: @on, only: @only, constrain: @constrain,
    trigger: @trigger, refine: @refine, notify: @notify, context: @context}
end

Private Instance Methods

load_observer_constrains() click to toggle source
# File lib/reactive_observers/observer/container.rb, line 61
def load_observer_constrains
  return [] if @observed.is_a?(Class)

  [@observed.id]
end