class ReactiveObservers::Observer::ContainerComparator

Public Class Methods

new(observer) click to toggle source
# File lib/reactive_observers/observer/container_comparator.rb, line 6
def initialize(observer)
  @observer = observer
end

Public Instance Methods

full?(observer) click to toggle source
# File lib/reactive_observers/observer/container_comparator.rb, line 18
def full?(observer)
  partial?(observer.observer, fields: observer.fields, on: observer.on, constrain: observer.constrain) &&
    @observer.observed == observer.observed &&
    @observer.trigger == observer.trigger &&
    @observer.notify == observer.notify &&
    @observer.refine == observer.refine &&
    @observer.only == observer.only
end
partial?(observer, options) click to toggle source
# File lib/reactive_observers/observer/container_comparator.rb, line 10
def partial?(observer, options)
  @observer.observer == observer &&
    array_compare_of(@observer.fields, options[:fields]) &&
    array_compare_of(@observer.on, options[:on]) &&
    context_compare_with(options[:context]) &&
    constrain_compare_with(options[:constrain])
end

Private Instance Methods

array_compare_of(argument, option_value) click to toggle source
# File lib/reactive_observers/observer/container_comparator.rb, line 29
def array_compare_of(argument, option_value)
  argument.blank? || option_value.blank? || (argument & Array.wrap(option_value)).length.positive?
end
constrain_compare_with(value) click to toggle source
# File lib/reactive_observers/observer/container_comparator.rb, line 33
def constrain_compare_with(value)
  value = Array.wrap value
  value.blank? || @observer.constrain == value || (@observer.constrain & value).length.positive?
end
context_compare_with(value) click to toggle source
# File lib/reactive_observers/observer/container_comparator.rb, line 38
def context_compare_with(value)
  value.blank? || @observer.context == value
end