class TypeValidator

Public Instance Methods

validate_each(record, attribute, value) click to toggle source
Calls superclass method BaseValidator#validate_each
# File lib/lite/validators/type_validator.rb, line 8
def validate_each(record, attribute, value)
  assert_valid_is_or_is_not!
  super
end

Private Instance Methods

assert_valid_is_or_is_not!() click to toggle source
# File lib/lite/validators/type_validator.rb, line 15
def assert_valid_is_or_is_not!
  return if options.key?(:is) || options.key?(:is_not)

  raise ArgumentError, 'Missing ":is" or ":is_not" attribute for comparison.'
end
is_or_is_not() click to toggle source

rubocop:disable Naming/PredicateName

# File lib/lite/validators/type_validator.rb, line 22
def is_or_is_not
  options[:is] || options[:is_not]
end
valid_attr?() click to toggle source

rubocop:enable Naming/PredicateName

# File lib/lite/validators/type_validator.rb, line 27
def valid_attr?
  return !valid_type? if options.key?(:is_not)

  valid_type?
end
valid_type?() click to toggle source
# File lib/lite/validators/type_validator.rb, line 33
def valid_type?
  if is_or_is_not == Boolean
    value.is_a?(TrueClass) || value.is_a?(FalseClass)
  else
    Array(is_or_is_not).any? { |klass| value.is_a?(klass) }
  end
end