ruby_protobuf 0.4.5 → 0.4.6

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.
@@ -7,28 +7,43 @@ module Protobuf
7
7
 
8
8
  module_function
9
9
 
10
+ READ_METHODS = [
11
+ :read_varint, # 0: Varint
12
+ :read_fixed64, # 1: 64 bit
13
+ :read_length_delimited, # 2: Length-delimited
14
+ :read_start_group, # 3: Start group
15
+ :read_end_group, # 4: End group
16
+ :read_fixed32, # 5: 32 bit
17
+ ]
18
+
10
19
  # Read bytes from +stream+ and pass to +message+ object.
11
20
  def decode(stream, message)
12
21
  until stream.eof?
13
22
  tag, wire_type = read_key(stream)
14
- bytes =
15
- case wire_type
16
- when WireType::VARINT
17
- read_varint(stream)
18
- when WireType::FIXED64
19
- read_fixed64(stream)
20
- when WireType::LENGTH_DELIMITED
21
- read_length_delimited(stream)
22
- when WireType::START_GROUP
23
- read_start_group(stream)
24
- when WireType::END_GROUP
25
- read_end_group(stream)
26
- when WireType::FIXED32
27
- read_fixed32(stream)
23
+ field = message.get_field_by_tag(tag)
24
+
25
+ method = READ_METHODS[wire_type]
26
+ raise InvalidWireType, "Unknown wire type: #{wire_type}" unless method
27
+ value = send(method, stream)
28
+
29
+ if field.nil?
30
+ # ignore unknown field
31
+ elsif field.repeated?
32
+ array = message.__send__(field.name)
33
+ if wire_type == WireType::LENGTH_DELIMITED && WireType::PACKABLE_TYPES.include?(field.wire_type)
34
+ # packed
35
+ s = StringIO.new(value)
36
+ m = READ_METHODS[field.wire_type]
37
+ until s.eof?
38
+ array << field.decode(send(m, s))
39
+ end
28
40
  else
29
- raise InvalidWireType, wire_type
41
+ # non-packed
42
+ array << field.decode(value)
30
43
  end
31
- message.set_field(tag, bytes)
44
+ else
45
+ message.__send__("#{field.name}=", field.decode(value))
46
+ end
32
47
  end
33
48
  message
34
49
  end
@@ -14,6 +14,7 @@ module Protobuf
14
14
  next unless message.has_field?(field.name)
15
15
 
16
16
  if field.repeated?
17
+ next if value.empty?
17
18
  if field.packed?
18
19
  key = (field.tag << 3) | WireType::LENGTH_DELIMITED
19
20
  packed_value = value.map {|val| field.encode(val) }.join
@@ -36,7 +36,7 @@ module Protobuf
36
36
  nil
37
37
  end
38
38
 
39
- attr_reader :message_class, :rule, :type, :name, :tag, :default
39
+ attr_reader :message_class, :rule, :type, :name, :tag, :default, :extension
40
40
  attr_reader :default_value
41
41
 
42
42
  def descriptor
@@ -53,7 +53,7 @@ module Protobuf
53
53
  unless options.empty?
54
54
  warn "WARNING: Invalid options: #{options.inspect} (in #{@message_class.name.split('::').last}.#{@name})"
55
55
  end
56
- if packed? && ! [WireType::VARINT, WireType::FIXED32, WireType::FIXED64].include?(wire_type)
56
+ if packed? && ! WireType::PACKABLE_TYPES.include?(wire_type)
57
57
  raise "Can't use packed encoding for `#{@type}' type"
58
58
  end
59
59
 
@@ -70,7 +70,7 @@ module Protobuf
70
70
  define_accessor
71
71
  end
72
72
 
73
- def ready?
73
+ def ready? # :nodoc:
74
74
  true
75
75
  end
76
76
 
@@ -86,30 +86,6 @@ module Protobuf
86
86
  end
87
87
  end
88
88
 
