From d0535cc09e6eac1bddddd51c20b5738c0e841765 Mon Sep 17 00:00:00 2001 From: Harshit Chopra Date: Fri, 25 Aug 2017 12:11:15 -0700 Subject: Adds support for proto2 syntax for Ruby gem. This change only adds basic proto2 support without advanced features like extensions, custom options, maps, etc. The protoc binary now generates ruby code for proto2 syntax. However, for now, it is restricted to proto2 files without advanced features like extensions, in which case it still errors out. This change also modifies the DSL to add proto messages to the DescriptorPool. There is a new DSL Builder#add_file to create a new FileDescriptor. With this, the generated ruby DSL looks something like: Google::Protobuf::DescriptorPool.generated_pool.build do add_file "test.proto" do add_message "foo" do optional :val, :int32, 1 end end end --- ruby/tests/basic_test_proto2.proto | 117 +++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 ruby/tests/basic_test_proto2.proto (limited to 'ruby/tests/basic_test_proto2.proto') diff --git a/ruby/tests/basic_test_proto2.proto b/ruby/tests/basic_test_proto2.proto new file mode 100644 index 00000000..a503eae6 --- /dev/null +++ b/ruby/tests/basic_test_proto2.proto @@ -0,0 +1,117 @@ +syntax = "proto2"; + +package basic_test_proto2; + +message Foo { + optional Bar bar = 1; + repeated Baz baz = 2; +} + +message Bar { + optional string msg = 1; +} + +message Baz { + optional string msg = 1; +} + +message TestMessage { + optional int32 optional_int32 = 1; + optional int64 optional_int64 = 2; + optional uint32 optional_uint32 = 3; + optional uint64 optional_uint64 = 4; + optional bool optional_bool = 5; + optional float optional_float = 6; + optional double optional_double = 7; + optional string optional_string = 8; + optional bytes optional_bytes = 9; + optional TestMessage2 optional_msg = 10; + optional TestEnum optional_enum = 11; + + repeated int32 repeated_int32 = 12; + repeated int64 repeated_int64 = 13; + repeated uint32 repeated_uint32 = 14; + repeated uint64 repeated_uint64 = 15; + repeated bool repeated_bool = 16; + repeated float repeated_float = 17; + repeated double repeated_double = 18; + repeated string repeated_string = 19; + repeated bytes repeated_bytes = 20; + repeated TestMessage2 repeated_msg = 21; + repeated TestEnum repeated_enum = 22; +} + +message TestMessage2 { + optional int32 foo = 1; +} + +message TestMessageDefaults { + optional int32 optional_int32 = 1 [default = 1]; + optional int64 optional_int64 = 2 [default = 2]; + optional uint32 optional_uint32 = 3 [default = 3]; + optional uint64 optional_uint64 = 4 [default = 4]; + optional bool optional_bool = 5 [default = true]; + optional float optional_float = 6 [default = 6]; + optional double optional_double = 7 [default = 7]; + optional string optional_string = 8 [default = "Default Str"]; + optional bytes optional_bytes = 9 [default = "\xCF\xA5s\xBD\xBA\xE6fubar"]; + optional TestMessage2 optional_msg = 10; + optional TestNonZeroEnum optional_enum = 11 [default = B2]; +} + +enum TestEnum { + Default = 0; + A = 1; + B = 2; + C = 3; +} + +enum TestNonZeroEnum { + A2 = 1; + B2 = 2; + C2 = 3; +} + +message TestEmbeddedMessageParent { + optional TestEmbeddedMessageChild child_msg = 1; + optional int32 number = 2; + + repeated TestEmbeddedMessageChild repeated_msg = 3; + repeated int32 repeated_number = 4; +} + +message TestEmbeddedMessageChild { + optional TestMessage sub_child = 1; +} + +message Recursive1 { + optional Recursive2 foo = 1; +} + +message Recursive2 { + optional Recursive1 foo = 1; +} + +message MapMessageWireEquiv { + repeated MapMessageWireEquiv_entry1 map_string_int32 = 1; + repeated MapMessageWireEquiv_entry2 map_string_msg = 2; +} + +message MapMessageWireEquiv_entry1 { + optional string key = 1; + optional int32 value = 2; +} + +message MapMessageWireEquiv_entry2 { + optional string key = 1; + optional TestMessage2 value = 2; +} + +message OneofMessage { + oneof my_oneof { + string a = 1; + int32 b = 2; + TestMessage2 c = 3; + TestEnum d = 4; + } +} -- cgit v1.2.3