Module: ActiveSubsetValidator

Defined in:
lib/active_subset_validator.rb,
lib/active_subset_validator/railtie.rb,
lib/active_subset_validator/version.rb

Defined Under Namespace

Classes: Railtie

Constant Summary collapse

SET_DIFF_ERROR =
"Arguments much match types upon evaluation. " <<
"Expects Array or Set."
VERSION =
"1.0.0"

Class Method Summary collapse

Class Method Details

.is_a_set?(obj, *args) ⇒ Boolean

Returns:

  • (Boolean)


10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/active_subset_validator.rb', line 10

def self.is_a_set? obj, *args
  if obj.respond_to?(:call)
    obj = obj.call *args
  end
  if obj.is_a?(Set)
    return true
  elsif obj.is_a?(Array)
    return obj.to_set.to_a == obj
  else
    return false
  end
end

.set_difference(obj1, obj2) ⇒ Object



23
24
25
26
27
28
29
30
31
# File 'lib/active_subset_validator.rb', line 23

def self.set_difference obj1, obj2
  if obj1.is_a?(Array) && obj2.is_a?(Array)
    (obj1.to_set - obj2.to_set).to_a
  elsif obj1.is_a?(Set) && obj2.is_a?(Set)
    obj1 - obj2
  else
    raise ArgumentError, SET_DIFF_ERROR
  end
end