Merge pull request #1862 from pherl/3.0.0-GA
Cherry pick c# changes from master
This commit is contained in:
commit
a098e80933
@ -230,6 +230,12 @@ namespace Google.Protobuf
|
|||||||
[TestCase("foo_bar", "fooBar")]
|
[TestCase("foo_bar", "fooBar")]
|
||||||
[TestCase("bananaBanana", "bananaBanana")]
|
[TestCase("bananaBanana", "bananaBanana")]
|
||||||
[TestCase("BANANABanana", "bananaBanana")]
|
[TestCase("BANANABanana", "bananaBanana")]
|
||||||
|
[TestCase("simple", "simple")]
|
||||||
|
[TestCase("ACTION_AND_ADVENTURE", "actionAndAdventure")]
|
||||||
|
[TestCase("action_and_adventure", "actionAndAdventure")]
|
||||||
|
[TestCase("kFoo", "kFoo")]
|
||||||
|
[TestCase("HTTPServer", "httpServer")]
|
||||||
|
[TestCase("CLIENT", "client")]
|
||||||
public void ToCamelCase(string original, string expected)
|
public void ToCamelCase(string original, string expected)
|
||||||
{
|
{
|
||||||
Assert.AreEqual(expected, JsonFormatter.ToCamelCase(original));
|
Assert.AreEqual(expected, JsonFormatter.ToCamelCase(original));
|
||||||
|
@ -274,7 +274,6 @@ namespace Google.Protobuf
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Converted from src/google/protobuf/util/internal/utility.cc ToCamelCase
|
// Converted from src/google/protobuf/util/internal/utility.cc ToCamelCase
|
||||||
// TODO: Use the new field in FieldDescriptor.
|
|
||||||
internal static string ToCamelCase(string input)
|
internal static string ToCamelCase(string input)
|
||||||
{
|
{
|
||||||
bool capitalizeNext = false;
|
bool capitalizeNext = false;
|
||||||
@ -305,6 +304,7 @@ namespace Google.Protobuf
|
|||||||
(!wasCap || (i + 1 < input.Length && char.IsLower(input[i + 1]))))
|
(!wasCap || (i + 1 < input.Length && char.IsLower(input[i + 1]))))
|
||||||
{
|
{
|
||||||
firstWord = false;
|
firstWord = false;
|
||||||
|
result.Append(input[i]);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -320,8 +320,16 @@ namespace Google.Protobuf
|
|||||||
result.Append(char.ToUpperInvariant(input[i]));
|
result.Append(char.ToUpperInvariant(input[i]));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
|
{
|
||||||
result.Append(input[i]);
|
result.Append(input[i]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
result.Append(char.ToLowerInvariant(input[i]));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return result.ToString();
|
return result.ToString();
|
||||||
}
|
}
|
||||||
|
@ -68,9 +68,7 @@ void EnumGenerator::Generate(io::Printer* printer) {
|
|||||||
for (int i = 0; i < descriptor_->value_count(); i++) {
|
for (int i = 0; i < descriptor_->value_count(); i++) {
|
||||||
WriteEnumValueDocComment(printer, descriptor_->value(i));
|
WriteEnumValueDocComment(printer, descriptor_->value(i));
|
||||||
string original_name = descriptor_->value(i)->name();
|
string original_name = descriptor_->value(i)->name();
|
||||||
string name = options()->legacy_enum_values
|
string name = GetEnumValueName(descriptor_->name(), descriptor_->value(i)->name());
|
||||||
? descriptor_->value(i)->name()
|
|
||||||
: GetEnumValueName(descriptor_->name(), descriptor_->value(i)->name());
|
|
||||||
// Make sure we don't get any duplicate names due to prefix removal.
|
// Make sure we don't get any duplicate names due to prefix removal.
|
||||||
while (!used_names.insert(name).second) {
|
while (!used_names.insert(name).second) {
|
||||||
// It's possible we'll end up giving this warning multiple times, but that's better than not at all.
|
// It's possible we'll end up giving this warning multiple times, but that's better than not at all.
|
||||||
|
@ -83,9 +83,6 @@ bool Generator::Generate(
|
|||||||
cli_options.base_namespace_specified = true;
|
cli_options.base_namespace_specified = true;
|
||||||
} else if (options[i].first == "internal_access") {
|
} else if (options[i].first == "internal_access") {
|
||||||
cli_options.internal_access = true;
|
cli_options.internal_access = true;
|
||||||
} else if (options[i].first == "legacy_enum_values") {
|
|
||||||
// TODO: Remove this before final release
|
|
||||||
cli_options.legacy_enum_values = true;
|
|
||||||
} else {
|
} else {
|
||||||
*error = "Unknown generator option: " + options[i].first;
|
*error = "Unknown generator option: " + options[i].first;
|
||||||
return false;
|
return false;
|
||||||
|
@ -45,8 +45,7 @@ struct Options {
|
|||||||
file_extension(".cs"),
|
file_extension(".cs"),
|
||||||
base_namespace(""),
|
base_namespace(""),
|
||||||
base_namespace_specified(false),
|
base_namespace_specified(false),
|
||||||
internal_access(false),
|
internal_access(false) {
|
||||||
legacy_enum_values(false) {
|
|
||||||
}
|
}
|
||||||
// Extension of the generated file. Defaults to ".cs"
|
// Extension of the generated file. Defaults to ".cs"
|
||||||
string file_extension;
|
string file_extension;
|
||||||
@ -69,12 +68,6 @@ struct Options {
|
|||||||
// Whether the generated classes should have accessibility level of "internal".
|
// Whether the generated classes should have accessibility level of "internal".
|
||||||
// Defaults to false that generates "public" classes.
|
// Defaults to false that generates "public" classes.
|
||||||
bool internal_access;
|
bool internal_access;
|
||||||
// By default, C# codegen now uses PascalCased enum values names, after
|
|
||||||
// removing the enum type name as a prefix (if it *is* a prefix of the value).
|
|
||||||
// Setting this option reverts to the previous behavior of just copying the
|
|
||||||
// value name specified in the .proto file, allowing gradual migration.
|
|
||||||
// This option will be removed before final release.
|
|
||||||
bool legacy_enum_values;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace csharp
|
} // namespace csharp
|
||||||
|
Loading…
Reference in New Issue
Block a user