diff options
author | Paul Yang <TeBoring@users.noreply.github.com> | 2018-05-17 17:11:06 -0700 |
---|---|---|
committer | Bo Yang <teboring@google.com> | 2018-05-25 13:02:59 -0700 |
commit | 5289ee0c2139b691111037806f088e306a31ac70 (patch) | |
tree | 9b01f1b28b942699f349c4fb5227c34e2d916c96 /src | |
parent | d8483a92d7867af37afb8b439e4f64c915654c1f (diff) |
Adopt ruby_package in ruby generated code. (#4627)
* Adopt ruby_package in ruby generated code.
* Add test for ruby_package
Diffstat (limited to 'src')
-rw-r--r-- | src/google/protobuf/compiler/ruby/ruby_generator.cc | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/src/google/protobuf/compiler/ruby/ruby_generator.cc b/src/google/protobuf/compiler/ruby/ruby_generator.cc index 02aa61d1..bd737c02 100644 --- a/src/google/protobuf/compiler/ruby/ruby_generator.cc +++ b/src/google/protobuf/compiler/ruby/ruby_generator.cc @@ -337,9 +337,20 @@ void GenerateEnumAssignment( } int GeneratePackageModules( - std::string package_name, + const FileDescriptor* file, google::protobuf::io::Printer* printer) { int levels = 0; + bool need_change_to_module; + std::string package_name; + + if (file->options().has_ruby_package()) { + package_name = file->options().ruby_package(); + need_change_to_module = false; + } else { + package_name = file->package(); + need_change_to_module = true; + } + while (!package_name.empty()) { size_t dot_index = package_name.find("."); string component; @@ -350,7 +361,9 @@ int GeneratePackageModules( component = package_name.substr(0, dot_index); package_name = package_name.substr(dot_index + 1); } - component = PackageToModule(component); + if (need_change_to_module) { + component = PackageToModule(component); + } printer->Print( "module $name$\n", "name", component); @@ -462,7 +475,7 @@ bool GenerateFile(const FileDescriptor* file, io::Printer* printer, printer->Print( "end\n\n"); - int levels = GeneratePackageModules(file->package(), printer); + int levels = GeneratePackageModules(file, printer); for (int i = 0; i < file->message_type_count(); i++) { GenerateMessageAssignment("", file->message_type(i), printer); } |