Class: Protobuf::Field::BaseFieldObjectDefinitions::MapSetField

Inherits:
Object
  • Object
show all
Defined in:
lib/protobuf/field/base_field_object_definitions.rb

Instance Method Summary collapse

Constructor Details

#initialize(selph) ⇒ MapSetField

Returns a new instance of MapSetField.



201
202
203
204
205
# File 'lib/protobuf/field/base_field_object_definitions.rb', line 201

def initialize(selph)
  @selph = selph
  @tag = selph.tag
  @fully_qualified_name = selph.fully_qualified_name
end

Instance Method Details

#call(values, value, _ignore_nil_for_repeated, _message_instance) ⇒ Object



207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
# File 'lib/protobuf/field/base_field_object_definitions.rb', line 207

def call(values, value, _ignore_nil_for_repeated, _message_instance)
  unless value.is_a?(Hash)
    fail TypeError, <<-TYPE_ERROR
            Expected map value
            Got '#{value.class}' for map protobuf field #{@selph.name}
    TYPE_ERROR
  end

  if value.empty?
    values.delete(@fully_qualified_name)
  else
    values[@fully_qualified_name] ||= ::Protobuf::Field::FieldHash.new(@selph)
    values[@fully_qualified_name].replace(value)
  end
end