89
- # Decode +bytes+ and pass to +message_instance+.
90
- def set(message_instance, bytes)
91
- if packed?
92
- array = message_instance.__send__(@name)
93
- method = \
94
- case wire_type
95
- when WireType::FIXED32 then :read_fixed32
96
- when WireType::FIXED64 then :read_fixed64
97
- when WireType::VARINT then :read_varint
98
- end
99
- stream = StringIO.new(bytes)
100
- until stream.eof?
101
- array << decode(Decoder.__send__(method, stream))
102
- end
103
- else
104
- value = decode(bytes)
105
- if repeated?
106
- message_instance.__send__(@name) << value
107
- else
108
- message_instance.__send__("#{@name}=", value)
109
- end
110
- end
111
- end
112
-
113
89
  # Decode +bytes+ and return a field value.
114
90
  def decode(bytes)
115
91
  raise NotImplementedError, "#{self.class.name}\#decode"
@@ -146,7 +122,7 @@ module Protobuf
146
122
 
147
123
  # Is this a packed repeated field?
148
124
  def packed?
149
- !!@packed
125
+ @packed
150
126
  end
151
127
 
152
128
  # Upper limit for this field.
@@ -240,7 +216,7 @@ module Protobuf
240
216
  message_class, rule, type, name, tag, options
241
217
  end
242
218
 
243
- def ready?
219
+ def ready? # :nodoc:
244
220
  false
245
221
  end
246
222
 
@@ -338,7 +314,6 @@ module Protobuf
338
314
  end
339
315
 
340
316
  def decode(bytes)
341
- bytes.force_encoding(Encoding::ASCII_8BIT) if bytes.respond_to?(:force_encoding)
342
317
  bytes
343
318
  end
344
319
 
@@ -346,7 +321,7 @@ module Protobuf
346
321
  if value.respond_to?(:force_encoding)
347
322
  # Ruby 1.9
348
323
  result = VarintField.encode(value.bytesize)
349
- result << value.dup.force_encoding(Encoding::ASCII_8BIT)
324
+ result << value.dup.force_encoding(Encoding::BINARY)
350
325
  else
351
326
  # Ruby 1.8
352
327
  result = VarintField.encode(value.size)
@@ -592,7 +567,7 @@ module Protobuf
592
567
  end
593
568
 
594
569
  def decode(value)
595
- value == 1
570
+ value != 0
596
571
  end
597
572
 
598
573
  def encode(value)
@@ -652,7 +627,7 @@ module Protobuf
652
627
  class EnumField < VarintField
653
628
  def acceptable?(val)
654
629
  case val
655
- when Symbol
630
+ when Symbol, String
656
631
  raise TypeError unless @type.const_defined?(val)
657
632
  when EnumValue
658
633
  raise TypeError if val.parent_class != @type
@@ -683,9 +658,9 @@ module Protobuf
683
658
  if val.nil?
684
659
  @values.delete(field.name)
685
660
  else
686
- val = \
661
+ enum_value = \
687
662
  case val
688
- when Symbol
663
+ when Symbol, String
689
664
  field.type.const_get(val) rescue nil
690
665
  when Integer
691
666
  field.type.const_get(field.type.name_by_value(val)) rescue nil
@@ -693,9 +668,9 @@ module Protobuf
693
668
  raise TypeError, "Invalid value: #{val.inspect}" if val.parent_class != field.type
694
669
  val
695
670
  end
696
- raise TypeError, "Invalid value: #{val.inspect}" unless val
671
+ raise TypeError, "Invalid value: #{val.inspect}" unless enum_value
697
672
 
698
- @values[field.name] = val
673
+ @values[field.name] = enum_value
699
674
  end
700
675
  end
701
676
  end
@@ -1,4 +1,3 @@
1
- require 'pp'
2
1
  require 'stringio'
3
2
  require 'protobuf/descriptor/descriptor'
4
3
  require 'protobuf/message/decoder'
@@ -11,27 +10,12 @@ module Protobuf
11
10
 
12
11
  class Message
13
12
 
