ruby_protobuf 0.4.8 → 0.4.9
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.
- data/History.txt +10 -1
- data/VERSION +1 -1
- data/lib/protobuf/message/message.rb +31 -14
- metadata +4 -4
data/History.txt
CHANGED
@@ -1,5 +1,14 @@
|
|
1
|
-
=== 0.4.
|
1
|
+
=== 0.4.9 / 2011-01-17
|
2
2
|
|
3
|
+
* 0.4.9
|
4
|
+
* Bug fixes.
|
5
|
+
* EnumValue object in Message#to_hash.
|
6
|
+
* Optimized for speed.
|
7
|
+
* 0.4.8
|
8
|
+
* Bug fixes.
|
9
|
+
* Compilation was failed when rpc service name was on top-level.
|
10
|
+
* Options for rpc service methods are silently ignored.
|
11
|
+
* Frozen message object causes an exception on inspect method.
|
3
12
|
* 0.4.7
|
4
13
|
* Bug fixes.
|
5
14
|
* Compilation error for importing message.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.9
|
@@ -43,6 +43,7 @@ module Protobuf
|
|
43
43
|
raise TagCollisionError, "Field tag #{tag} has already been used in #{self.name}."
|
44
44
|
end
|
45
45
|
fields[tag] = Field.build(self, rule, type, fname, tag, options)
|
46
|
+
clear_field_cache
|
46
47
|
end
|
47
48
|
|
48
49
|
def extension_tag?(tag)
|
@@ -58,27 +59,40 @@ module Protobuf
|
|
58
59
|
def sorted_fields
|
59
60
|
@sorted_fields ||= fields.sort_by {|tag, _| tag}
|
60
61
|
end
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
62
|
+
private :sorted_fields
|
63
|
+
|
64
|
+
#:nodoc:
|
65
|
+
def field_dictionary
|
66
|
+
return @field_dictionary if @field_dictionary
|
67
|
+
@field_dictionary = fields.dup
|
68
|
+
fields.each do |_, field|
|
69
|
+
@field_dictionary[field.name] = field
|
70
|
+
@field_dictionary[field.name.to_s] = field
|
71
|
+
end
|
72
|
+
@field_dictionary
|
66
73
|
end
|
74
|
+
private :field_dictionary
|
67
75
|
|
68
|
-
|
69
|
-
def
|
70
|
-
|
76
|
+
#:nodoc:
|
77
|
+
def clear_field_cache
|
78
|
+
@field_dictionary = nil
|
79
|
+
@sorted_fields = nil
|
71
80
|
end
|
81
|
+
private :clear_field_cache
|
72
82
|
|
73
83
|
# Find a field object by +tag_or_name+.
|
74
84
|
def get_field(tag_or_name)
|
75
85
|
case tag_or_name
|
76
|
-
when Integer
|
77
|
-
|
78
|
-
else
|
86
|
+
when Integer, String, Symbol
|
87
|
+
field_dictionary[tag_or_name]
|
88
|
+
else
|
89
|
+
raise TypeError, tag_or_name.class
|
79
90
|
end
|
80
91
|
end
|
81
92
|
|
93
|
+
alias get_field_by_tag get_field # for compatibility
|
94
|
+
alias get_field_by_name get_field # for compatibility
|
95
|
+
|
82
96
|
def descriptor
|
83
97
|
@descriptor ||= Descriptor::Descriptor.new(self)
|
84
98
|
end
|
@@ -91,6 +105,7 @@ module Protobuf
|
|
91
105
|
unless field.ready?
|
92
106
|
field = field.setup
|
93
107
|
self.class.fields[tag] = field
|
108
|
+
self.class.__send__(:clear_field_cache)
|
94
109
|
end
|
95
110
|
if field.repeated?
|
96
111
|
@values[field.name] = Field::FieldArray.new(field)
|
@@ -163,7 +178,7 @@ module Protobuf
|
|
163
178
|
i = ' ' * indent
|
164
179
|
field_value_to_string = lambda {|field, value|
|
165
180
|
result << \
|
166
|
-
if field.optional? && !
|
181
|
+
if field.optional? && ! @values.has_key?(field.name)
|
167
182
|
''
|
168
183
|
else
|
169
184
|
case field
|
@@ -282,7 +297,7 @@ module Protobuf
|
|
282
297
|
# # do something
|
283
298
|
# end
|
284
299
|
def each_field
|
285
|
-
self.class.sorted_fields.each do |_, field|
|
300
|
+
self.class.__send__(:sorted_fields).each do |_, field|
|
286
301
|
value = __send__(field.name)
|
287
302
|
yield(field, value)
|
288
303
|
end
|
@@ -291,13 +306,15 @@ module Protobuf
|
|
291
306
|
def to_hash
|
292
307
|
hash = {}
|
293
308
|
each_field do |field, value|
|
294
|
-
next unless
|
309
|
+
next unless @values.has_key?(field.name)
|
295
310
|
case value
|
296
311
|
when Array
|
297
312
|
next if value.empty?
|
298
313
|
hash[field.name] = value.map {|val| val.is_a?(Message) ? val.to_hash : val}
|
299
314
|
when Message
|
300
315
|
hash[field.name] = value.to_hash
|
316
|
+
when EnumValue
|
317
|
+
hash[field.name] = value.name
|
301
318
|
else
|
302
319
|
hash[field.name] = value
|
303
320
|
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_protobuf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 29
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 0.4.
|
9
|
+
- 9
|
10
|
+
version: 0.4.9
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- MATSUYAMA Kengo
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-01-14 00:00:00 +09:00
|
19
19
|
default_executable: rprotoc
|
20
20
|
dependencies: []
|
21
21
|
|