module Kind::ASSERT_HASH_SCHEMA

Constants

UnionType

Public Instance Methods

all(hash, spec) click to toggle source
# File lib/kind/__lib__/assert_hash_schema.rb, line 47
def all(hash, spec)
  ASSERT_HASH_KEYS.require_all(spec.keys, hash)

  any(hash, spec)
end
any(hash, spec) click to toggle source
# File lib/kind/__lib__/assert_hash_schema.rb, line 29
def any(hash, spec)
  spec.each do |key, expected|
    value = hash[key]
    error_message = "The key #{key.inspect} has an invalid value"

    case expected
    when ::Module then assert_kind_of(expected, value, error_message)
    when ::Proc then assert(expected.call(value), error_message)
    when ::Regexp then assert_match(expected, value, error_message)
    when ::NilClass then assert_nil(value, error_message)
    when UnionType then assert(expected === value, error_message)
    else assert_equal(expected, value, error_message)
    end
  end

  hash
end

Private Instance Methods

assert(value, message) click to toggle source
# File lib/kind/__lib__/assert_hash_schema.rb, line 59
def assert(value, message)
  raise_kind_error(message) unless value
end
assert_equal(expected, value, message) click to toggle source
# File lib/kind/__lib__/assert_hash_schema.rb, line 55
def assert_equal(expected, value, message)
  raise_kind_error(message) if expected != value
end
assert_kind_of(expected, value, message) click to toggle source
# File lib/kind/__lib__/assert_hash_schema.rb, line 73
def assert_kind_of(expected, value, message)
  raise_kind_error(message) unless expected === value
end
assert_match(expected, value, message) click to toggle source
# File lib/kind/__lib__/assert_hash_schema.rb, line 67
def assert_match(expected, value, message)
  STRICT.kind_of(String, value)

  raise_kind_error(message) if value !~ expected
end
assert_nil(value, message) click to toggle source
# File lib/kind/__lib__/assert_hash_schema.rb, line 63
def assert_nil(value, message)
  raise_kind_error(message) unless value.nil?
end
raise_kind_error(message) click to toggle source
# File lib/kind/__lib__/assert_hash_schema.rb, line 77
def raise_kind_error(message)
  raise Error.new(message)
end