protobuf 3.6.12 → 3.7.0.pre0
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.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +4 -4
- data/CHANGES.md +14 -3
- data/lib/protobuf/descriptors/google/protobuf/descriptor.pb.rb +39 -2
- data/lib/protobuf/field.rb +2 -2
- data/lib/protobuf/field/base_field.rb +27 -84
- data/lib/protobuf/field/bool_field.rb +3 -13
- data/lib/protobuf/field/bytes_field.rb +10 -26
- data/lib/protobuf/field/enum_field.rb +10 -20
- data/lib/protobuf/field/message_field.rb +13 -23
- data/lib/protobuf/generators/enum_generator.rb +1 -0
- data/lib/protobuf/generators/field_generator.rb +8 -2
- data/lib/protobuf/generators/file_generator.rb +8 -0
- data/lib/protobuf/generators/service_generator.rb +2 -2
- data/lib/protobuf/message.rb +47 -12
- data/lib/protobuf/message/fields.rb +80 -8
- data/lib/protobuf/rpc/connectors/common.rb +1 -1
- data/lib/protobuf/rpc/connectors/ping.rb +2 -2
- data/lib/protobuf/rpc/connectors/zmq.rb +1 -1
- data/lib/protobuf/rpc/middleware/exception_handler.rb +0 -4
- data/lib/protobuf/rpc/middleware/logger.rb +0 -4
- data/lib/protobuf/rpc/middleware/request_decoder.rb +16 -11
- data/lib/protobuf/rpc/middleware/response_encoder.rb +20 -15
- data/lib/protobuf/rpc/service.rb +10 -2
- data/lib/protobuf/rpc/service_directory.rb +0 -8
- data/lib/protobuf/rpc/service_dispatcher.rb +6 -5
- data/lib/protobuf/rpc/service_filters.rb +30 -8
- data/lib/protobuf/version.rb +1 -1
- data/proto/google/protobuf/descriptor.proto +190 -31
- data/spec/lib/protobuf/field/bool_field_spec.rb +33 -7
- data/spec/lib/protobuf/field/enum_field_spec.rb +26 -0
- data/spec/lib/protobuf/field/float_field_spec.rb +32 -1
- data/spec/lib/protobuf/field/int32_field_spec.rb +32 -1
- data/spec/lib/protobuf/field/message_field_spec.rb +79 -0
- data/spec/lib/protobuf/field/string_field_spec.rb +34 -0
- data/spec/lib/protobuf/field_spec.rb +1 -0
- data/spec/lib/protobuf/generators/enum_generator_spec.rb +9 -0
- data/spec/lib/protobuf/generators/service_generator_spec.rb +9 -0
- data/spec/lib/protobuf/message_spec.rb +328 -63
- data/spec/lib/protobuf/rpc/connectors/ping_spec.rb +3 -3
- data/spec/lib/protobuf/rpc/service_dispatcher_spec.rb +18 -1
- data/spec/support/protos/enum.pb.rb +1 -1
- data/spec/support/protos/google_unittest.pb.rb +113 -111
- data/spec/support/protos/google_unittest.proto +7 -0
- data/spec/support/protos/multi_field_extensions.pb.rb +1 -1
- data/spec/support/protos/resource.pb.rb +9 -9
- metadata +79 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 49fd33e80978059efd20c7e085db8567e84b3bf4
|
4
|
+
data.tar.gz: c56d562e6ba4814d8b023a9761b14d5eef3d719f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 56a1dfac3b2e3db4eb26115ecae1ced9585797651551df00b13eabbb2ecaafa8e61ef7ee3e396f1ea9df1377e1c4180983fe79e698e7bcb402042307fed05dc8
|
7
|
+
data.tar.gz: a4cca36a18e7f24e2ed319323bbf0c41c61730d23555d3b52965b93eaf6baea0336af4beb66fe96422f78204d547684b642b74e4dd725e04e4c48b2825e756c9
|
data/.rubocop_todo.yml
CHANGED
@@ -16,12 +16,12 @@ Metrics/BlockNesting:
|
|
16
16
|
|
17
17
|
# Offense count: 6
|
18
18
|
Metrics/CyclomaticComplexity:
|
19
|
-
Max:
|
19
|
+
Max: 12
|
20
20
|
|
21
21
|
# Offense count: 493
|
22
22
|
# Configuration parameters: AllowURI, URISchemes.
|
23
23
|
Metrics/LineLength:
|
24
|
-
Max:
|
24
|
+
Max: 199
|
25
25
|
|
26
26
|
# Offense count: 44
|
27
27
|
# Configuration parameters: CountComments.
|
@@ -31,11 +31,11 @@ Metrics/MethodLength:
|
|
31
31
|
# Offense count: 2
|
32
32
|
# Configuration parameters: CountKeywordArgs.
|
33
33
|
Metrics/ParameterLists:
|
34
|
-
Max:
|
34
|
+
Max: 7
|
35
35
|
|
36
36
|
# Offense count: 6
|
37
37
|
Metrics/PerceivedComplexity:
|
38
|
-
Max:
|
38
|
+
Max: 17
|
39
39
|
|
40
40
|
# Offense count: 1
|
41
41
|
# Cop supports --auto-correct.
|
data/CHANGES.md
CHANGED
@@ -1,8 +1,19 @@
|
|
1
1
|
# Stable (3.x)
|
2
2
|
|
3
|
-
3.
|
4
|
-
|
5
|
-
-
|
3
|
+
3.7.0 (pre0)
|
4
|
+
-----------
|
5
|
+
- Add `PB_USE_RAW_RPC_NAMES` option to preserve raw RPC name (since #underscore can be lossy).
|
6
|
+
- Add `PB_ENUM_UPCASE` option to generate enum values as upcased.
|
7
|
+
- Clean up dynamic code generation in prep for extension namespacing.
|
8
|
+
- Namespace extension fields.
|
9
|
+
- Field values should be stored via their fully qualified names
|
10
|
+
- Refresh google/protobuf/descriptor.{proto,pb.rb}
|
11
|
+
- Properly encode and decode negative enum values.
|
12
|
+
|
13
|
+
3.6.7
|
14
|
+
-----
|
15
|
+
- An issue was reported with the encode memoization added in #293 with using any array modification
|
16
|
+
method on repeated fields. Remove memoization on encode (#305) until we can find a better solution.
|
6
17
|
|
7
18
|
3.5.5
|
8
19
|
--------
|
@@ -15,6 +15,7 @@ module Google
|
|
15
15
|
class FileDescriptorProto < ::Protobuf::Message; end
|
16
16
|
class DescriptorProto < ::Protobuf::Message
|
17
17
|
class ExtensionRange < ::Protobuf::Message; end
|
18
|
+
class ReservedRange < ::Protobuf::Message; end
|
18
19
|
|
19
20
|
end
|
20
21
|
|
@@ -48,6 +49,7 @@ module Google
|
|
48
49
|
|
49
50
|
end
|
50
51
|
|
52
|
+
class OneofDescriptorProto < ::Protobuf::Message; end
|
51
53
|
class EnumDescriptorProto < ::Protobuf::Message; end
|
52
54
|
class EnumValueDescriptorProto < ::Protobuf::Message; end
|
53
55
|
class ServiceDescriptorProto < ::Protobuf::Message; end
|
@@ -69,6 +71,12 @@ module Google
|
|
69
71
|
define :STRING_PIECE, 2
|
70
72
|
end
|
71
73
|
|
74
|
+
class JSType < ::Protobuf::Enum
|
75
|
+
define :JS_NORMAL, 0
|
76
|
+
define :JS_STRING, 1
|
77
|
+
define :JS_NUMBER, 2
|
78
|
+
end
|
79
|
+
|
72
80
|
end
|
73
81
|
|
74
82
|
class EnumOptions < ::Protobuf::Message; end
|
@@ -106,6 +114,7 @@ module Google
|
|
106
114
|
repeated ::Google::Protobuf::FieldDescriptorProto, :extension, 7
|
107
115
|
optional ::Google::Protobuf::FileOptions, :options, 8
|
108
116
|
optional ::Google::Protobuf::SourceCodeInfo, :source_code_info, 9
|
117
|
+
optional :string, :syntax, 12
|
109
118
|
end
|
110
119
|
|
111
120
|
class DescriptorProto
|
@@ -114,13 +123,21 @@ module Google
|
|
114
123
|
optional :int32, :end, 2
|
115
124
|
end
|
116
125
|
|
126
|
+
class ReservedRange
|
127
|
+
optional :int32, :start, 1
|
128
|
+
optional :int32, :end, 2
|
129
|
+
end
|
130
|
+
|
117
131
|
optional :string, :name, 1
|
118
132
|
repeated ::Google::Protobuf::FieldDescriptorProto, :field, 2
|
119
133
|
repeated ::Google::Protobuf::FieldDescriptorProto, :extension, 6
|
120
134
|
repeated ::Google::Protobuf::DescriptorProto, :nested_type, 3
|
121
135
|
repeated ::Google::Protobuf::EnumDescriptorProto, :enum_type, 4
|
122
136
|
repeated ::Google::Protobuf::DescriptorProto::ExtensionRange, :extension_range, 5
|
137
|
+
repeated ::Google::Protobuf::OneofDescriptorProto, :oneof_decl, 8
|
123
138
|
optional ::Google::Protobuf::MessageOptions, :options, 7
|
139
|
+
repeated ::Google::Protobuf::DescriptorProto::ReservedRange, :reserved_range, 9
|
140
|
+
repeated :string, :reserved_name, 10
|
124
141
|
end
|
125
142
|
|
126
143
|
class FieldDescriptorProto
|
@@ -131,9 +148,14 @@ module Google
|
|
131
148
|
optional :string, :type_name, 6
|
132
149
|
optional :string, :extendee, 2
|
133
150
|
optional :string, :default_value, 7
|
151
|
+
optional :int32, :oneof_index, 9
|
134
152
|
optional ::Google::Protobuf::FieldOptions, :options, 8
|
135
153
|
end
|
136
154
|
|
155
|
+
class OneofDescriptorProto
|
156
|
+
optional :string, :name, 1
|
157
|
+
end
|
158
|
+
|
137
159
|
class EnumDescriptorProto
|
138
160
|
optional :string, :name, 1
|
139
161
|
repeated ::Google::Protobuf::EnumValueDescriptorProto, :value, 2
|
@@ -157,6 +179,8 @@ module Google
|
|
157
179
|
optional :string, :input_type, 2
|
158
180
|
optional :string, :output_type, 3
|
159
181
|
optional ::Google::Protobuf::MethodOptions, :options, 4
|
182
|
+
optional :bool, :client_streaming, 5, :default => false
|
183
|
+
optional :bool, :server_streaming, 6, :default => false
|
160
184
|
end
|
161
185
|
|
162
186
|
class FileOptions
|
@@ -164,11 +188,17 @@ module Google
|
|
164
188
|
optional :string, :java_outer_classname, 8
|
165
189
|
optional :bool, :java_multiple_files, 10, :default => false
|
166
190
|
optional :bool, :java_generate_equals_and_hash, 20, :default => false
|
191
|
+
optional :bool, :java_string_check_utf8, 27, :default => false
|
167
192
|
optional ::Google::Protobuf::FileOptions::OptimizeMode, :optimize_for, 9, :default => ::Google::Protobuf::FileOptions::OptimizeMode::SPEED
|
168
193
|
optional :string, :go_package, 11
|
169
194
|
optional :bool, :cc_generic_services, 16, :default => false
|
170
195
|
optional :bool, :java_generic_services, 17, :default => false
|
171
196
|
optional :bool, :py_generic_services, 18, :default => false
|
197
|
+
optional :bool, :deprecated, 23, :default => false
|
198
|
+
optional :bool, :cc_enable_arenas, 31, :default => false
|
199
|
+
optional :string, :objc_class_prefix, 36
|
200
|
+
optional :string, :csharp_namespace, 37
|
201
|
+
optional :bool, :javanano_use_deprecated_package, 38
|
172
202
|
repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
|
173
203
|
# Extension Fields
|
174
204
|
extensions 1000...536870912
|
@@ -177,6 +207,8 @@ module Google
|
|
177
207
|
class MessageOptions
|
178
208
|
optional :bool, :message_set_wire_format, 1, :default => false
|
179
209
|
optional :bool, :no_standard_descriptor_accessor, 2, :default => false
|
210
|
+
optional :bool, :deprecated, 3, :default => false
|
211
|
+
optional :bool, :map_entry, 7
|
180
212
|
repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
|
181
213
|
# Extension Fields
|
182
214
|
extensions 1000...536870912
|
@@ -185,9 +217,9 @@ module Google
|
|
185
217
|
class FieldOptions
|
186
218
|
optional ::Google::Protobuf::FieldOptions::CType, :ctype, 1, :default => ::Google::Protobuf::FieldOptions::CType::STRING
|
187
219
|
optional :bool, :packed, 2
|
220
|
+
optional ::Google::Protobuf::FieldOptions::JSType, :jstype, 6, :default => ::Google::Protobuf::FieldOptions::JSType::JS_NORMAL
|
188
221
|
optional :bool, :lazy, 5, :default => false
|
189
222
|
optional :bool, :deprecated, 3, :default => false
|
190
|
-
optional :string, :experimental_map_key, 9
|
191
223
|
optional :bool, :weak, 10, :default => false
|
192
224
|
repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
|
193
225
|
# Extension Fields
|
@@ -195,25 +227,29 @@ module Google
|
|
195
227
|
end
|
196
228
|
|
197
229
|
class EnumOptions
|
198
|
-
optional :bool, :allow_alias, 2
|
230
|
+
optional :bool, :allow_alias, 2
|
231
|
+
optional :bool, :deprecated, 3, :default => false
|
199
232
|
repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
|
200
233
|
# Extension Fields
|
201
234
|
extensions 1000...536870912
|
202
235
|
end
|
203
236
|
|
204
237
|
class EnumValueOptions
|
238
|
+
optional :bool, :deprecated, 1, :default => false
|
205
239
|
repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
|
206
240
|
# Extension Fields
|
207
241
|
extensions 1000...536870912
|
208
242
|
end
|
209
243
|
|
210
244
|
class ServiceOptions
|
245
|
+
optional :bool, :deprecated, 33, :default => false
|
211
246
|
repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
|
212
247
|
# Extension Fields
|
213
248
|
extensions 1000...536870912
|
214
249
|
end
|
215
250
|
|
216
251
|
class MethodOptions
|
252
|
+
optional :bool, :deprecated, 33, :default => false
|
217
253
|
repeated ::Google::Protobuf::UninterpretedOption, :uninterpreted_option, 999
|
218
254
|
# Extension Fields
|
219
255
|
extensions 1000...536870912
|
@@ -240,6 +276,7 @@ module Google
|
|
240
276
|
repeated :int32, :span, 2, :packed => true
|
241
277
|
optional :string, :leading_comments, 3
|
242
278
|
optional :string, :trailing_comments, 4
|
279
|
+
repeated :string, :leading_detached_comments, 6
|
243
280
|
end
|
244
281
|
|
245
282
|
repeated ::Google::Protobuf::SourceCodeInfo::Location, :location, 1
|
data/lib/protobuf/field.rb
CHANGED
@@ -41,8 +41,8 @@ module Protobuf
|
|
41
41
|
:bool => ::Protobuf::Field::BoolField,
|
42
42
|
}.freeze
|
43
43
|
|
44
|
-
def self.build(message_class, rule, type, name, tag, options = {})
|
45
|
-
field_class(type).new(message_class, rule, field_type(type), name, tag, options)
|
44
|
+
def self.build(message_class, rule, type, name, tag, simple_name, options = {})
|
45
|
+
field_class(type).new(message_class, rule, field_type(type), name, tag, simple_name, options)
|
46
46
|
end
|
47
47
|
|
48
48
|
# Returns the field class for primitives,
|
@@ -21,7 +21,7 @@ module Protobuf
|
|
21
21
|
##
|
22
22
|
# Attributes
|
23
23
|
#
|
24
|
-
attr_reader :message_class, :name, :options, :rule, :tag, :type_class
|
24
|
+
attr_reader :message_class, :name, :fully_qualified_name, :options, :rule, :tag, :type_class
|
25
25
|
|
26
26
|
##
|
27
27
|
# Class Methods
|
@@ -35,16 +35,17 @@ module Protobuf
|
|
35
35
|
# Constructor
|
36
36
|
#
|
37
37
|
|
38
|
-
def initialize(message_class, rule, type_class,
|
38
|
+
def initialize(message_class, rule, type_class, fully_qualified_name, tag, simple_name, options)
|
39
39
|
@message_class = message_class
|
40
|
-
@name
|
40
|
+
@name = simple_name || fully_qualified_name
|
41
|
+
@fully_qualified_name = fully_qualified_name
|
41
42
|
@rule = rule
|
42
43
|
@tag = tag
|
43
44
|
@type_class = type_class
|
44
45
|
@options = options
|
45
46
|
|
46
47
|
validate_packed_field if packed?
|
47
|
-
define_accessor
|
48
|
+
define_accessor(simple_name, fully_qualified_name) if simple_name
|
48
49
|
tag_encoded
|
49
50
|
end
|
50
51
|
|
@@ -69,10 +70,12 @@ module Protobuf
|
|
69
70
|
end
|
70
71
|
|
71
72
|
def default_value
|
72
|
-
@default_value ||=
|
73
|
-
|
74
|
-
|
75
|
-
|
73
|
+
@default_value ||= if optional? || required?
|
74
|
+
typed_default_value
|
75
|
+
elsif repeated?
|
76
|
+
::Protobuf::Field::FieldArray.new(self).freeze
|
77
|
+
else
|
78
|
+
fail "Unknown field label -- something went very wrong"
|
76
79
|
end
|
77
80
|
end
|
78
81
|
|
@@ -122,10 +125,10 @@ module Protobuf
|
|
122
125
|
|
123
126
|
# FIXME: need to cleanup (rename) this warthog of a method.
|
124
127
|
def set(message_instance, bytes)
|
125
|
-
return message_instance
|
126
|
-
return message_instance
|
128
|
+
return message_instance[name] = decode(bytes) unless repeated?
|
129
|
+
return message_instance[name] << decode(bytes) unless packed?
|
127
130
|
|
128
|
-
array = message_instance
|
131
|
+
array = message_instance[name]
|
129
132
|
stream = StringIO.new(bytes)
|
130
133
|
|
131
134
|
if wire_type == ::Protobuf::WireType::VARINT
|
@@ -163,93 +166,33 @@ module Protobuf
|
|
163
166
|
::Protobuf::WireType::VARINT
|
164
167
|
end
|
165
168
|
|
169
|
+
def fully_qualified_name_only!
|
170
|
+
@name = @fully_qualified_name
|
171
|
+
end
|
172
|
+
|
166
173
|
private
|
167
174
|
|
168
175
|
##
|
169
176
|
# Private Instance Methods
|
170
177
|
#
|
171
178
|
|
172
|
-
def define_accessor
|
173
|
-
if repeated?
|
174
|
-
define_array_getter
|
175
|
-
define_array_setter
|
176
|
-
else
|
177
|
-
define_getter
|
178
|
-
define_setter
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
|
-
def define_array_getter
|
183
|
-
field = self
|
184
|
-
method_name = field.getter
|
185
|
-
|
179
|
+
def define_accessor(simple_field_name, fully_qualified_field_name)
|
186
180
|
message_class.class_eval do
|
187
|
-
define_method(
|
188
|
-
@values[
|
181
|
+
define_method("#{simple_field_name}!") do
|
182
|
+
@values[fully_qualified_field_name]
|
189
183
|
end
|
190
184
|
end
|
191
185
|
|
192
|
-
::Protobuf.field_deprecator.deprecate_method(message_class, method_name) if field.deprecated?
|
193
|
-
end
|
194
|
-
|
195
|
-
def define_array_setter
|
196
|
-
field = self
|
197
|
-
method_name = field.setter
|
198
|
-
|
199
186
|
message_class.class_eval do
|
200
|
-
define_method(
|
201
|
-
|
202
|
-
val = val.dup
|
203
|
-
val.compact!
|
204
|
-
else
|
205
|
-
fail TypeError, <<-TYPE_ERROR
|
206
|
-
Expected repeated value of type '#{field.type_class}'
|
207
|
-
Got '#{val.class}' for repeated protobuf field #{field.name}
|
208
|
-
TYPE_ERROR
|
209
|
-
end
|
210
|
-
|
211
|
-
if val.nil? || (val.respond_to?(:empty?) && val.empty?)
|
212
|
-
@values.delete(field.name)
|
213
|
-
else
|
214
|
-
@values[field.name] ||= ::Protobuf::Field::FieldArray.new(field)
|
215
|
-
@values[field.name].replace(val)
|
216
|
-
end
|
217
|
-
end
|
187
|
+
define_method(simple_field_name) { self[fully_qualified_field_name] }
|
188
|
+
define_method("#{simple_field_name}=") { |v| self[fully_qualified_field_name] = v }
|
218
189
|
end
|
219
190
|
|
220
|
-
|
221
|
-
end
|
222
|
-
|
223
|
-
def define_getter
|
224
|
-
field = self
|
225
|
-
method_name = field.getter
|
226
|
-
|
227
|
-
message_class.class_eval do
|
228
|
-
define_method(method_name) do
|
229
|
-
@values[field.name] || field.default_value
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
|
-
::Protobuf.field_deprecator.deprecate_method(message_class, method_name) if field.deprecated?
|
234
|
-
end
|
235
|
-
|
236
|
-
def define_setter
|
237
|
-
field = self
|
238
|
-
method_name = field.setter
|
239
|
-
|
240
|
-
message_class.class_eval do
|
241
|
-
define_method(method_name) do |val|
|
242
|
-
if val.nil? || (val.respond_to?(:empty?) && val.empty?)
|
243
|
-
@values.delete(field.name)
|
244
|
-
elsif field.acceptable?(val)
|
245
|
-
@values[field.name] = field.coerce!(val)
|
246
|
-
else
|
247
|
-
fail TypeError, "Unacceptable value #{val} for field #{field.name} of type #{field.type_class}"
|
248
|
-
end
|
249
|
-
end
|
250
|
-
end
|
191
|
+
return unless deprecated?
|
251
192
|
|
252
|
-
::Protobuf.field_deprecator.deprecate_method(message_class,
|
193
|
+
::Protobuf.field_deprecator.deprecate_method(message_class, simple_field_name)
|
194
|
+
::Protobuf.field_deprecator.deprecate_method(message_class, "#{simple_field_name}!")
|
195
|
+
::Protobuf.field_deprecator.deprecate_method(message_class, "#{simple_field_name}=")
|
253
196
|
end
|
254
197
|
|
255
198
|
def typed_default_value
|
@@ -45,21 +45,11 @@ module Protobuf
|
|
45
45
|
# Private Instance Methods
|
46
46
|
#
|
47
47
|
|
48
|
-
def
|
49
|
-
|
50
|
-
method_name = field.getter
|
51
|
-
|
48
|
+
def define_accessor(simple_field_name, _fully_qualified_field_name)
|
49
|
+
super
|
52
50
|
message_class.class_eval do
|
53
|
-
|
54
|
-
@values.fetch(field.name, field.default_value)
|
55
|
-
end
|
51
|
+
alias_method "#{simple_field_name}?", simple_field_name
|
56
52
|
end
|
57
|
-
|
58
|
-
message_class.class_eval do
|
59
|
-
alias_method "#{method_name}?", method_name
|
60
|
-
end
|
61
|
-
|
62
|
-
::Protobuf.field_deprecator.deprecate_method(message_class, method_name) if field.deprecated?
|
63
53
|
end
|
64
54
|
|
65
55
|
end
|
@@ -33,7 +33,6 @@ module Protobuf
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def encode(value)
|
36
|
-
value_to_encode = ""
|
37
36
|
if value.is_a?(::Protobuf::Message)
|
38
37
|
value_to_encode = value.encode
|
39
38
|
else
|
@@ -50,32 +49,17 @@ module Protobuf
|
|
50
49
|
::Protobuf::WireType::LENGTH_DELIMITED
|
51
50
|
end
|
52
51
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
message_class.class_eval do
|
64
|
-
define_method(method_name) do |val|
|
65
|
-
case val
|
66
|
-
when String, Symbol
|
67
|
-
@values[field.name] = "#{val}"
|
68
|
-
when NilClass
|
69
|
-
@values.delete(field.name)
|
70
|
-
when ::Protobuf::Message
|
71
|
-
@values[field.name] = val.dup
|
72
|
-
else
|
73
|
-
fail TypeError, "Unacceptable value #{val} for field #{field.name} of type #{field.type_class}"
|
74
|
-
end
|
75
|
-
end
|
52
|
+
def coerce!(value)
|
53
|
+
case value
|
54
|
+
when String, Symbol
|
55
|
+
"#{value}"
|
56
|
+
when NilClass
|
57
|
+
nil
|
58
|
+
when ::Protobuf::Message
|
59
|
+
value.dup
|
60
|
+
else
|
61
|
+
fail TypeError, "Unacceptable value #{value} for field #{name} of type #{type_class}"
|
76
62
|
end
|
77
|
-
|
78
|
-
::Protobuf.field_deprecator.deprecate_method(message_class, method_name) if field.deprecated?
|
79
63
|
end
|
80
64
|
end
|
81
65
|
end
|