Class: RSchemaHamster::GenericHamsterHashSchema

Inherits:
Struct
  • Object
show all
Defined in:
lib/rschema_hamster/dsl.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#key_subschemaObject

Returns the value of attribute key_subschema

Returns:

  • (Object)

    the current value of key_subschema



19
20
21
# File 'lib/rschema_hamster/dsl.rb', line 19

def key_subschema
  @key_subschema
end

#value_subschemaObject

Returns the value of attribute value_subschema

Returns:

  • (Object)

    the current value of value_subschema



19
20
21
# File 'lib/rschema_hamster/dsl.rb', line 19

def value_subschema
  @value_subschema
end

Instance Method Details

#schema_walk(value, mapper) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/rschema_hamster/dsl.rb', line 20

def schema_walk(value, mapper)
  if not value.is_a?(Hamster::Hash)
    return RSchema::ErrorDetails.new(value, 'is not a Hamster::Hash')
  end

  value.reduce(Hamster.hash) do |accum, (k, v)|
    # walk key
    k_walked, error = RSchema.walk(key_subschema, k, mapper)
    break error.extend_key_path('.keys') if error

    # walk value
    v_walked, error = RSchema.walk(value_subschema, v, mapper)
    break error.extend_key_path(k) if error

    accum.put(k_walked, v_walked)
  end
end