Method: Highway::Steps::Types::Hash#typecheck

Defined in:
lib/highway/steps/types/hash.rb

#typecheck(value) ⇒ Hash?

Typecheck and coerce a value if possible.

This method returns a typechecked and coerced value or ‘nil` if value has invalid type and can’t be coerced.

Parameters:

  • value (Object)

    A value.

Returns:


35
36
37
38
39
# File 'lib/highway/steps/types/hash.rb', line 35

def typecheck(value)
  return nil unless value.is_a?(::Hash)
  typechecked = Utilities::hash_map(value) { |key, element| [key, @element_type.typecheck_and_validate(element)] }
  typechecked if typechecked.values.all? { |element| !element.nil? }
end