Class: Protobuf::Field::BaseFieldObjectDefinitions::RepeatedSetField
- Inherits:
-
Object
- Object
- Protobuf::Field::BaseFieldObjectDefinitions::RepeatedSetField
- 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) ⇒ RepeatedSetField
constructor
A new instance of RepeatedSetField.
Constructor Details
#initialize(selph) ⇒ RepeatedSetField
Returns a new instance of RepeatedSetField.
258 259 260 261 262 |
# File 'lib/protobuf/field/base_field_object_definitions.rb', line 258 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
264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 |
# File 'lib/protobuf/field/base_field_object_definitions.rb', line 264 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, <<-TYPE_ERROR Expected repeated value of type '#{@selph.type_class}' Got '#{value.class}' for repeated protobuf field #{@selph.name} TYPE_ERROR end value = value.compact if value.empty? values.delete(@fully_qualified_name) else values[@fully_qualified_name] ||= ::Protobuf::Field::FieldArray.new(@selph) values[@fully_qualified_name].replace(value) end end |