protobuf 3.6.12 → 3.7.0.pre0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|