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.proto | 109 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 ruby/tests/basic_test.proto (limited to 'ruby/tests/basic_test.proto') diff --git a/ruby/tests/basic_test.proto b/ruby/tests/basic_test.proto new file mode 100644 index 00000000..4010fe30 --- /dev/null +++ b/ruby/tests/basic_test.proto @@ -0,0 +1,109 @@ +syntax = "proto3"; + +package basic_test; + +message Foo { + Bar bar = 1; + repeated Baz baz = 2; +} + +message Bar { + string msg = 1; +} + +message Baz { + string msg = 1; +} + +message TestMessage { + int32 optional_int32 = 1; + int64 optional_int64 = 2; + uint32 optional_uint32 = 3; + uint64 optional_uint64 = 4; + bool optional_bool = 5; + float optional_float = 6; + double optional_double = 7; + string optional_string = 8; + bytes optional_bytes = 9; + TestMessage2 optional_msg = 10; + 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 { + int32 foo = 1; +} + +enum TestEnum { + Default = 0; + A = 1; + B = 2; + C = 3; +} + +message TestEmbeddedMessageParent { + TestEmbeddedMessageChild child_msg = 1; + int32 number = 2; + + repeated TestEmbeddedMessageChild repeated_msg = 3; + repeated int32 repeated_number = 4; +} + +message TestEmbeddedMessageChild { + TestMessage sub_child = 1; +} + +message Recursive1 { + Recursive2 foo = 1; +} + +message Recursive2 { + Recursive1 foo = 1; +} + +message MapMessage { + map map_string_int32 = 1; + map map_string_msg = 2; +} + +message MapMessageWireEquiv { + repeated MapMessageWireEquiv_entry1 map_string_int32 = 1; + repeated MapMessageWireEquiv_entry2 map_string_msg = 2; +} + +message MapMessageWireEquiv_entry1 { + string key = 1; + int32 value = 2; +} + +message MapMessageWireEquiv_entry2 { + string key = 1; + TestMessage2 value = 2; +} + +message OneofMessage { + oneof my_oneof { + string a = 1; + int32 b = 2; + TestMessage2 c = 3; + TestEnum d = 4; + } +} + +message Outer { + map items = 1; +} + +message Inner { +} \ No newline at end of file -- cgit v1.2.3