class Delta::SetOperator

Constants

ADAPTERS

Attributes

a[RW]
b[RW]
changes[RW]
identifiers[RW]

Public Class Methods

adapt(a:, b:, identifiers:, changes:) click to toggle source
# File lib/delta/set_operator.rb, line 5
def self.adapt(a:, b:, identifiers:, changes:)
  adapter = ADAPTERS.find { |klass| klass.compatible?(a, b) }
  adapter = ADAPTERS.last unless adapter

  adapter.new(
    a: a,
    b: b,
    identifiers: identifiers,
    changes: changes
  )
end
new(a:, b:, identifiers:, changes:) click to toggle source
# File lib/delta/set_operator.rb, line 17
def initialize(a:, b:, identifiers:, changes:)
  self.a = a
  self.b = b
  self.identifiers = identifiers
  self.changes = changes
end

Public Instance Methods

a_minus_b() click to toggle source
# File lib/delta/set_operator.rb, line 24
def a_minus_b
  subtract(a, b)
end
b_minus_a() click to toggle source
# File lib/delta/set_operator.rb, line 28
def b_minus_a
  subtract(b, a)
end
intersection() click to toggle source
# File lib/delta/set_operator.rb, line 32
def intersection
  intersect(a, b)
end

Private Instance Methods

intersect(_a, _b) click to toggle source

a & b

# File lib/delta/set_operator.rb, line 48
def intersect(_a, _b)
  fail NotImplementedError, "override me"
end
subtract(_a, _b) click to toggle source

a - b

# File lib/delta/set_operator.rb, line 43
def subtract(_a, _b)
  fail NotImplementedError, "override me"
end