Class: Protobuf::Field::BaseFieldObjectDefinitions::RequiredMapSetField

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

Instance Method Summary collapse

Constructor Details

#initialize(selph) ⇒ RequiredMapSetField

Returns a new instance of RequiredMapSetField.



175
176
177
178
179
# File 'lib/protobuf/field/base_field_object_definitions.rb', line 175

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



181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
# File 'lib/protobuf/field/base_field_object_definitions.rb', line 181

def call(values, value, _ignore_nil_for_repeated, message_instance)
  unless value.is_a?(Hash)
    fail TypeError, "            Expected map value\n            Got '\#{value.class}' for map protobuf field \#{@selph.name}\n    TYPE_ERROR\n  end\n\n  if value.empty?\n    values.delete(@fully_qualified_name)\n    message_instance._protobuf_message_unset_required_field_tags << @tag\n  else\n    message_instance._protobuf_message_unset_required_field_tags.delete(@tag)\n    values[@fully_qualified_name] ||= ::Protobuf::Field::FieldHash.new(@selph)\n    values[@fully_qualified_name].replace(value)\n  end\nend\n"