Class: Protobuf::Field::BaseFieldObjectDefinitions::RequiredRepeatedSetField
- Inherits:
-
Object
- Object
- Protobuf::Field::BaseFieldObjectDefinitions::RequiredRepeatedSetField
- Defined in:
- lib/protobuf/field/base_field_object_definitions.rb
Instance Method Summary collapse
- #call(values, value, ignore_nil_for_repeated, message_instance) ⇒ Object
-
#initialize(selph) ⇒ RequiredRepeatedSetField
constructor
A new instance of RequiredRepeatedSetField.
Constructor Details
#initialize(selph) ⇒ RequiredRepeatedSetField
Returns a new instance of RequiredRepeatedSetField.
225 226 227 228 229 |
# File 'lib/protobuf/field/base_field_object_definitions.rb', line 225 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
231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 |
# File 'lib/protobuf/field/base_field_object_definitions.rb', line 231 def call(values, value, ignore_nil_for_repeated, ) if value.nil? && ignore_nil_for_repeated ::Protobuf.deprecator.deprecation_warning("['#{@fully_qualified_name}']=nil", "use an empty array instead of nil") return end unless value.is_a?(Array) fail TypeError, " Expected repeated value of type '\#{@selph.type_class}'\n Got '\#{value.class}' for repeated protobuf field \#{@selph.name}\n TYPE_ERROR\n end\n\n value = value.compact\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::FieldArray.new(@selph)\n values[@fully_qualified_name].replace(value)\n end\nend\n" |