ruby_protobuf 0.4.1 → 0.4.4
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 +5 -1
- data/Manifest.txt +0 -1
- data/VERSION +1 -1
- data/bin/rprotoc +0 -3
- data/lib/protobuf/common/util.rb +8 -0
- data/lib/protobuf/compiler/nodes.rb +4 -6
- data/lib/protobuf/compiler/template/rpc_bin.erb +1 -1
- data/lib/protobuf/compiler/template/rpc_client.erb +4 -4
- data/lib/protobuf/compiler/template/rpc_service.erb +5 -5
- data/lib/protobuf/compiler/visitors.rb +9 -14
- data/lib/protobuf/descriptor/descriptor.rb +1 -0
- data/lib/protobuf/message/enum.rb +11 -4
- data/test/proto/addressbook.pb.rb +3 -3
- data/test/proto/addressbook_base.pb.rb +3 -3
- data/test/proto/lowercase.pb.rb +29 -9
- data/test/proto/lowercase.proto +11 -1
- data/test/proto/optional_field.pb.rb +2 -2
- data/test/test_compiler.rb +32 -13
- data/test/test_lowercase.rb +11 -3
- metadata +3 -4
- data/lib/ruby_protobuf.rb +0 -3
data/History.txt
CHANGED
data/Manifest.txt
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.4
|
data/bin/rprotoc
CHANGED
@@ -8,7 +8,6 @@ else
|
|
8
8
|
require 'rubygems'
|
9
9
|
gem 'ruby_protobuf'
|
10
10
|
end
|
11
|
-
require 'ruby_protobuf'
|
12
11
|
require 'protobuf/compiler/compiler'
|
13
12
|
|
14
13
|
|
@@ -22,8 +21,6 @@ opts.on('-o', '--out <OUT_DIR>', 'Specify the directory in which Ruby source fil
|
|
22
21
|
opts.on_tail('-v', '--version', 'Show version.'){ puts(opts.ver); exit }
|
23
22
|
opts.on_tail('-h', '--help', 'Show this message.'){ puts(opts.help); exit }
|
24
23
|
|
25
|
-
::Version = RubyProtobuf::VERSION
|
26
|
-
|
27
24
|
begin
|
28
25
|
opts.order!
|
29
26
|
rescue OptionParser::ParseError
|
data/lib/protobuf/common/util.rb
CHANGED
@@ -107,9 +107,7 @@ require 'protobuf/message/extend'
|
|
107
107
|
end
|
108
108
|
|
109
109
|
def accept_message_visitor(visitor)
|
110
|
-
|
111
|
-
class_name.gsub!(/\A[a-z]/) {|c| c.upcase}
|
112
|
-
visitor.write("class #{class_name} < ::Protobuf::Message")
|
110
|
+
visitor.write("class #{Util.modulize(@name)} < ::Protobuf::Message")
|
113
111
|
visitor.in_context(self.class) do
|
114
112
|
define_in_the_file(visitor)
|
115
113
|
@children.each {|child| child.accept_message_visitor(visitor) }
|
@@ -133,7 +131,7 @@ require 'protobuf/message/extend'
|
|
133
131
|
|
134
132
|
def accept_message_visitor(visitor)
|
135
133
|
name = @name.is_a?(Array) ? @name.join : name.to_s
|
136
|
-
visitor.write("class #{name} < ::Protobuf::Message")
|
134
|
+
visitor.write("class #{Util.modulize(name)} < ::Protobuf::Message")
|
137
135
|
visitor.in_context(self.class) do
|
138
136
|
define_in_the_file(visitor)
|
139
137
|
@children.each {|child| child.accept_message_visitor(visitor) }
|
@@ -152,7 +150,7 @@ require 'protobuf/message/extend'
|
|
152
150
|
end
|
153
151
|
|
154
152
|
def accept_message_visitor(visitor)
|
155
|
-
visitor.write("class #{@name} < ::Protobuf::Enum")
|
153
|
+
visitor.write("class #{Util.modulize(@name)} < ::Protobuf::Enum")
|
156
154
|
visitor.in_context(self.class) do
|
157
155
|
define_in_the_file(visitor)
|
158
156
|
@children.each {|child| child.accept_message_visitor(visitor) }
|
@@ -175,7 +173,7 @@ require 'protobuf/message/extend'
|
|
175
173
|
end
|
176
174
|
|
177
175
|
def accept_message_visitor(visitor)
|
178
|
-
visitor.write("
|
176
|
+
visitor.write("#{Util.modulize(@name)} = value(:#{@name}, #{@value})")
|
179
177
|
end
|
180
178
|
|
181
179
|
def accept_descriptor_visitor(visitor)
|
@@ -3,15 +3,15 @@ require 'protobuf/rpc/client'
|
|
3
3
|
require '<%= required_file %>'
|
4
4
|
|
5
5
|
# build request
|
6
|
-
request = <%= message_module %>::<%= request %>.new
|
6
|
+
request = <%= message_module %>::<%= Util.modulize(request) %>.new
|
7
7
|
# TODO: setup a request
|
8
8
|
raise StandardError, 'setup a request'
|
9
9
|
|
10
|
-
# create
|
11
|
-
response = <%= message_module %>::<%= response %>.new
|
10
|
+
# create blank response
|
11
|
+
response = <%= message_module %>::<%= Util.modulize(response) %>.new
|
12
12
|
|
13
13
|
# execute rpc
|
14
|
-
Protobuf::Rpc::Client.new('localhost', <%= default_port %>).call :<%= underscore
|
14
|
+
Protobuf::Rpc::Client.new('localhost', <%= default_port %>).call :<%= Util.underscore(name) %>, request, response
|
15
15
|
|
16
16
|
# show response
|
17
17
|
puts response
|
@@ -3,9 +3,9 @@ require 'protobuf/rpc/handler'
|
|
3
3
|
require '<%= required_file %>'
|
4
4
|
|
5
5
|
<%- rpcs.each do |name, request, response| -%>
|
6
|
-
class <%= module_name %>::<%= name %>Handler < Protobuf::Rpc::Handler
|
7
|
-
request <%= module_name %>::<%= request %>
|
8
|
-
response <%= module_name %>::<%= response %>
|
6
|
+
class <%= module_name %>::<%= Util.modulize(name) %>Handler < Protobuf::Rpc::Handler
|
7
|
+
request <%= module_name %>::<%= Util.modulize(request) %>
|
8
|
+
response <%= module_name %>::<%= Util.modulize(response) %>
|
9
9
|
|
10
10
|
def self.process_request(request, response)
|
11
11
|
# TODO: edit this method
|
@@ -13,11 +13,11 @@ class <%= module_name %>::<%= name %>Handler < Protobuf::Rpc::Handler
|
|
13
13
|
end
|
14
14
|
|
15
15
|
<%- end -%>
|
16
|
-
class <%= module_name %>::<%= service_name %> < Protobuf::Rpc::Server
|
16
|
+
class <%= module_name %>::<%= Util.modulize(service_name) %> < Protobuf::Rpc::Server
|
17
17
|
def setup_handlers
|
18
18
|
@handlers = {
|
19
19
|
<%- rpcs.each do |name, | -%>
|
20
|
-
:<%= underscore
|
20
|
+
:<%= Util.underscore(name) %> => <%= module_name %>::<%= Util.modulize(name) %>Handler,
|
21
21
|
<%- end -%>
|
22
22
|
}
|
23
23
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'erb'
|
2
2
|
require 'fileutils'
|
3
|
+
require 'protobuf/common/util'
|
3
4
|
require 'protobuf/descriptor/descriptor_proto'
|
4
5
|
|
5
6
|
module Protobuf
|
@@ -107,9 +108,9 @@ module Protobuf
|
|
107
108
|
|
108
109
|
def create_files(filename, out_dir, file_create)
|
109
110
|
begin
|
110
|
-
|
111
|
-
rescue LoadError
|
112
|
-
puts "Warning, couldn't test load proto file because of imports"
|
111
|
+
eval(to_s, TOPLEVEL_BINDING) # check the message
|
112
|
+
rescue LoadError
|
113
|
+
$stderr.puts "Warning, couldn't test load proto file because of imports"
|
113
114
|
end
|
114
115
|
if file_create
|
115
116
|
log_writing(filename)
|
@@ -143,8 +144,8 @@ module Protobuf
|
|
143
144
|
@create_file = create_file
|
144
145
|
default_port = 9999
|
145
146
|
@services.each do |service_name, rpcs|
|
146
|
-
underscored_name = underscore
|
147
|
-
message_module = package.map{|p| p.to_s
|
147
|
+
underscored_name = Util.underscore(service_name.to_s)
|
148
|
+
message_module = package.map{|p| Util.camelize(p.to_s)}.join('::')
|
148
149
|
required_file = message_file.sub(/^\.\//, '').sub(/\.rb$/, '')
|
149
150
|
|
150
151
|
create_bin(out_dir, underscored_name, message_module, service_name, default_port)
|
@@ -165,17 +166,15 @@ module Protobuf
|
|
165
166
|
@file_contents[bin_filename] = bin_contents
|
166
167
|
end
|
167
168
|
|
168
|
-
def create_service(message_file, out_dir, underscored_name, module_name, service_name,
|
169
|
-
default_port, rpcs, required_file)
|
169
|
+
def create_service(message_file, out_dir, underscored_name, module_name, service_name, default_port, rpcs, required_file)
|
170
170
|
service_filename = "#{out_dir}/#{underscored_name}.rb"
|
171
171
|
service_contents = template_erb('rpc_service').result(binding)
|
172
172
|
create_file_with_backup(service_filename, service_contents) if @create_file
|
173
173
|
@file_contents[service_filename] = service_contents
|
174
174
|
end
|
175
175
|
|
176
|
-
def create_client(out_dir, underscored_name, default_port, name, request, response,
|
177
|
-
|
178
|
-
client_filename = "#{out_dir}/client_#{underscore name}.rb"
|
176
|
+
def create_client(out_dir, underscored_name, default_port, name, request, response, message_module, required_file)
|
177
|
+
client_filename = "#{out_dir}/client_#{Util.underscore(name)}.rb"
|
179
178
|
client_contents = template_erb('rpc_client').result binding
|
180
179
|
create_file_with_backup(client_filename, client_contents, true) if @create_file
|
181
180
|
@file_contents[client_filename] = client_contents
|
@@ -183,10 +182,6 @@ module Protobuf
|
|
183
182
|
|
184
183
|
private
|
185
184
|
|
186
|
-
def underscore(str)
|
187
|
-
str.to_s.gsub(/\B[A-Z]/, '_\&').downcase
|
188
|
-
end
|
189
|
-
|
190
185
|
def template_erb(template)
|
191
186
|
ERB.new(File.read("#{File.dirname(__FILE__)}/template/#{template}.erb"), nil, '-')
|
192
187
|
end
|
@@ -26,6 +26,7 @@ module Protobuf
|
|
26
26
|
def unbuild(parent_proto)
|
27
27
|
message_proto = Google::Protobuf::DescriptorProto.new
|
28
28
|
message_proto.name = @message_class.to_s.split('::').last
|
29
|
+
@message_class.new # XXX: Setup field proxies.
|
29
30
|
@message_class.fields.each do |tag, field|
|
30
31
|
field.descriptor.unbuild(message_proto)
|
31
32
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'delegate'
|
2
|
+
require 'protobuf/common/util'
|
2
3
|
require 'protobuf/descriptor/enum_descriptor'
|
3
4
|
require 'protobuf/message/protoable'
|
4
5
|
|
@@ -13,7 +14,7 @@ module Protobuf
|
|
13
14
|
if not defined?(@values)
|
14
15
|
constants.find {|c| const_get(c) == value} # for compatibility
|
15
16
|
else
|
16
|
-
@values_index ||= @values.inject({}) {|hash, (n, v)| hash[v.value] = n; hash }
|
17
|
+
@values_index ||= @values.inject({}) {|hash, (n, v)| hash[v.value.to_i] = n; hash }
|
17
18
|
@values_index[value]
|
18
19
|
end
|
19
20
|
end
|
@@ -30,11 +31,17 @@ module Protobuf
|
|
30
31
|
|
31
32
|
private
|
32
33
|
|
34
|
+
# for compatibility
|
33
35
|
def define(name, value)
|
34
36
|
enum_value = EnumValue.new(self, name, value)
|
35
|
-
const_set(name, enum_value)
|
36
|
-
@values ||= {}
|
37
|
-
|
37
|
+
const_set(Util.modulize(name), enum_value)
|
38
|
+
(@values ||= {})[name] = enum_value
|
39
|
+
end
|
40
|
+
|
41
|
+
def value(name, val)
|
42
|
+
enum_value = EnumValue.new(self, name, val)
|
43
|
+
(@values ||= {})[name] = enum_value
|
44
|
+
enum_value
|
38
45
|
end
|
39
46
|
end
|
40
47
|
end
|
@@ -47,9 +47,9 @@ module Tutorial
|
|
47
47
|
optional :string, :email, 3
|
48
48
|
class PhoneType < ::Protobuf::Enum
|
49
49
|
defined_in __FILE__
|
50
|
-
|
51
|
-
|
52
|
-
|
50
|
+
MOBILE = value(:MOBILE, 0)
|
51
|
+
HOME = value(:HOME, 1)
|
52
|
+
WORK = value(:WORK, 2)
|
53
53
|
end
|
54
54
|
class PhoneNumber < ::Protobuf::Message
|
55
55
|
defined_in __FILE__
|
@@ -40,9 +40,9 @@ module TutorialExt
|
|
40
40
|
optional :string, :email, 3
|
41
41
|
class PhoneType < ::Protobuf::Enum
|
42
42
|
defined_in __FILE__
|
43
|
-
|
44
|
-
|
45
|
-
|
43
|
+
MOBILE = value(:MOBILE, 0)
|
44
|
+
HOME = value(:HOME, 1)
|
45
|
+
WORK = value(:WORK, 2)
|
46
46
|
end
|
47
47
|
class PhoneNumber < ::Protobuf::Message
|
48
48
|
defined_in __FILE__
|
data/test/proto/lowercase.pb.rb
CHANGED
@@ -1,14 +1,24 @@
|
|
1
1
|
### Generated by rprotoc. DO NOT EDIT!
|
2
2
|
### <proto file: test/proto/lowercase.proto>
|
3
|
-
# package test.
|
3
|
+
# package test.lower_case.lowerCamelCase;
|
4
4
|
#
|
5
5
|
# message foo {
|
6
6
|
# message bar {
|
7
|
+
# message fooBar {
|
8
|
+
# }
|
7
9
|
# }
|
8
10
|
# }
|
9
11
|
# message baaz {
|
10
12
|
# required foo.bar x = 1;
|
11
13
|
# }
|
14
|
+
# enum baaaz {
|
15
|
+
# abc = 0;
|
16
|
+
# def = 1;
|
17
|
+
# }
|
18
|
+
#
|
19
|
+
# service qux {
|
20
|
+
# rpc quuuux(baaz) returns (foo);
|
21
|
+
# }
|
12
22
|
|
13
23
|
require 'protobuf/message/message'
|
14
24
|
require 'protobuf/message/enum'
|
@@ -16,16 +26,26 @@ require 'protobuf/message/service'
|
|
16
26
|
require 'protobuf/message/extend'
|
17
27
|
|
18
28
|
module Test
|
19
|
-
module
|
20
|
-
|
21
|
-
|
22
|
-
class Bar < ::Protobuf::Message
|
29
|
+
module LowerCase
|
30
|
+
module LowerCamelCase
|
31
|
+
class Foo < ::Protobuf::Message
|
23
32
|
defined_in __FILE__
|
33
|
+
class Bar < ::Protobuf::Message
|
34
|
+
defined_in __FILE__
|
35
|
+
class FooBar < ::Protobuf::Message
|
36
|
+
defined_in __FILE__
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
class Baaz < ::Protobuf::Message
|
41
|
+
defined_in __FILE__
|
42
|
+
required :'foo::bar', :x, 1
|
43
|
+
end
|
44
|
+
class Baaaz < ::Protobuf::Enum
|
45
|
+
defined_in __FILE__
|
46
|
+
define :abc, 0
|
47
|
+
define :def, 1
|
24
48
|
end
|
25
|
-
end
|
26
|
-
class Baaz < ::Protobuf::Message
|
27
|
-
defined_in __FILE__
|
28
|
-
required :'foo::bar', :x, 1
|
29
49
|
end
|
30
50
|
end
|
31
51
|
end
|
data/test/proto/lowercase.proto
CHANGED
@@ -1,9 +1,19 @@
|
|
1
|
-
package test.
|
1
|
+
package test.lower_case.lowerCamelCase;
|
2
2
|
|
3
3
|
message foo {
|
4
4
|
message bar {
|
5
|
+
message fooBar {
|
6
|
+
}
|
5
7
|
}
|
6
8
|
}
|
7
9
|
message baaz {
|
8
10
|
required foo.bar x = 1;
|
9
11
|
}
|
12
|
+
enum baaaz {
|
13
|
+
abc = 0;
|
14
|
+
def = 1;
|
15
|
+
}
|
16
|
+
|
17
|
+
service qux {
|
18
|
+
rpc quuuux(baaz) returns (foo);
|
19
|
+
}
|
@@ -24,8 +24,8 @@ module Test
|
|
24
24
|
defined_in __FILE__
|
25
25
|
class Enum < ::Protobuf::Enum
|
26
26
|
defined_in __FILE__
|
27
|
-
|
28
|
-
|
27
|
+
A = value(:A, 1)
|
28
|
+
B = value(:B, 2)
|
29
29
|
end
|
30
30
|
optional :uint32, :number, 1, :default => 20
|
31
31
|
optional :string, :text, 2, :default => "default string"
|
data/test/test_compiler.rb
CHANGED
@@ -2,6 +2,20 @@ require 'test/unit'
|
|
2
2
|
require 'protobuf/compiler/compiler'
|
3
3
|
|
4
4
|
class CompilerTest < Test::Unit::TestCase
|
5
|
+
def save_const(parent_class, const_name)
|
6
|
+
if parent_class.const_defined?(const_name)
|
7
|
+
saved = parent_class.const_get(const_name)
|
8
|
+
parent_class.__send__(:remove_const, const_name)
|
9
|
+
end
|
10
|
+
|
11
|
+
yield
|
12
|
+
|
13
|
+
if saved
|
14
|
+
parent_class.__send__(:remove_const, const_name) if parent_class.const_defined?(const_name)
|
15
|
+
parent_class.const_set(const_name, saved)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
5
19
|
# Issue 12: Parse error on float default value
|
6
20
|
def test_compile_float_default
|
7
21
|
assert_compile_proto(<<-EOS, 'test/proto/float_default.proto')
|
@@ -37,7 +51,8 @@ end
|
|
37
51
|
end
|
38
52
|
|
39
53
|
def test_create_message
|
40
|
-
|
54
|
+
save_const(Object, :Tutorial) do
|
55
|
+
assert_compile_proto(<<-EOS, 'test/proto/addressbook.proto')
|
41
56
|
### Generated by rprotoc. DO NOT EDIT!
|
42
57
|
### <proto file: test/proto/addressbook.proto>
|
43
58
|
# package tutorial;
|
@@ -88,9 +103,9 @@ module Tutorial
|
|
88
103
|
|
89
104
|
class PhoneType < ::Protobuf::Enum
|
90
105
|
defined_in __FILE__
|
91
|
-
|
92
|
-
|
93
|
-
|
106
|
+
MOBILE = value(:MOBILE, 0)
|
107
|
+
HOME = value(:HOME, 1)
|
108
|
+
WORK = value(:WORK, 2)
|
94
109
|
end
|
95
110
|
|
96
111
|
class PhoneNumber < ::Protobuf::Message
|
@@ -110,11 +125,13 @@ module Tutorial
|
|
110
125
|
repeated :Person, :person, 1
|
111
126
|
end
|
112
127
|
end
|
113
|
-
|
128
|
+
EOS
|
129
|
+
end
|
114
130
|
end
|
115
131
|
|
116
132
|
def test_create_nested_message
|
117
|
-
|
133
|
+
save_const(Test, :Nested) do
|
134
|
+
assert_compile_proto(<<-EOS, 'test/proto/nested.proto')
|
118
135
|
### Generated by rprotoc. DO NOT EDIT!
|
119
136
|
### <proto file: test/proto/nested.proto>
|
120
137
|
# package test.nested;
|
@@ -146,14 +163,16 @@ module Test
|
|
146
163
|
end
|
147
164
|
end
|
148
165
|
end
|
149
|
-
|
166
|
+
EOS
|
167
|
+
end
|
150
168
|
end
|
151
169
|
|
152
170
|
def test_nested_message
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
171
|
+
save_const(Test, :Nested) do
|
172
|
+
file_contents = Protobuf::Compiler.new.create_message('test/proto/nested.proto', '.', '.', false)
|
173
|
+
assert_raise(TypeError) {Test::Nested::Baaz.new.x = 1}
|
174
|
+
assert_nothing_raised {Test::Nested::Baaz.new.x = Test::Nested::Foo::Bar.new}
|
175
|
+
end
|
157
176
|
end
|
158
177
|
|
159
178
|
def test_create_rpc
|
@@ -209,7 +228,7 @@ request = Tutorial::Person.new
|
|
209
228
|
# TODO: setup a request
|
210
229
|
raise StandardError, 'setup a request'
|
211
230
|
|
212
|
-
# create
|
231
|
+
# create blank response
|
213
232
|
response = Tutorial::AddressBook.new
|
214
233
|
|
215
234
|
# execute rpc
|
@@ -229,7 +248,7 @@ request = Tutorial::Person.new
|
|
229
248
|
# TODO: setup a request
|
230
249
|
raise StandardError, 'setup a request'
|
231
250
|
|
232
|
-
# create
|
251
|
+
# create blank response
|
233
252
|
response = Tutorial::Person.new
|
234
253
|
|
235
254
|
# execute rpc
|
data/test/test_lowercase.rb
CHANGED
@@ -4,8 +4,16 @@ require 'test/proto/lowercase.pb'
|
|
4
4
|
class LowercaseTest < Test::Unit::TestCase
|
5
5
|
def test_lowercase
|
6
6
|
message = nil
|
7
|
-
assert_nothing_raised { message = Test::
|
8
|
-
assert_nothing_raised { message.x = Test::
|
9
|
-
assert_equal(Test::
|
7
|
+
assert_nothing_raised { message = Test::LowerCase::LowerCamelCase::Baaz.new }
|
8
|
+
assert_nothing_raised { message.x = Test::LowerCase::LowerCamelCase::Foo::Bar.new }
|
9
|
+
assert_equal(Test::LowerCase::LowerCamelCase::Foo::Bar, message.get_field_by_name(:x).type)
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_lowercased_enum_members
|
13
|
+
klass = Test::LowerCase::LowerCamelCase::Baaaz
|
14
|
+
assert_equal(0, klass::Abc)
|
15
|
+
assert_equal(1, klass::Def)
|
16
|
+
assert_equal(0, klass.values[:abc])
|
17
|
+
assert_equal(1, klass.values[:def])
|
10
18
|
end
|
11
19
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 4
|
8
|
-
-
|
9
|
-
version: 0.4.
|
8
|
+
- 4
|
9
|
+
version: 0.4.4
|
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-04
|
17
|
+
date: 2010-06-04 00:00:00 +09:00
|
18
18
|
default_executable: rprotoc
|
19
19
|
dependencies: []
|
20
20
|
|
@@ -69,7 +69,6 @@ files:
|
|
69
69
|
- lib/protobuf/rpc/client.rb
|
70
70
|
- lib/protobuf/rpc/handler.rb
|
71
71
|
- lib/protobuf/rpc/server.rb
|
72
|
-
- lib/ruby_protobuf.rb
|
73
72
|
- script/mk_parser
|
74
73
|
- test/check_unbuild.rb
|
75
74
|
- test/data/data.bin
|
data/lib/ruby_protobuf.rb
DELETED