14
- class ExtensionFields < Hash
15
- def initialize(key_range=0..-1)
16
- @key_range = key_range
17
- end
18
-
19
- def []=(key, value)
20
- raise RangeError, "#{key} is not in #{@key_range}" unless @key_range.include?(key)
21
- super
22
- end
23
-
24
- def include_tag?(tag)
25
- @key_range.include?(tag)
26
- end
27
- end
28
-
29
13
  class <<self
30
14
  include Protoable
31
15
 
32
16
  # Reserve field numbers for extensions. Don't use this method directly.
33
17
  def extensions(range)
34
- @extension_fields = ExtensionFields.new(range)
18
+ @extension_tag = range
35
19
  end
36
20
 
37
21
  # Define a required field. Don't use this method directly.
@@ -51,15 +35,18 @@ module Protobuf
51
35
 
52
36
  # Define a field. Don't use this method directly.
53
37
  def define_field(rule, type, fname, tag, options)
54
- field_hash = options[:extension] ? extension_fields : fields
55
- if field_hash.keys.include?(tag)
56
- raise TagCollisionError, %!{Field number #{tag} has already been used in "#{self.name}" by field "#{fname}".!
38
+ if options[:extension] && ! extension_tag?(tag)
39
+ raise RangeError, "#{tag} is not in #{@extension_tag}"
40
+ end
41
+
42
+ if fields.include?(tag)
43
+ raise TagCollisionError, "Field tag #{tag} has already been used."
57
44
  end
58
- field_hash[tag] = Field.build(self, rule, type, fname, tag, options)
45
+ fields[tag] = Field.build(self, rule, type, fname, tag, options)
59
46
  end
60
47
 
61
48
  def extension_tag?(tag)
62
- extension_fields.include_tag?(tag)
49
+ @extension_tag.include?(tag)
63
50
  end
64
51
 
65
52
  # A collection of field object.
@@ -67,11 +54,6 @@ module Protobuf
67
54
  @fields ||= {}
68
55
  end
69
56
 
70
- # An extension field object.
71
- def extension_fields
72
- @extension_fields ||= ExtensionFields.new
73
- end
74
-
75
57
  # Find a field object by +name+.
76
58
  def get_field_by_name(name)
77
59
  name = name.to_sym
@@ -92,26 +74,6 @@ module Protobuf
92
74
  end
93
75
  end
94
76
 
95
- #TODO merge to get_field_by_name
96
- def get_ext_field_by_name(name)
97
- name = name.to_sym
98
- extension_fields.values.find {|field| field.name == name}
99
- end
100
-
101
- #TODO merge to get_field_by_tag
102
- def get_ext_field_by_tag(tag)
103
- extension_fields[tag]
104
- end
105
-
106
- #TODO merge to get_field
107
- def get_ext_field(tag_or_name)
108
- case tag_or_name
109
- when Integer then get_ext_field_by_tag(tag_or_name)
110
- when String, Symbol then get_ext_field_by_name(tag_or_name)
111
- else raise TypeError, tag_or_name.class
112
- end
113
- end
114
-
115
77
  def descriptor
116
78
  @descriptor ||= Descriptor::Descriptor.new(self)
117
79
  end
@@ -120,7 +82,7 @@ module Protobuf
120
82
  def initialize(values={})
121
83
  @values = {}
122
84
 
123
- self.class.fields.to_a.each do |tag, field|
85
+ self.class.fields.dup.each do |tag, field|
124
86
  unless field.ready?
125
87
  field = field.setup
126
88
  self.class.fields[tag] = field
@@ -130,27 +92,15 @@ module Protobuf
130
92
  end
131
93
  end
132
94
 
133
- # TODO
134
- self.class.extension_fields.to_a.each do |tag, field|
135
- unless field.ready?
136
- field = field.setup
137
- self.class.extension_fields[tag] = field
138
- end
139
- if field.repeated?
140
- @values[field.name] = Field::FieldArray.new(field)
141
- end
142
- end
143
-
144
- values.each {|tag, val| self[tag] = val}
95
+ values.each {|name, val| self.__send__("#{name}=", val)}
145
96
  end
146
97
 
147
98
  def initialized?
148
- fields.all? {|tag, field| field.initialized?(self) } && \
149
- extension_fields.all? {|tag, field| field.initialized?(self) }
99
+ fields.all? {|tag, field| field.initialized?(self) }
150
100
  end
151
101
 
152
102
  def has_field?(tag_or_name)
153
- field = get_field(tag_or_name) || get_ext_field(tag_or_name)
103
+ field = get_field(tag_or_name)
154
104
  raise ArgumentError, "unknown field: #{tag_or_name.inspect}" unless field
155
105
  @values.has_key?(field.name)
156
106
  end
@@ -263,7 +213,7 @@ module Protobuf
263
213
  io = StringIO.new(string)
264
214
  serialize_to(io)
265
215
  result = io.string
266
- result.force_encoding(Encoding::ASCII_8BIT) if result.respond_to?(:force_encoding)
216
+ result.force_encoding(Encoding::BINARY) if result.respond_to?(:force_encoding)
267
217
  result
268
218
  end
269
219
  alias to_s serialize_to_string
@@ -283,23 +233,11 @@ module Protobuf
283
233
  end
284
234
 
285
235
  def merge_from(message)
286
- # TODO
287
- fields.each {|tag, field| merge_field(tag, message.__send__(field.name))}
288
- extension_fields.each {|tag, field| merge_field(tag, message.__send__(field.name))}
289
- end
290
-
291
- def set_field(tag, bytes)
292
- field = (get_field_by_tag(tag) || get_ext_field_by_tag(tag))
293
- field.set(self, bytes) if field
294
- end
295
-
296
- def merge_field(tag, value)
297
- #get_field_by_tag(tag).merge self, bytes #TODO
298
- (get_field_by_tag(tag) || get_ext_field_by_tag(tag)).merge(self, value)
236
+ fields.each {|tag, field| field.merge(self, message.__send__(field.name))}
299
237
  end
300
238
 
301
239
  def [](tag_or_name)
302
- if field = get_field(tag_or_name) || get_ext_field(tag_or_name)
240
+ if field = get_field(tag_or_name)
303
241
  __send__(field.name)
304
242
  else
305
243
  raise NoMethodError, "No such field: #{tag_or_name.inspect}"
@@ -307,7 +245,7 @@ module Protobuf
307
245
  end
308
246
 
309
247
  def []=(tag_or_name, value)
310
- if field = get_field(tag_or_name) || get_ext_field(tag_or_name)
248
+ if field = get_field(tag_or_name)
311
249
  __send__("#{field.name}=", value)
312
250
  else
313
251
  raise NoMethodError, "No such field: #{tag_or_name.inspect}"
@@ -334,32 +272,34 @@ module Protobuf
334
272
  self.class.get_field(tag_or_name)
335
273
  end
336
274
 
337
- # Returns extension fields. See Message#fields method.
338
- def extension_fields
339
- self.class.extension_fields
340
- end
341
-
342
- def get_ext_field_by_name(name) # :nodoc:
343
- self.class.get_ext_field_by_name(name)
344
- end
345
-
346
- def get_ext_field_by_tag(tag) # :nodoc:
347
- self.class.get_ext_field_by_tag(tag)
348
- end
349
-
350
- def get_ext_field(tag_or_name) # :nodoc:
351
- self.class.get_ext_field(tag_or_name)
352
- end
353
-
354
275
  # Iterate over a field collection.
355
276
  # message.each_field do |field_object, value|
356
277
  # # do something
357
278
  # end
358
279
  def each_field
359
- fields.merge(extension_fields).sort_by {|tag, _| tag}.each do |_, field|
280
+ @sorted_fields ||= fields.sort_by {|tag, _| tag}
281
+ @sorted_fields.each do |_, field|
360
282
  value = __send__(field.name)
361
283
  yield(field, value)
362
284
  end
363
285
  end
286
+
287
+ def to_hash
288
+ hash = {}
289
+ each_field do |field, value|
290
+ next unless has_field?(field.tag)
291
+ case value
292
+ when Array
293
+ next if value.empty?
294
+ hash[field.name] = value.map {|val| val.is_a?(Message) ? val.to_hash : val}
295
+ when Message
296
+ hash[field.name] = value.to_hash
297
+ else
298
+ hash[field.name] = value
299
+ end
300
+ end
301
+ hash
302
+ end
303
+
364
304
  end
365
305
  end
@@ -8,12 +8,12 @@
8
8
  # }
9
9
  # message InnerMessage2 {
10
10
  # required string name = 1;
11
- # repeated InnerMessage1 repeate_message = 2;
11
+ # repeated InnerMessage1 repeated_message = 2;
12
12
  # }
13
13
  #
14
14
  # required string name = 1;
15
- # repeated InnerMessage1 repeate_message = 2;
16
- # required InnerMessage2 require_message = 3;
15
+ # repeated InnerMessage1 repeated_message = 2;
16
+ # required InnerMessage2 required_message = 3;
17
17
  # }
18
18
 
19
19
  require 'protobuf/message/message'
@@ -31,10 +31,10 @@ module Test
31
31
  class InnerMessage2 < ::Protobuf::Message
32
32
  defined_in __FILE__
33
33
  required :string, :name, 1
34
- repeated :InnerMessage1, :repeate_message, 2
34
+ repeated :InnerMessage1, :repeated_message, 2
35
35
  end
36
36
  required :string, :name, 1
37
- repeated :InnerMessage1, :repeate_message, 2
38
- required :InnerMessage2, :require_message, 3
37
+ repeated :InnerMessage1, :repeated_message, 2
38
+ required :InnerMessage2, :required_message, 3
39
39
  end
40
40
  end
@@ -6,10 +6,10 @@ message MergeMessage {
6
6
  }
7
7
  message InnerMessage2 {
8
8
  required string name = 1;
9
- repeated InnerMessage1 repeate_message = 2;
9
+ repeated InnerMessage1 repeated_message = 2;
10
10
  }
11
11
 
12
12
  required string name = 1;
13
- repeated InnerMessage1 repeate_message = 2;
14
- required InnerMessage2 require_message = 3;
13
+ repeated InnerMessage1 repeated_message = 2;
14
+ required InnerMessage2 required_message = 3;
15
15
  }
