protobuf 2.4.0 → 2.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -160,16 +160,24 @@ module Protobuf
160
160
 
161
161
  def each_field_for_serialization
162
162
  all_fields.each do |field|
163
- next unless has_field_or_required_field?(field)
163
+ next unless has_field?(field.name) || field.required?
164
164
 
165
- value = __send__(field.name)
166
- value.compact! if field.repeated?
165
+ value = @values[field.name]
167
166
 
168
- if value.present? || [true, false].include?(value)
169
- yield(field, value)
170
- else
171
- # Only way you can get here is if you are required and not present
172
- raise ::Protobuf::SerializationError, "#{field.name} is required on #{field.message_class}"
167
+ if field.repeated?
168
+ if !value.nil?
169
+ value.compact!
170
+ @values[field.name] = nil if value.empty?
171
+ end
172
+ end
173
+
174
+ if has_field?(field.name) || field.required?
175
+ if value.present? || [true, false].include?(value)
176
+ yield(field, value)
177
+ else
178
+ # Only way you can get here is if you are required and not present
179
+ raise ::Protobuf::SerializationError, "#{field.name} is required on #{field.message_class}"
180
+ end
173
181
  end
174
182
  end
175
183
  end
@@ -339,10 +347,6 @@ module Protobuf
339
347
  object
340
348
  end
341
349
 
342
- def has_field_or_required_field?(field)
343
- has_field?(field.name) || field.required?
344
- end
345
-
346
350
  # Encode key and value, and write to +stream+.
347
351
  def write_pair(stream, field, value)
348
352
  key = (field.tag << 3) | field.wire_type
@@ -1,4 +1,4 @@
1
1
  module Protobuf
2
- VERSION = '2.4.0'
2
+ VERSION = '2.4.1'
3
3
  PROTOC_VERSION = '2.4.1'
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: protobuf
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.4.0
4
+ version: 2.4.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -499,7 +499,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
499
499
  version: '0'
500
500
  segments:
501
501
  - 0
502
- hash: 1889105763094487003
502
+ hash: -3853015087851664003
503
503
  required_rubygems_version: !ruby/object:Gem::Requirement
504
504
  none: false
505
505
  requirements:
@@ -508,7 +508,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
508
508
  version: '0'
509
509
  segments:
510
510
  - 0
511
- hash: 1889105763094487003
511
+ hash: -3853015087851664003
512
512
  requirements: []
513
513
  rubyforge_project:
514
514
  rubygems_version: 1.8.24