protobuf 2.7.5-java → 2.7.6-java
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/ext/ruby_generator/RubyGenerator.cpp +159 -63
- data/ext/ruby_generator/RubyGenerator.h +11 -3
- data/lib/protobuf/message.rb +5 -14
- data/lib/protobuf/version.rb +1 -1
- data/spec/spec_helper.rb +1 -0
- data/spec/support/test/enum.pb.rb +17 -9
- data/spec/support/test/enum.proto +5 -0
- data/spec/support/test/resource.pb.rb +47 -11
- data/spec/support/test/resource.proto +45 -0
- metadata +145 -156
@@ -18,6 +18,7 @@ bool RubyGenerator::Generate(const FileDescriptor* file,
|
|
18
18
|
|
19
19
|
filename = CreateRubyFileName(file_->name());
|
20
20
|
ns_vector.clear();
|
21
|
+
extended_messages.clear();
|
21
22
|
SplitStringUsing(file_->package(), ".", &ns_vector);
|
22
23
|
|
23
24
|
// Get a ZeroCopyOutputStream object of the data.
|
@@ -41,9 +42,10 @@ bool RubyGenerator::Generate(const FileDescriptor* file,
|
|
41
42
|
PrintMessagesForFileDescriptor(file_, false);
|
42
43
|
PrintNewLine();
|
43
44
|
|
44
|
-
PrintEnumsForFileDescriptor(file_, true);
|
45
45
|
PrintMessagesForFileDescriptor(file_, true);
|
46
46
|
|
47
|
+
PrintDanglingExtendedMessages();
|
48
|
+
|
47
49
|
PrintServices();
|
48
50
|
|
49
51
|
PrintEnclosingNamespaceModuleEnds();
|
@@ -88,6 +90,9 @@ void RubyGenerator::PrintEnclosingNamespaceModuleEnds() const {
|
|
88
90
|
///////////////////////////////////////////////// [ messages ] ////////////////
|
89
91
|
//
|
90
92
|
|
93
|
+
// Print a comment and then iteratively PrintMessage for each message
|
94
|
+
// type defined by in this FileDescriptor scope.
|
95
|
+
//
|
91
96
|
void RubyGenerator::PrintMessagesForFileDescriptor(const FileDescriptor* descriptor, bool print_fields) const {
|
92
97
|
if (descriptor->message_type_count() > 0) {
|
93
98
|
if (print_fields) {
|
@@ -95,6 +100,7 @@ void RubyGenerator::PrintMessagesForFileDescriptor(const FileDescriptor* descrip
|
|
95
100
|
}
|
96
101
|
else {
|
97
102
|
PrintComment("Message Classes", true);
|
103
|
+
StoreExtensionFields(descriptor);
|
98
104
|
}
|
99
105
|
|
100
106
|
for (int i = 0; i < descriptor->message_type_count(); i++) {
|
@@ -103,76 +109,102 @@ void RubyGenerator::PrintMessagesForFileDescriptor(const FileDescriptor* descrip
|
|
103
109
|
}
|
104
110
|
}
|
105
111
|
|
112
|
+
// Iterates the nested types of a message descriptor and calls PrintMessage for each.
|
113
|
+
//
|
106
114
|
void RubyGenerator::PrintMessagesForDescriptor(const Descriptor* descriptor, bool print_fields) const {
|
107
115
|
for (int i = 0; i < descriptor->nested_type_count(); i++) {
|
108
116
|
PrintMessage(descriptor->nested_type(i), print_fields);
|
109
117
|
}
|
110
118
|
}
|
111
|
-
|
119
|
+
|
112
120
|
// Print out the given descriptor message as a Ruby class.
|
121
|
+
//
|
113
122
|
void RubyGenerator::PrintMessage(const Descriptor* descriptor, bool print_fields) const {
|
114
123
|
map<string,string> data;
|
115
124
|
data["class_name"] = descriptor->name();
|
116
125
|
|
117
|
-
|
118
|
-
|
119
|
-
PrintNewLine();
|
120
|
-
printer_->Indent();
|
126
|
+
switch (print_fields) {
|
127
|
+
case false:
|
121
128
|
|
122
|
-
|
123
|
-
|
124
|
-
|
129
|
+
if (DescriptorHasNestedTypes(descriptor)) {
|
130
|
+
printer_->Print(data, "class $class_name$ < ::Protobuf::Message");
|
131
|
+
PrintNewLine();
|
132
|
+
printer_->Indent();
|
125
133
|
|
126
|
-
|
127
|
-
|
128
|
-
|
134
|
+
if (descriptor->enum_type_count() > 0) {
|
135
|
+
PrintEnumsForDescriptor(descriptor, true);
|
136
|
+
}
|
129
137
|
|
130
|
-
|
138
|
+
if (descriptor->nested_type_count() > 0) {
|
139
|
+
PrintMessagesForDescriptor(descriptor, false);
|
140
|
+
}
|
131
141
|
|
132
|
-
|
133
|
-
|
134
|
-
for (int i = 0; i < descriptor->field_count(); i++) {
|
135
|
-
PrintMessageField(descriptor->field(i));
|
142
|
+
printer_->Outdent();
|
143
|
+
printer_->Print(data, "end");
|
136
144
|
}
|
137
|
-
|
138
|
-
|
139
|
-
// Print Extension Fields
|
140
|
-
if (descriptor->extension_count() > 0) {
|
141
|
-
for (int i = 0; i < descriptor->extension_count(); i++) {
|
142
|
-
PrintMessageField(descriptor->extension(i));
|
145
|
+
else {
|
146
|
+
printer_->Print(data, "class $class_name$ < ::Protobuf::Message; end");
|
143
147
|
}
|
144
|
-
}
|
145
148
|
|
146
|
-
|
147
|
-
|
148
|
-
PrintNewLine();
|
149
|
-
}
|
150
|
-
else if (DescriptorHasNestedTypes(descriptor)) {
|
151
|
-
printer_->Print(data, "class $class_name$ < ::Protobuf::Message");
|
152
|
-
PrintNewLine();
|
153
|
-
printer_->Indent();
|
149
|
+
PrintNewLine();
|
150
|
+
StoreExtensionFields(descriptor);
|
154
151
|
|
155
|
-
|
156
|
-
PrintEnumsForDescriptor(descriptor, false);
|
157
|
-
}
|
152
|
+
break;
|
158
153
|
|
159
|
-
|
160
|
-
PrintMessagesForDescriptor(descriptor, false);
|
161
|
-
}
|
154
|
+
case true:
|
162
155
|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
else {
|
168
|
-
printer_->Print(data, "class $class_name$ < ::Protobuf::Message; end");
|
169
|
-
}
|
156
|
+
if (descriptor->field_count() > 0 || DescriptorHasExtensions(descriptor)) {
|
157
|
+
printer_->Print(data, "class $class_name$");
|
158
|
+
PrintNewLine();
|
159
|
+
printer_->Indent();
|
170
160
|
|
171
|
-
|
161
|
+
if (descriptor->nested_type_count() > 0) {
|
162
|
+
PrintMessagesForDescriptor(descriptor, true);
|
163
|
+
}
|
164
|
+
|
165
|
+
// Print Fields
|
166
|
+
if (descriptor->field_count() > 0) {
|
167
|
+
for (int i = 0; i < descriptor->field_count(); i++) {
|
168
|
+
PrintMessageField(descriptor->field(i));
|
169
|
+
}
|
170
|
+
}
|
171
|
+
|
172
|
+
PrintExtensionRangesForDescriptor(descriptor);
|
173
|
+
|
174
|
+
// Print Extension Fields
|
175
|
+
if (DescriptorHasExtensions(descriptor)) {
|
176
|
+
PrintMessageExtensionFields(descriptor->full_name());
|
177
|
+
}
|
178
|
+
|
179
|
+
printer_->Outdent();
|
180
|
+
printer_->Print(data, "end");
|
181
|
+
PrintNewLine();
|
182
|
+
PrintNewLine();
|
183
|
+
}
|
184
|
+
else if (descriptor->nested_type_count() > 0) {
|
185
|
+
printer_->Print(data, "class $class_name$");
|
186
|
+
PrintNewLine();
|
187
|
+
printer_->Indent();
|
188
|
+
|
189
|
+
if (descriptor->nested_type_count() > 0) {
|
190
|
+
PrintMessagesForDescriptor(descriptor, true);
|
191
|
+
}
|
192
|
+
|
193
|
+
printer_->Outdent();
|
194
|
+
printer_->Print(data, "end");
|
195
|
+
PrintNewLine();
|
196
|
+
PrintNewLine();
|
197
|
+
}
|
198
|
+
|
199
|
+
break;
|
200
|
+
}
|
172
201
|
}
|
173
202
|
|
174
203
|
void RubyGenerator::PrintExtensionRangesForDescriptor(const Descriptor* descriptor) const {
|
175
204
|
if (descriptor->extension_range_count() > 0) {
|
205
|
+
PrintNewLine();
|
206
|
+
PrintComment("Extension Fields", false);
|
207
|
+
|
176
208
|
for (int i = 0; i < descriptor->extension_range_count(); i++) {
|
177
209
|
const Descriptor::ExtensionRange* range = descriptor->extension_range(i);
|
178
210
|
map<string,string> data;
|
@@ -281,6 +313,20 @@ void RubyGenerator::PrintMessageField(const FieldDescriptor* descriptor) const {
|
|
281
313
|
PrintNewLine();
|
282
314
|
}
|
283
315
|
|
316
|
+
// Print out each extension field previously mapped to the full name of
|
317
|
+
// the descriptor message.
|
318
|
+
//
|
319
|
+
// After printign the fields, erase the fields from the map so that we know
|
320
|
+
// which fields are dangling and to print wrapped in a re-opened class block.
|
321
|
+
//
|
322
|
+
void RubyGenerator::PrintMessageExtensionFields(const string full_name) const {
|
323
|
+
vector<const FieldDescriptor*> message_extensions = extended_messages[full_name];
|
324
|
+
vector<const FieldDescriptor*>::iterator it;
|
325
|
+
for (it = message_extensions.begin(); it != message_extensions.end(); ++it) {
|
326
|
+
PrintMessageField(*it);
|
327
|
+
}
|
328
|
+
extended_messages.erase(full_name);
|
329
|
+
}
|
284
330
|
|
285
331
|
//
|
286
332
|
///////////////////////////////////////////////// [ enums ] ///////////////////
|
@@ -288,7 +334,7 @@ void RubyGenerator::PrintMessageField(const FieldDescriptor* descriptor) const {
|
|
288
334
|
|
289
335
|
void RubyGenerator::PrintEnumsForDescriptor(const Descriptor* descriptor, bool print_values) const {
|
290
336
|
for (int i = 0; i < descriptor->enum_type_count(); i++) {
|
291
|
-
PrintEnum(descriptor->enum_type(i)
|
337
|
+
PrintEnum(descriptor->enum_type(i));
|
292
338
|
}
|
293
339
|
}
|
294
340
|
|
@@ -302,33 +348,28 @@ void RubyGenerator::PrintEnumsForFileDescriptor(const FileDescriptor* descriptor
|
|
302
348
|
}
|
303
349
|
|
304
350
|
for (int i = 0; i < descriptor->enum_type_count(); i++) {
|
305
|
-
PrintEnum(descriptor->enum_type(i)
|
351
|
+
PrintEnum(descriptor->enum_type(i));
|
306
352
|
}
|
307
353
|
}
|
308
354
|
}
|
309
355
|
|
310
356
|
// Print the given enum descriptor as a Ruby class.
|
311
|
-
void RubyGenerator::PrintEnum(const EnumDescriptor* descriptor
|
357
|
+
void RubyGenerator::PrintEnum(const EnumDescriptor* descriptor) const {
|
312
358
|
map<string,string> data;
|
313
359
|
data["class_name"] = descriptor->name();
|
314
360
|
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
PrintNewLine();
|
319
|
-
|
320
|
-
for (int i = 0; i < descriptor->value_count(); i++) {
|
321
|
-
PrintEnumValue(descriptor->value(i));
|
322
|
-
}
|
361
|
+
printer_->Print(data, "class $class_name$ < ::Protobuf::Enum");
|
362
|
+
printer_->Indent();
|
363
|
+
PrintNewLine();
|
323
364
|
|
324
|
-
|
325
|
-
|
326
|
-
PrintNewLine();
|
327
|
-
}
|
328
|
-
else {
|
329
|
-
printer_->Print(data, "class $class_name$ < ::Protobuf::Enum; end");
|
365
|
+
for (int i = 0; i < descriptor->value_count(); i++) {
|
366
|
+
PrintEnumValue(descriptor->value(i));
|
330
367
|
}
|
331
368
|
|
369
|
+
printer_->Outdent();
|
370
|
+
printer_->Print(data, "end");
|
371
|
+
PrintNewLine();
|
372
|
+
|
332
373
|
PrintNewLine();
|
333
374
|
}
|
334
375
|
|
@@ -387,6 +428,42 @@ void RubyGenerator::PrintServiceMethod(const MethodDescriptor* descriptor) const
|
|
387
428
|
///////////////////////////////////////////////// [ general ] ////////////////
|
388
429
|
//
|
389
430
|
|
431
|
+
void RubyGenerator::PrintDanglingExtendedMessages() const {
|
432
|
+
if (extended_messages.size() > 0) {
|
433
|
+
PrintComment("Extended Messages", true);
|
434
|
+
|
435
|
+
tr1::unordered_map<string, vector<const FieldDescriptor*> >::iterator it;
|
436
|
+
for (it = extended_messages.begin(); it != extended_messages.end(); ++it ) {
|
437
|
+
map<string,string> data;
|
438
|
+
data["class_name"] = Constantize(it->first);
|
439
|
+
|
440
|
+
printer_->Print(data, "class $class_name$");
|
441
|
+
printer_->Indent();
|
442
|
+
PrintNewLine();
|
443
|
+
|
444
|
+
PrintMessageExtensionFields(it->first);
|
445
|
+
|
446
|
+
printer_->Outdent();
|
447
|
+
printer_->Print(data, "end");
|
448
|
+
PrintNewLine();
|
449
|
+
PrintNewLine();
|
450
|
+
}
|
451
|
+
}
|
452
|
+
}
|
453
|
+
|
454
|
+
// Explicitly check for the key with `count` so that we don't create
|
455
|
+
// empty vectors for classes simply using bracket access.
|
456
|
+
//
|
457
|
+
bool RubyGenerator::DescriptorHasExtensions(const Descriptor* descriptor) const {
|
458
|
+
const string full_name = descriptor->full_name();
|
459
|
+
if (extended_messages.count(full_name) > 0) {
|
460
|
+
return (extended_messages[full_name].size());
|
461
|
+
}
|
462
|
+
else {
|
463
|
+
return 0;
|
464
|
+
}
|
465
|
+
}
|
466
|
+
|
390
467
|
// Print a header or one-line comment (as indicated by the as_header bool).
|
391
468
|
void RubyGenerator::PrintComment(string comment, bool as_header) const {
|
392
469
|
char format[] = "# $comment$\n";
|
@@ -444,6 +521,25 @@ void RubyGenerator::PrintNewLine() const {
|
|
444
521
|
printer_->Print("\n");
|
445
522
|
}
|
446
523
|
|
524
|
+
// We need to store any extension fields defined in the scope of this
|
525
|
+
// descriptor message by the field's containing type.
|
526
|
+
void RubyGenerator::StoreExtensionFields(const FileDescriptor* descriptor) const {
|
527
|
+
for (int i = 0; i < descriptor->extension_count(); i++) {
|
528
|
+
const FieldDescriptor* extension_field = descriptor->extension(i);
|
529
|
+
const Descriptor* containing = extension_field->containing_type();
|
530
|
+
extended_messages[containing->full_name()].push_back(extension_field);
|
531
|
+
}
|
532
|
+
}
|
533
|
+
|
534
|
+
// Same as above, only accept the Descriptor type instead of FileDescriptor.
|
535
|
+
void RubyGenerator::StoreExtensionFields(const Descriptor* descriptor) const {
|
536
|
+
for (int i = 0; i < descriptor->extension_count(); i++) {
|
537
|
+
const FieldDescriptor* extension_field = descriptor->extension(i);
|
538
|
+
const Descriptor* containing = extension_field->containing_type();
|
539
|
+
extended_messages[containing->full_name()].push_back(extension_field);
|
540
|
+
}
|
541
|
+
}
|
542
|
+
|
447
543
|
} // namespace ruby
|
448
544
|
} // namespace compiler
|
449
545
|
} // namespace protobuf
|
@@ -5,6 +5,7 @@
|
|
5
5
|
#include <iostream>
|
6
6
|
#include <sstream>
|
7
7
|
#include <vector>
|
8
|
+
#include <tr1/unordered_map>
|
8
9
|
|
9
10
|
#include <google/protobuf/compiler/command_line_interface.h>
|
10
11
|
#include <google/protobuf/compiler/code_generator.h>
|
@@ -31,28 +32,32 @@ class LIBPROTOC_EXPORT RubyGenerator : public CodeGenerator {
|
|
31
32
|
GeneratorContext* context,
|
32
33
|
string* error) const;
|
33
34
|
|
34
|
-
|
35
35
|
private:
|
36
36
|
mutable GeneratorContext* context_;
|
37
37
|
mutable io::Printer* printer_;
|
38
38
|
mutable const FileDescriptor* file_;
|
39
39
|
mutable string filename;
|
40
40
|
mutable vector<string> ns_vector;
|
41
|
+
mutable tr1::unordered_map<string, vector<const FieldDescriptor*> > extended_messages;
|
41
42
|
|
42
43
|
GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(RubyGenerator);
|
43
44
|
|
45
|
+
bool DescriptorHasExtensions(const Descriptor* descriptor) const;
|
46
|
+
void PrintDanglingExtendedMessages() const;
|
47
|
+
void PrintExtensionRangesForDescriptor(const Descriptor* descriptor) const;
|
48
|
+
|
44
49
|
void PrintEnclosingNamespaceModules() const;
|
45
50
|
void PrintEnclosingNamespaceModuleEnds() const;
|
46
51
|
|
47
52
|
void PrintMessagesForDescriptor(const Descriptor* descriptor, bool print_fields) const;
|
48
53
|
void PrintMessagesForFileDescriptor(const FileDescriptor* descriptor, bool print_fields) const;
|
49
54
|
void PrintMessage(const Descriptor* descriptor, bool print_fields) const;
|
50
|
-
void PrintExtensionRangesForDescriptor(const Descriptor* descriptor) const;
|
51
55
|
void PrintMessageField(const FieldDescriptor* descriptor) const;
|
56
|
+
void PrintMessageExtensionFields(const string full_name) const;
|
52
57
|
|
53
58
|
void PrintEnumsForDescriptor(const Descriptor* descriptor, bool print_values) const;
|
54
59
|
void PrintEnumsForFileDescriptor(const FileDescriptor* descriptor, bool print_values) const;
|
55
|
-
void PrintEnum(const EnumDescriptor* descriptor
|
60
|
+
void PrintEnum(const EnumDescriptor* descriptor) const;
|
56
61
|
void PrintEnumValue(const EnumValueDescriptor* descriptor) const;
|
57
62
|
|
58
63
|
void PrintServices() const;
|
@@ -67,6 +72,9 @@ class LIBPROTOC_EXPORT RubyGenerator : public CodeGenerator {
|
|
67
72
|
void PrintRequire(string lib_name) const;
|
68
73
|
void PrintNewLine() const;
|
69
74
|
|
75
|
+
void StoreExtensionFields(const FileDescriptor* descriptor) const;
|
76
|
+
void StoreExtensionFields(const Descriptor* descriptor) const;
|
77
|
+
|
70
78
|
// Take the proto file name, strip ".proto"
|
71
79
|
// from the end and add ".pb.rb"
|
72
80
|
static string CreateRubyFileName(const string proto_filename) {
|
data/lib/protobuf/message.rb
CHANGED
@@ -68,11 +68,8 @@ module Protobuf
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def self.get_ext_field_by_name(name)
|
71
|
-
|
72
|
-
extension_fields[
|
73
|
-
rescue TypeError, NoMethodError => e
|
74
|
-
name = 'nil' if name.nil?
|
75
|
-
raise FieldNotDefinedError.new("Field '#{name}' is not defined on message '#{self.name}'")
|
71
|
+
tag = extension_field_name_to_tag[name.to_sym]
|
72
|
+
extension_fields[tag] unless tag.nil?
|
76
73
|
end
|
77
74
|
|
78
75
|
def self.get_ext_field_by_tag(tag)
|
@@ -81,11 +78,8 @@ module Protobuf
|
|
81
78
|
|
82
79
|
# Find a field object by +name+.
|
83
80
|
def self.get_field_by_name(name)
|
84
|
-
|
85
|
-
fields[
|
86
|
-
rescue TypeError, NoMethodError => e
|
87
|
-
name = 'nil' if name.nil?
|
88
|
-
raise FieldNotDefinedError.new("Field '#{name}' is not defined on message '#{self.name}'")
|
81
|
+
tag = field_name_to_tag[name.to_sym]
|
82
|
+
fields[tag] unless tag.nil?
|
89
83
|
end
|
90
84
|
|
91
85
|
# Find a field object by +tag+ number.
|
@@ -93,6 +87,7 @@ module Protobuf
|
|
93
87
|
fields[tag]
|
94
88
|
rescue TypeError => e
|
95
89
|
tag = tag.nil? ? 'nil' : tag.to_s
|
90
|
+
raise
|
96
91
|
raise FieldNotDefinedError.new("Tag '#{tag}' does not reference a message field for '#{self.name}'")
|
97
92
|
end
|
98
93
|
|
@@ -284,16 +279,12 @@ module Protobuf
|
|
284
279
|
def [](name)
|
285
280
|
if field = get_field_by_name(name) || get_ext_field_by_name(name)
|
286
281
|
__send__(field.name)
|
287
|
-
else
|
288
|
-
raise NoMethodError, "No such field: #{name.inspect}"
|
289
282
|
end
|
290
283
|
end
|
291
284
|
|
292
285
|
def []=(name, value)
|
293
286
|
if field = get_field_by_name(name) || get_ext_field_by_name(name)
|
294
287
|
__send__(field.setter_method_name, value)
|
295
|
-
else
|
296
|
-
raise NoMethodError, "No such field: #{name.inspect}"
|
297
288
|
end
|
298
289
|
end
|
299
290
|
|
data/lib/protobuf/version.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -7,6 +7,7 @@ Bundler.setup :default, :development, :test
|
|
7
7
|
require 'pry'
|
8
8
|
|
9
9
|
$: << ::File.expand_path('..', File.dirname(__FILE__))
|
10
|
+
$: << ::File.expand_path('../spec/support', File.dirname(__FILE__))
|
10
11
|
#$: << ::File.expand_path('../lib', File.dirname(__FILE__))
|
11
12
|
|
12
13
|
require 'protobuf'
|
@@ -3,25 +3,26 @@
|
|
3
3
|
#
|
4
4
|
require 'protobuf/message'
|
5
5
|
|
6
|
+
##
|
7
|
+
# Imports
|
8
|
+
#
|
9
|
+
require 'test/resource.pb'
|
10
|
+
|
6
11
|
module Test
|
7
12
|
##
|
8
13
|
# Enum Classes
|
9
14
|
#
|
10
|
-
class EnumTestType < ::Protobuf::Enum
|
15
|
+
class EnumTestType < ::Protobuf::Enum
|
16
|
+
define :ONE, 1
|
17
|
+
define :TWO, 2
|
18
|
+
end
|
19
|
+
|
11
20
|
|
12
21
|
##
|
13
22
|
# Message Classes
|
14
23
|
#
|
15
24
|
class EnumTestMessage < ::Protobuf::Message; end
|
16
25
|
|
17
|
-
##
|
18
|
-
# Enum Values
|
19
|
-
#
|
20
|
-
class EnumTestType
|
21
|
-
define :ONE, 1
|
22
|
-
define :TWO, 2
|
23
|
-
end
|
24
|
-
|
25
26
|
##
|
26
27
|
# Message Fields
|
27
28
|
#
|
@@ -31,4 +32,11 @@ module Test
|
|
31
32
|
repeated ::Test::EnumTestType, :repeated_enums, 3
|
32
33
|
end
|
33
34
|
|
35
|
+
##
|
36
|
+
# Extended Messages
|
37
|
+
#
|
38
|
+
class ::Test::Resource
|
39
|
+
optional ::Protobuf::Field::Int32Field, :ext_other_file_defined_field, 200, :extension => true
|
40
|
+
end
|
41
|
+
|
34
42
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
package test;
|
2
|
+
import 'test/resource.proto';
|
2
3
|
|
3
4
|
enum EnumTestType {
|
4
5
|
ONE = 1;
|
@@ -10,3 +11,7 @@ message EnumTestMessage {
|
|
10
11
|
optional EnumTestType default_enum = 2 [default=ONE];
|
11
12
|
repeated EnumTestType repeated_enums = 3;
|
12
13
|
}
|
14
|
+
|
15
|
+
extend test.Resource {
|
16
|
+
optional int32 ext_other_file_defined_field = 200;
|
17
|
+
}
|
@@ -8,23 +8,31 @@ module Test
|
|
8
8
|
##
|
9
9
|
# Enum Classes
|
10
10
|
#
|
11
|
-
class StatusType < ::Protobuf::Enum
|
11
|
+
class StatusType < ::Protobuf::Enum
|
12
|
+
define :PENDING, 0
|
13
|
+
define :ENABLED, 1
|
14
|
+
define :DISABLED, 2
|
15
|
+
define :DELETED, 3
|
16
|
+
end
|
17
|
+
|
12
18
|
|
13
19
|
##
|
14
20
|
# Message Classes
|
15
21
|
#
|
16
22
|
class ResourceFindRequest < ::Protobuf::Message; end
|
17
23
|
class Resource < ::Protobuf::Message; end
|
18
|
-
class
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
24
|
+
class Searchable < ::Protobuf::Message
|
25
|
+
class SearchType < ::Protobuf::Enum
|
26
|
+
define :FLAT, 1
|
27
|
+
define :NESTED, 2
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
class MessageParent < ::Protobuf::Message
|
32
|
+
class MessageChild < ::Protobuf::Message; end
|
33
|
+
end
|
34
|
+
class Nested < ::Protobuf::Message
|
35
|
+
class NestedLevelOne < ::Protobuf::Message; end
|
28
36
|
end
|
29
37
|
|
30
38
|
##
|
@@ -40,13 +48,41 @@ module Test
|
|
40
48
|
optional ::Protobuf::Field::Int64Field, :date_created, 2
|
41
49
|
optional ::Test::StatusType, :status, 3
|
42
50
|
repeated ::Test::StatusType, :repeated_enum, 4
|
51
|
+
|
52
|
+
# Extension Fields
|
53
|
+
extensions 100...536870912
|
54
|
+
optional ::Protobuf::Field::BoolField, :ext_is_searchable, 100, :extension => true
|
55
|
+
optional ::Protobuf::Field::BoolField, :ext_is_hidden, 101, :extension => true
|
56
|
+
optional ::Test::Searchable::SearchType, :ext_search_type, 102, :default => ::Test::Searchable::SearchType::FLAT, :extension => true
|
57
|
+
optional ::Protobuf::Field::BoolField, :ext_nested_in_level_one, 105, :extension => true
|
58
|
+
end
|
59
|
+
|
60
|
+
class MessageParent
|
61
|
+
class MessageChild
|
62
|
+
optional ::Protobuf::Field::StringField, :child1, 1
|
63
|
+
end
|
64
|
+
|
43
65
|
end
|
44
66
|
|
45
67
|
class Nested
|
68
|
+
class NestedLevelOne
|
69
|
+
optional ::Protobuf::Field::BoolField, :level_one, 1, :default => true
|
70
|
+
|
71
|
+
# Extension Fields
|
72
|
+
extensions 100...102
|
73
|
+
optional ::Protobuf::Field::BoolField, :ext_nested_level_one_outer, 101, :extension => true
|
74
|
+
optional ::Protobuf::Field::BoolField, :ext_nested_level_one, 100, :extension => true
|
75
|
+
end
|
76
|
+
|
46
77
|
optional ::Protobuf::Field::StringField, :name, 1
|
47
78
|
optional ::Test::Resource, :resource, 2
|
48
79
|
repeated ::Test::Resource, :multiple_resources, 3
|
49
80
|
optional ::Test::StatusType, :status, 4
|
81
|
+
|
82
|
+
# Extension Fields
|
83
|
+
extensions 100...111
|
84
|
+
optional ::Protobuf::Field::StringField, :foo, 100, :extension => true
|
85
|
+
optional ::Protobuf::Field::Int64Field, :bar, 101, :extension => true
|
50
86
|
end
|
51
87
|
|
52
88
|
##
|
@@ -13,17 +13,62 @@ message ResourceFindRequest {
|
|
13
13
|
}
|
14
14
|
|
15
15
|
message Resource {
|
16
|
+
extensions 100 to max;
|
17
|
+
|
16
18
|
required string name = 1;
|
17
19
|
optional int64 date_created = 2;
|
18
20
|
optional StatusType status = 3;
|
19
21
|
repeated StatusType repeated_enum = 4;
|
20
22
|
}
|
21
23
|
|
24
|
+
message Searchable {
|
25
|
+
enum SearchType {
|
26
|
+
FLAT = 1;
|
27
|
+
NESTED = 2;
|
28
|
+
}
|
29
|
+
|
30
|
+
extend test.Resource {
|
31
|
+
optional bool ext_is_searchable = 100;
|
32
|
+
optional bool ext_is_hidden = 101;
|
33
|
+
optional Searchable.SearchType ext_search_type = 102 [default=FLAT];
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
message MessageParent {
|
38
|
+
message MessageChild {
|
39
|
+
optional string child1 = 1;
|
40
|
+
}
|
41
|
+
}
|
42
|
+
|
22
43
|
message Nested {
|
44
|
+
extensions 100 to 110;
|
45
|
+
|
23
46
|
optional string name = 1;
|
24
47
|
optional Resource resource = 2;
|
25
48
|
repeated Resource multiple_resources = 3;
|
26
49
|
optional StatusType status = 4;
|
50
|
+
|
51
|
+
message NestedLevelOne {
|
52
|
+
extensions 100 to 101;
|
53
|
+
optional bool level_one = 1 [default=true];
|
54
|
+
|
55
|
+
extend Resource {
|
56
|
+
optional bool ext_nested_in_level_one = 105;
|
57
|
+
}
|
58
|
+
}
|
59
|
+
|
60
|
+
extend NestedLevelOne {
|
61
|
+
optional bool ext_nested_level_one = 100;
|
62
|
+
}
|
63
|
+
}
|
64
|
+
|
65
|
+
extend Nested {
|
66
|
+
optional string foo = 100;
|
67
|
+
optional int64 bar = 101;
|
68
|
+
}
|
69
|
+
|
70
|
+
extend Nested.NestedLevelOne {
|
71
|
+
optional bool ext_nested_level_one_outer = 101;
|
27
72
|
}
|
28
73
|
|
29
74
|
service ResourceService {
|
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: protobuf
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 2.7.
|
5
|
+
version: 2.7.6
|
6
6
|
platform: java
|
7
7
|
authors:
|
8
8
|
- BJ Neilsen
|
@@ -10,240 +10,149 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-03-
|
13
|
+
date: 2013-03-17 00:00:00.000000000Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: activesupport
|
17
|
-
version_requirements: !ruby/object:Gem::Requirement
|
17
|
+
version_requirements: &5666 !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
22
|
-
MA==
|
23
|
-
none: false
|
24
|
-
requirement: !ruby/object:Gem::Requirement
|
25
|
-
requirements:
|
26
|
-
- - ">="
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
version: !binary |-
|
29
|
-
MA==
|
21
|
+
version: '0'
|
30
22
|
none: false
|
23
|
+
requirement: *5666
|
31
24
|
prerelease: false
|
32
25
|
type: :runtime
|
33
26
|
- !ruby/object:Gem::Dependency
|
34
27
|
name: ffi
|
35
|
-
version_requirements: !ruby/object:Gem::Requirement
|
36
|
-
requirements:
|
37
|
-
- - ">="
|
38
|
-
- !ruby/object:Gem::Version
|
39
|
-
version: !binary |-
|
40
|
-
MA==
|
41
|
-
none: false
|
42
|
-
requirement: !ruby/object:Gem::Requirement
|
28
|
+
version_requirements: &5684 !ruby/object:Gem::Requirement
|
43
29
|
requirements:
|
44
|
-
- -
|
30
|
+
- - ! '>='
|
45
31
|
- !ruby/object:Gem::Version
|
46
|
-
version:
|
47
|
-
MA==
|
32
|
+
version: '0'
|
48
33
|
none: false
|
34
|
+
requirement: *5684
|
49
35
|
prerelease: false
|
50
36
|
type: :runtime
|
51
37
|
- !ruby/object:Gem::Dependency
|
52
38
|
name: multi_json
|
53
|
-
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
version_requirements: &5700 !ruby/object:Gem::Requirement
|
54
40
|
requirements:
|
55
|
-
- -
|
41
|
+
- - ! '>='
|
56
42
|
- !ruby/object:Gem::Version
|
57
|
-
version:
|
58
|
-
MA==
|
59
|
-
none: false
|
60
|
-
requirement: !ruby/object:Gem::Requirement
|
61
|
-
requirements:
|
62
|
-
- - ">="
|
63
|
-
- !ruby/object:Gem::Version
|
64
|
-
version: !binary |-
|
65
|
-
MA==
|
43
|
+
version: '0'
|
66
44
|
none: false
|
45
|
+
requirement: *5700
|
67
46
|
prerelease: false
|
68
47
|
type: :runtime
|
69
48
|
- !ruby/object:Gem::Dependency
|
70
49
|
name: thor
|
71
|
-
version_requirements: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - ">="
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: !binary |-
|
76
|
-
MA==
|
77
|
-
none: false
|
78
|
-
requirement: !ruby/object:Gem::Requirement
|
50
|
+
version_requirements: &5716 !ruby/object:Gem::Requirement
|
79
51
|
requirements:
|
80
|
-
- -
|
52
|
+
- - ! '>='
|
81
53
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
83
|
-
MA==
|
54
|
+
version: '0'
|
84
55
|
none: false
|
56
|
+
requirement: *5716
|
85
57
|
prerelease: false
|
86
58
|
type: :runtime
|
87
59
|
- !ruby/object:Gem::Dependency
|
88
60
|
name: eventmachine
|
89
|
-
version_requirements: !ruby/object:Gem::Requirement
|
90
|
-
requirements:
|
91
|
-
- - ">="
|
92
|
-
- !ruby/object:Gem::Version
|
93
|
-
version: !binary |-
|
94
|
-
MA==
|
95
|
-
none: false
|
96
|
-
requirement: !ruby/object:Gem::Requirement
|
61
|
+
version_requirements: &5732 !ruby/object:Gem::Requirement
|
97
62
|
requirements:
|
98
|
-
- -
|
63
|
+
- - ! '>='
|
99
64
|
- !ruby/object:Gem::Version
|
100
|
-
version:
|
101
|
-
MA==
|
65
|
+
version: '0'
|
102
66
|
none: false
|
67
|
+
requirement: *5732
|
103
68
|
prerelease: false
|
104
69
|
type: :development
|
105
70
|
- !ruby/object:Gem::Dependency
|
106
71
|
name: ffi-rzmq
|
107
|
-
version_requirements: !ruby/object:Gem::Requirement
|
72
|
+
version_requirements: &5750 !ruby/object:Gem::Requirement
|
108
73
|
requirements:
|
109
|
-
- -
|
74
|
+
- - ! '>='
|
110
75
|
- !ruby/object:Gem::Version
|
111
|
-
version:
|
112
|
-
MA==
|
113
|
-
none: false
|
114
|
-
requirement: !ruby/object:Gem::Requirement
|
115
|
-
requirements:
|
116
|
-
- - ">="
|
117
|
-
- !ruby/object:Gem::Version
|
118
|
-
version: !binary |-
|
119
|
-
MA==
|
76
|
+
version: '0'
|
120
77
|
none: false
|
78
|
+
requirement: *5750
|
121
79
|
prerelease: false
|
122
80
|
type: :development
|
123
81
|
- !ruby/object:Gem::Dependency
|
124
82
|
name: pry
|
125
|
-
version_requirements: !ruby/object:Gem::Requirement
|
126
|
-
requirements:
|
127
|
-
- - ">="
|
128
|
-
- !ruby/object:Gem::Version
|
129
|
-
version: !binary |-
|
130
|
-
MA==
|
131
|
-
none: false
|
132
|
-
requirement: !ruby/object:Gem::Requirement
|
83
|
+
version_requirements: &5766 !ruby/object:Gem::Requirement
|
133
84
|
requirements:
|
134
|
-
- -
|
85
|
+
- - ! '>='
|
135
86
|
- !ruby/object:Gem::Version
|
136
|
-
version:
|
137
|
-
MA==
|
87
|
+
version: '0'
|
138
88
|
none: false
|
89
|
+
requirement: *5766
|
139
90
|
prerelease: false
|
140
91
|
type: :development
|
141
92
|
- !ruby/object:Gem::Dependency
|
142
93
|
name: pry-nav
|
143
|
-
version_requirements: !ruby/object:Gem::Requirement
|
94
|
+
version_requirements: &5782 !ruby/object:Gem::Requirement
|
144
95
|
requirements:
|
145
|
-
- -
|
96
|
+
- - ! '>='
|
146
97
|
- !ruby/object:Gem::Version
|
147
|
-
version:
|
148
|
-
MA==
|
149
|
-
none: false
|
150
|
-
requirement: !ruby/object:Gem::Requirement
|
151
|
-
requirements:
|
152
|
-
- - ">="
|
153
|
-
- !ruby/object:Gem::Version
|
154
|
-
version: !binary |-
|
155
|
-
MA==
|
98
|
+
version: '0'
|
156
99
|
none: false
|
100
|
+
requirement: *5782
|
157
101
|
prerelease: false
|
158
102
|
type: :development
|
159
103
|
- !ruby/object:Gem::Dependency
|
160
104
|
name: rake
|
161
|
-
version_requirements: !ruby/object:Gem::Requirement
|
162
|
-
requirements:
|
163
|
-
- - ">="
|
164
|
-
- !ruby/object:Gem::Version
|
165
|
-
version: !binary |-
|
166
|
-
MA==
|
167
|
-
none: false
|
168
|
-
requirement: !ruby/object:Gem::Requirement
|
105
|
+
version_requirements: &5798 !ruby/object:Gem::Requirement
|
169
106
|
requirements:
|
170
|
-
- -
|
107
|
+
- - ! '>='
|
171
108
|
- !ruby/object:Gem::Version
|
172
|
-
version:
|
173
|
-
MA==
|
109
|
+
version: '0'
|
174
110
|
none: false
|
111
|
+
requirement: *5798
|
175
112
|
prerelease: false
|
176
113
|
type: :development
|
177
114
|
- !ruby/object:Gem::Dependency
|
178
115
|
name: rake-compiler
|
179
|
-
version_requirements: !ruby/object:Gem::Requirement
|
180
|
-
requirements:
|
181
|
-
- - ">="
|
182
|
-
- !ruby/object:Gem::Version
|
183
|
-
version: !binary |-
|
184
|
-
MA==
|
185
|
-
none: false
|
186
|
-
requirement: !ruby/object:Gem::Requirement
|
116
|
+
version_requirements: &5814 !ruby/object:Gem::Requirement
|
187
117
|
requirements:
|
188
|
-
- -
|
118
|
+
- - ! '>='
|
189
119
|
- !ruby/object:Gem::Version
|
190
|
-
version:
|
191
|
-
MA==
|
120
|
+
version: '0'
|
192
121
|
none: false
|
122
|
+
requirement: *5814
|
193
123
|
prerelease: false
|
194
124
|
type: :development
|
195
125
|
- !ruby/object:Gem::Dependency
|
196
126
|
name: rspec
|
197
|
-
version_requirements: !ruby/object:Gem::Requirement
|
127
|
+
version_requirements: &5830 !ruby/object:Gem::Requirement
|
198
128
|
requirements:
|
199
|
-
- -
|
129
|
+
- - ! '>='
|
200
130
|
- !ruby/object:Gem::Version
|
201
|
-
version:
|
202
|
-
MA==
|
203
|
-
none: false
|
204
|
-
requirement: !ruby/object:Gem::Requirement
|
205
|
-
requirements:
|
206
|
-
- - ">="
|
207
|
-
- !ruby/object:Gem::Version
|
208
|
-
version: !binary |-
|
209
|
-
MA==
|
131
|
+
version: '0'
|
210
132
|
none: false
|
133
|
+
requirement: *5830
|
211
134
|
prerelease: false
|
212
135
|
type: :development
|
213
136
|
- !ruby/object:Gem::Dependency
|
214
137
|
name: simplecov
|
215
|
-
version_requirements: !ruby/object:Gem::Requirement
|
216
|
-
requirements:
|
217
|
-
- - ">="
|
218
|
-
- !ruby/object:Gem::Version
|
219
|
-
version: !binary |-
|
220
|
-
MA==
|
221
|
-
none: false
|
222
|
-
requirement: !ruby/object:Gem::Requirement
|
138
|
+
version_requirements: &5846 !ruby/object:Gem::Requirement
|
223
139
|
requirements:
|
224
|
-
- -
|
140
|
+
- - ! '>='
|
225
141
|
- !ruby/object:Gem::Version
|
226
|
-
version:
|
227
|
-
MA==
|
142
|
+
version: '0'
|
228
143
|
none: false
|
144
|
+
requirement: *5846
|
229
145
|
prerelease: false
|
230
146
|
type: :development
|
231
147
|
- !ruby/object:Gem::Dependency
|
232
148
|
name: yard
|
233
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
version_requirements: &5862 !ruby/object:Gem::Requirement
|
234
150
|
requirements:
|
235
|
-
- -
|
151
|
+
- - ! '>='
|
236
152
|
- !ruby/object:Gem::Version
|
237
|
-
version:
|
238
|
-
MA==
|
239
|
-
none: false
|
240
|
-
requirement: !ruby/object:Gem::Requirement
|
241
|
-
requirements:
|
242
|
-
- - ">="
|
243
|
-
- !ruby/object:Gem::Version
|
244
|
-
version: !binary |-
|
245
|
-
MA==
|
153
|
+
version: '0'
|
246
154
|
none: false
|
155
|
+
requirement: *5862
|
247
156
|
prerelease: false
|
248
157
|
type: :development
|
249
158
|
description: Google Protocol Buffers v2.4.1 Serialization and RPC implementation for Ruby.
|
@@ -256,9 +165,9 @@ executables:
|
|
256
165
|
extensions: []
|
257
166
|
extra_rdoc_files: []
|
258
167
|
files:
|
259
|
-
-
|
260
|
-
-
|
261
|
-
-
|
168
|
+
- .gitignore
|
169
|
+
- .travis.yml
|
170
|
+
- .yardopts
|
262
171
|
- Gemfile
|
263
172
|
- README.md
|
264
173
|
- Rakefile
|
@@ -517,29 +426,109 @@ require_paths:
|
|
517
426
|
- lib
|
518
427
|
required_ruby_version: !ruby/object:Gem::Requirement
|
519
428
|
requirements:
|
520
|
-
- -
|
429
|
+
- - ! '>='
|
521
430
|
- !ruby/object:Gem::Version
|
522
431
|
segments:
|
523
432
|
- 0
|
524
433
|
hash: 2
|
525
|
-
version:
|
526
|
-
MA==
|
434
|
+
version: '0'
|
527
435
|
none: false
|
528
436
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
529
437
|
requirements:
|
530
|
-
- -
|
438
|
+
- - ! '>='
|
531
439
|
- !ruby/object:Gem::Version
|
532
440
|
segments:
|
533
441
|
- 0
|
534
442
|
hash: 2
|
535
|
-
version:
|
536
|
-
MA==
|
443
|
+
version: '0'
|
537
444
|
none: false
|
538
445
|
requirements: []
|
539
446
|
rubyforge_project:
|
540
|
-
rubygems_version: 1.8.
|
447
|
+
rubygems_version: 1.8.15
|
541
448
|
signing_key:
|
542
449
|
specification_version: 3
|
543
450
|
summary: Google Protocol Buffers v2.4.1 Serialization and RPC implementation for Ruby.
|
544
|
-
test_files:
|
451
|
+
test_files:
|
452
|
+
- spec/benchmark/tasks.rb
|
453
|
+
- spec/functional/embedded_service_spec.rb
|
454
|
+
- spec/functional/evented_server_spec.rb
|
455
|
+
- spec/functional/socket_server_spec.rb
|
456
|
+
- spec/functional/zmq_server_spec.rb
|
457
|
+
- spec/lib/protobuf/cli_spec.rb
|
458
|
+
- spec/lib/protobuf/enum_spec.rb
|
459
|
+
- spec/lib/protobuf/enum_value_spec.rb
|
460
|
+
- spec/lib/protobuf/field/int32_field_spec.rb
|
461
|
+
- spec/lib/protobuf/logger_spec.rb
|
462
|
+
- spec/lib/protobuf/message_spec.rb
|
463
|
+
- spec/lib/protobuf/rpc/client_spec.rb
|
464
|
+
- spec/lib/protobuf/rpc/connector_spec.rb
|
465
|
+
- spec/lib/protobuf/rpc/connectors/base_spec.rb
|
466
|
+
- spec/lib/protobuf/rpc/connectors/common_spec.rb
|
467
|
+
- spec/lib/protobuf/rpc/connectors/socket_spec.rb
|
468
|
+
- spec/lib/protobuf/rpc/connectors/zmq_spec.rb
|
469
|
+
- spec/lib/protobuf/rpc/servers/evented_server_spec.rb
|
470
|
+
- spec/lib/protobuf/rpc/servers/socket_server_spec.rb
|
471
|
+
- spec/lib/protobuf/rpc/servers/zmq/broker_spec.rb
|
472
|
+
- spec/lib/protobuf/rpc/servers/zmq/server_spec.rb
|
473
|
+
- spec/lib/protobuf/rpc/servers/zmq/util_spec.rb
|
474
|
+
- spec/lib/protobuf/rpc/servers/zmq/worker_spec.rb
|
475
|
+
- spec/lib/protobuf/rpc/service_dispatcher_spec.rb
|
476
|
+
- spec/lib/protobuf/rpc/service_filters_spec.rb
|
477
|
+
- spec/lib/protobuf/rpc/service_spec.rb
|
478
|
+
- spec/lib/protobuf_spec.rb
|
479
|
+
- spec/spec_helper.rb
|
480
|
+
- spec/support/all.rb
|
481
|
+
- spec/support/packed_field.rb
|
482
|
+
- spec/support/server.rb
|
483
|
+
- spec/support/test/enum.pb.rb
|
484
|
+
- spec/support/test/enum.proto
|
485
|
+
- spec/support/test/resource.pb.rb
|
486
|
+
- spec/support/test/resource.proto
|
487
|
+
- spec/support/test/resource_service.rb
|
488
|
+
- spec/support/test_app_file.rb
|
489
|
+
- spec/support/tolerance_matcher.rb
|
490
|
+
- test/data/data.bin
|
491
|
+
- test/data/data_source.py
|
492
|
+
- test/data/types.bin
|
493
|
+
- test/data/types_source.py
|
494
|
+
- test/data/unk.png
|
495
|
+
- test/proto/addressbook.pb.rb
|
496
|
+
- test/proto/addressbook.proto
|
497
|
+
- test/proto/addressbook_base.pb.rb
|
498
|
+
- test/proto/addressbook_base.proto
|
499
|
+
- test/proto/addressbook_ext.pb.rb
|
500
|
+
- test/proto/addressbook_ext.proto
|
501
|
+
- test/proto/collision.pb.rb
|
502
|
+
- test/proto/collision.proto
|
503
|
+
- test/proto/ext_collision.pb.rb
|
504
|
+
- test/proto/ext_collision.proto
|
505
|
+
- test/proto/ext_range.pb.rb
|
506
|
+
- test/proto/ext_range.proto
|
507
|
+
- test/proto/float_default.proto
|
508
|
+
- test/proto/lowercase.pb.rb
|
509
|
+
- test/proto/lowercase.proto
|
510
|
+
- test/proto/merge.pb.rb
|
511
|
+
- test/proto/merge.proto
|
512
|
+
- test/proto/nested.pb.rb
|
513
|
+
- test/proto/nested.proto
|
514
|
+
- test/proto/optional_field.pb.rb
|
515
|
+
- test/proto/optional_field.proto
|
516
|
+
- test/proto/packed.pb.rb
|
517
|
+
- test/proto/packed.proto
|
518
|
+
- test/proto/rpc.proto
|
519
|
+
- test/proto/types.pb.rb
|
520
|
+
- test/proto/types.proto
|
521
|
+
- test/test_addressbook.rb
|
522
|
+
- test/test_enum_value.rb
|
523
|
+
- test/test_extension.rb
|
524
|
+
- test/test_lowercase.rb
|
525
|
+
- test/test_message.rb
|
526
|
+
- test/test_optional_field.rb
|
527
|
+
- test/test_packed_field.rb
|
528
|
+
- test/test_parse.rb
|
529
|
+
- test/test_repeated_types.rb
|
530
|
+
- test/test_serialize.rb
|
531
|
+
- test/test_standard_message.rb
|
532
|
+
- test/test_types.rb
|
545
533
|
has_rdoc:
|
534
|
+
...
|