|
|
|
@ -40,7 +40,7 @@ void GenerateEnumAssignment(absl::string_view prefix, const EnumDescriptor* en, |
|
|
|
|
io::Printer* printer); |
|
|
|
|
std::string DefaultValueForField(const FieldDescriptor* field); |
|
|
|
|
|
|
|
|
|
template<class numeric_type> |
|
|
|
|
template <class numeric_type> |
|
|
|
|
std::string NumberToString(numeric_type value) { |
|
|
|
|
std::ostringstream os; |
|
|
|
|
os << value; |
|
|
|
@ -65,7 +65,6 @@ bool IsAlpha(char ch) { return IsLower(ch) || IsUpper(ch); } |
|
|
|
|
|
|
|
|
|
char UpperChar(char ch) { return IsLower(ch) ? (ch - 'a' + 'A') : ch; } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Package names in protobuf are snake_case by convention, but Ruby module
|
|
|
|
|
// names must be PascalCased.
|
|
|
|
|
//
|
|
|
|
@ -123,14 +122,12 @@ void GenerateMessageAssignment(absl::string_view prefix, |
|
|
|
|
return; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
printer->Print("$prefix$$name$ = ", "prefix", prefix, "name", |
|
|
|
|
RubifyConstant(message->name())); |
|
|
|
|
printer->Print( |
|
|
|
|
"$prefix$$name$ = ", |
|
|
|
|
"prefix", prefix, |
|
|
|
|
"name", RubifyConstant(message->name())); |
|
|
|
|
printer->Print( |
|
|
|
|
"::Google::Protobuf::DescriptorPool.generated_pool." |
|
|
|
|
"lookup(\"$full_name$\").msgclass\n", |
|
|
|
|
"full_name", message->full_name()); |
|
|
|
|
"::Google::Protobuf::DescriptorPool.generated_pool." |
|
|
|
|
"lookup(\"$full_name$\").msgclass\n", |
|
|
|
|
"full_name", message->full_name()); |
|
|
|
|
|
|
|
|
|
std::string nested_prefix = |
|
|
|
|
absl::StrCat(prefix, RubifyConstant(message->name()), "::"); |
|
|
|
@ -144,14 +141,12 @@ void GenerateMessageAssignment(absl::string_view prefix, |
|
|
|
|
|
|
|
|
|
void GenerateEnumAssignment(absl::string_view prefix, const EnumDescriptor* en, |
|
|
|
|
io::Printer* printer) { |
|
|
|
|
printer->Print("$prefix$$name$ = ", "prefix", prefix, "name", |
|
|
|
|
RubifyConstant(en->name())); |
|
|
|
|
printer->Print( |
|
|
|
|
"$prefix$$name$ = ", |
|
|
|
|
"prefix", prefix, |
|
|
|
|
"name", RubifyConstant(en->name())); |
|
|
|
|
printer->Print( |
|
|
|
|
"::Google::Protobuf::DescriptorPool.generated_pool." |
|
|
|
|
"lookup(\"$full_name$\").enummodule\n", |
|
|
|
|
"full_name", en->full_name()); |
|
|
|
|
"::Google::Protobuf::DescriptorPool.generated_pool." |
|
|
|
|
"lookup(\"$full_name$\").enummodule\n", |
|
|
|
|
"full_name", en->full_name()); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int GeneratePackageModules(const FileDescriptor* file, io::Printer* printer) { |
|
|
|
@ -197,9 +192,7 @@ int GeneratePackageModules(const FileDescriptor* file, io::Printer* printer) { |
|
|
|
|
if (need_change_to_module) { |
|
|
|
|
component = PackageToModule(component); |
|
|
|
|
} |
|
|
|
|
printer->Print( |
|
|
|
|
"module $name$\n", |
|
|
|
|
"name", component); |
|
|
|
|
printer->Print("module $name$\n", "name", component); |
|
|
|
|
printer->Indent(); |
|
|
|
|
levels++; |
|
|
|
|
} |
|
|
|
@ -210,8 +203,7 @@ void EndPackageModules(int levels, io::Printer* printer) { |
|
|
|
|
while (levels > 0) { |
|
|
|
|
levels--; |
|
|
|
|
printer->Outdent(); |
|
|
|
|
printer->Print( |
|
|
|
|
"end\n"); |
|
|
|
|
printer->Print("end\n"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -304,16 +296,12 @@ bool GenerateFile(const FileDescriptor* file, io::Printer* printer, |
|
|
|
|
|
|
|
|
|
if (file->dependency_count() != 0) { |
|
|
|
|
for (int i = 0; i < file->dependency_count(); i++) { |
|
|
|
|
printer->Print("require '$name$'\n", "name", GetRequireName(file->dependency(i)->name())); |
|
|
|
|
printer->Print("require '$name$'\n", "name", |
|
|
|
|
GetRequireName(file->dependency(i)->name())); |
|
|
|
|
} |
|
|
|
|
printer->Print("\n"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// TODO: Remove this when ruby supports extensions.
|
|
|
|
|
if (file->extension_count() > 0) { |
|
|
|
|
ABSL_LOG(WARNING) << "Extensions are not yet supported in Ruby."; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
GenerateBinaryDescriptor(file, printer, error); |
|
|
|
|
|
|
|
|
|
int levels = GeneratePackageModules(file, printer); |
|
|
|
@ -328,11 +316,10 @@ bool GenerateFile(const FileDescriptor* file, io::Printer* printer, |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
bool Generator::Generate( |
|
|
|
|
const FileDescriptor* file, |
|
|
|
|
const std::string& parameter, |
|
|
|
|
GeneratorContext* generator_context, |
|
|
|
|
std::string* error) const { |
|
|
|
|
bool Generator::Generate(const FileDescriptor* file, |
|
|
|
|
const std::string& parameter, |
|
|
|
|
GeneratorContext* generator_context, |
|
|
|
|
std::string* error) const { |
|
|
|
|
if (FileDescriptorLegacy(file).syntax() == |
|
|
|
|
FileDescriptorLegacy::Syntax::SYNTAX_UNKNOWN) { |
|
|
|
|
*error = "Invalid or unsupported proto syntax"; |
|
|
|
|