@@ -30,9 +30,10 @@ class EnumValueTest < Test::Unit::TestCase
30
30
  assert_equal(1, phone_number.type)
31
31
 
32
32
  phone_number.type = :HOME
33
- assert_kind_of(Protobuf::EnumValue, phone_number.type)
34
33
  assert_equal(Tutorial::Person::PhoneType::HOME, phone_number.type)
35
- assert_equal(1, phone_number.type)
34
+
35
+ phone_number.type = 'HOME'
36
+ assert_equal(Tutorial::Person::PhoneType::HOME, phone_number.type)
36
37
 
37
38
  assert_raise(TypeError) do
38
39
  phone_number.type = TutorialExt::Person::PhoneType::HOME
@@ -3,8 +3,8 @@ require 'test/proto/addressbook_ext.pb'
3
3
 
4
4
  class ExtensionTest < Test::Unit::TestCase
5
5
  def test_accessor
6
- assert(TutorialExt::Person.extension_fields.to_a.map{|t, f| f.name}.include?(:age))
7
6
  person = TutorialExt::Person.new
7
+ assert(TutorialExt::Person.get_field(:age).extension)
8
8
  assert_nothing_raised {person.age = 100}
9
9
  assert_equal(100, person.age)
10
10
  end
data/test/test_message.rb CHANGED
@@ -32,26 +32,32 @@ class MessageTest < Test::Unit::TestCase
32
32
  end
