Class: TypedModel::MapOf

Inherits:
Object
  • Object
show all
Defined in:
lib/typed_model/map_of.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(key_spec, val_spec) ⇒ MapOf

Returns a new instance of MapOf.



5
6
7
8
# File 'lib/typed_model/map_of.rb', line 5

def initialize(key_spec, val_spec)
  @key_spec = key_spec
  @value_spec = val_spec
end

Instance Attribute Details

#key_specObject (readonly)

Returns the value of attribute key_spec.



3
4
5
# File 'lib/typed_model/map_of.rb', line 3

def key_spec
  @key_spec
end

#value_specObject (readonly)

Returns the value of attribute value_spec.



3
4
5
# File 'lib/typed_model/map_of.rb', line 3

def value_spec
  @value_spec
end

Instance Method Details

#to_data(value) ⇒ Object



16
17
18
19
20
# File 'lib/typed_model/map_of.rb', line 16

def to_data(value)
  value.each_with_object({}) do |(k, v), h|
    h[key_spec.to_data(k)] = value_spec.to_data(v)
  end
end

#typecast_value(values) ⇒ Object



10
11
12
13
14
# File 'lib/typed_model/map_of.rb', line 10

def typecast_value(values)
  values&.each_with_object({}) do |(k, v), h|
    h[key_spec.typecast_value(k)] = value_spec.typecast_value(v)
  end
end

#validate(value, errors, key_prefix) ⇒ Object



22
23
24
25
26
27
# File 'lib/typed_model/map_of.rb', line 22

def validate(value, errors, key_prefix)
  value&.each_pair do |k, v|
    key_spec.validate(k, errors, "#{key_prefix}/keys/#{k}")
    value_spec.validate(v, errors, "#{key_prefix}/#{k}")
  end
end