33
33
 
34
34
  def test_initialize_with_hash
35
- person = Tutorial::Person.new(:name => 'Jiro', :id => 300, :email => 'jiro@ema.il')
35
+ hash = { :name => 'Jiro', :id => 300, :email => 'jiro@ema.il' }
36
+ person = Tutorial::Person.new(hash)
36
37
  assert_equal('Jiro', person.name)
37
38
  assert_equal(300, person.id)
38
39
  assert_equal('jiro@ema.il', person.email)
40
+ assert_equal(hash, person.to_hash)
39
41
 
40
42
  # initialize with array of hash
41
- person = Tutorial::Person.new(:phone => [{:number => 'phone1'}, {:number => 'phone2'}])
43
+ hash = { :phone => [{:number => 'phone1'}, {:number => 'phone2'}] }
44
+ person = Tutorial::Person.new(hash)
42
45
  assert_equal('phone1', person.phone[0].number)
43
46
  assert_equal('phone2', person.phone[1].number)
47
+ assert_equal(hash, person.to_hash)
44
48
 
45
49
  # initalize with hash in hash
46
- message = Test::MergeMessage.new(:require_message => { :name => 'name1', :repeate_message => [{:name => 'name2'}] })
47
- assert_equal('name1', message.require_message.name)
48
- assert_equal('name2', message.require_message.repeate_message[0].name)
49
-
50
- message.require_message = { :name => 'name21' }
51
- message.require_message.repeate_message = [ {:name => 'name22'} ]
52
- assert_equal('name21', message.require_message.name)
53
- assert_equal('name22', message.require_message.repeate_message[0].name)
54
- assert_equal(1, message.require_message.repeate_message.size)
50
+ hash = { :required_message => { :name => 'name1', :repeated_message => [{:name => 'name2'}] } }
51
+ message = Test::MergeMessage.new(hash)
52
+ assert_equal('name1', message.required_message.name)
53
+ assert_equal('name2', message.required_message.repeated_message[0].name)
54
+ assert_equal(hash, message.to_hash)
55
+
56
+ message.required_message = { :name => 'name21' }
57
+ message.required_message.repeated_message = [ {:name => 'name22'} ]
58
+ assert_equal('name21', message.required_message.name)
59
+ assert_equal('name22', message.required_message.repeated_message[0].name)
60
+ assert_equal(1, message.required_message.repeated_message.size)
55
61
  end
56
62
 
57
63
  def test_defined_filenames
@@ -106,23 +112,23 @@ message AddressBook {
106
112
 
107
113
  def test_merge_field
108
114
  inner_message1_2 = Test::MergeMessage::InnerMessage2.new(:name => 'name12')
109
- inner_message1_2.repeate_message << Test::MergeMessage::InnerMessage1.new(:name => 'name121')
110
- message1 = Test::MergeMessage.new(:name => 'name1', :require_message => inner_message1_2)
111
- message1.repeate_message << Test::MergeMessage::InnerMessage1.new(:name => 'name11')
115
+ inner_message1_2.repeated_message << Test::MergeMessage::InnerMessage1.new(:name => 'name121')
116
+ message1 = Test::MergeMessage.new(:name => 'name1', :required_message => inner_message1_2)
117
+ message1.repeated_message << Test::MergeMessage::InnerMessage1.new(:name => 'name11')
112
118
 
113
119
  inner_message2_2 = Test::MergeMessage::InnerMessage2.new(:name => 'name22')
114
- inner_message2_2.repeate_message << Test::MergeMessage::InnerMessage1.new(:name => 'name221')
115
- message2 = Test::MergeMessage.new(:name => 'name2', :require_message => inner_message2_2)
116
- message2.repeate_message << Test::MergeMessage::InnerMessage1.new(:name => 'name21')
120
+ inner_message2_2.repeated_message << Test::MergeMessage::InnerMessage1.new(:name => 'name221')
121
+ message2 = Test::MergeMessage.new(:name => 'name2', :required_message => inner_message2_2)
122
+ message2.repeated_message << Test::MergeMessage::InnerMessage1.new(:name => 'name21')
117
123
 
118
124
  message1.merge_from(message2)
119
125
  assert_equal('name2', message1.name)
120
- assert_equal(2, message1.repeate_message.size)
121
- assert_equal('name11', message1.repeate_message[0].name)
122
- assert_equal('name21', message1.repeate_message[1].name)
123
- assert_equal('name22', message1.require_message.name)
124
- assert_equal(2, message1.require_message.repeate_message.size)
125
- assert_equal('name121', message1.require_message.repeate_message[0].name)
126
- assert_equal('name221', message1.require_message.repeate_message[1].name)
126
+ assert_equal(2, message1.repeated_message.size)
127
+ assert_equal('name11', message1.repeated_message[0].name)
128
+ assert_equal('name21', message1.repeated_message[1].name)
129
+ assert_equal('name22', message1.required_message.name)
130
+ assert_equal(2, message1.required_message.repeated_message.size)
131
+ assert_equal('name121', message1.required_message.repeated_message[0].name)
132
+ assert_equal('name221', message1.required_message.repeated_message[1].name)
127
133
  end
128
134
  end
@@ -37,4 +37,9 @@ class PackedFieldTest < Test::Unit::TestCase
37
37
  end
38
38
  end
39
39
 
40
+ def test_empty_packed_field
41
+ message = Test::PackedField::Message.new
42
+ assert_equal('', message.to_s)
43
+ end
44
+
40
45
  end
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 4
8
- - 5
9
- version: 0.4.5
8
+ - 6
9
+ version: 0.4.6
10
10
  platform: ruby
11
11
  authors:
12
12
  - MATSUYAMA Kengo
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-07-17 00:00:00 +09:00
17
+ date: 2010-09-12 00:00:00 +09:00
18
18
  default_executable: rprotoc
19
19
  dependencies: []
20
20
 
@@ -147,38 +147,33 @@ signing_key:
147
147
  specification_version: 3
148
148
  summary: Protocol Buffers for Ruby
149
149
  test_files:
150
+ - test/check_unbuild.rb
151
+ - test/test_descriptor.rb
152
+ - test/test_optional_field.rb
153
+ - test/proto/merge.pb.rb
154
+ - test/proto/ext_collision.pb.rb
155
+ - test/proto/lowercase.pb.rb
156
+ - test/proto/addressbook_base.pb.rb
150
157
  - test/proto/packed.pb.rb
151
- - test/proto/types.pb.rb
158
+ - test/proto/optional_field.pb.rb
152
159
  - test/proto/addressbook.pb.rb
153
- - test/proto/ext_range.pb.rb
160
+ - test/proto/addressbook_ext.pb.rb
154
161
  - test/proto/nested.pb.rb
155
- - test/proto/client_search.rb
156
- - test/proto/addressbook_base.pb.rb
157
- - test/proto/rpc.pb.rb
158
- - test/proto/address_book_service.rb
162
+ - test/proto/ext_range.pb.rb
163
+ - test/proto/types.pb.rb
159
164
  - test/proto/collision.pb.rb
160
- - test/proto/optional_field.pb.rb
161
- - test/proto/merge.pb.rb
162
- - test/proto/addressbook_ext.pb.rb
163
- - test/proto/client_add.rb
164
- - test/proto/float_default.pb.rb
165
- - test/proto/lowercase.pb.rb
166
- - test/proto/ext_collision.pb.rb
167
- - test/test_compiler.rb
168
- - test/test_parse.rb
169
- - test/test_addressbook.rb
170
- - test/test_extension.rb
171
- - test/test_lowercase.rb
172
- - test/test_standard_message.rb
173
165
  - test/test_enum_value.rb
174
- - test/test_message.rb
175
- - test/test_types.rb
176
166
  - test/test_repeated_types.rb
177
- - test/test_descriptor.rb
178
- - test/test_optional_field.rb
179
- - test/test_packed_field.rb
167
+ - test/test_types.rb
168
+ - test/test_extension.rb
180
169
  - test/test_serialize.rb
181
- - test/check_unbuild.rb
182
- - examples/addressbook.pb.rb
170
+ - test/test_standard_message.rb
171
+ - test/test_packed_field.rb
172
+ - test/test_lowercase.rb
173
+ - test/test_compiler.rb
174
+ - test/test_message.rb
175
+ - test/test_parse.rb
176
+ - test/test_addressbook.rb
183
177
  - examples/writing_a_message.rb
184
178
  - examples/reading_a_message.rb
179
+ - examples/addressbook.pb.rb