diff options
author | Jon Skeet <jonskeet@google.com> | 2016-07-27 10:46:00 +0100 |
---|---|---|
committer | Jon Skeet <jonskeet@google.com> | 2016-07-27 10:49:13 +0100 |
commit | a8aae8989cee8abc214f9942860b11d34a85fd79 (patch) | |
tree | d329b4fe1279fa92192ea0020ab784178bc7c8ac | |
parent | ba52f2b6780fa5e6bee86cf7e8ee6f6ba617862c (diff) | |
download | protobuf-a8aae8989cee8abc214f9942860b11d34a85fd79.tar.gz protobuf-a8aae8989cee8abc214f9942860b11d34a85fd79.tar.bz2 protobuf-a8aae8989cee8abc214f9942860b11d34a85fd79.zip |
Bring C#'s ToPascalCase method in line with C++.
(This still doesn't fix the conformance tests, but at least
we're now consistent with the C++ code.)
-rw-r--r-- | csharp/src/Google.Protobuf.Test/JsonFormatterTest.cs | 6 | ||||
-rw-r--r-- | csharp/src/Google.Protobuf/JsonFormatter.cs | 12 |
2 files changed, 16 insertions, 2 deletions
diff --git a/csharp/src/Google.Protobuf.Test/JsonFormatterTest.cs b/csharp/src/Google.Protobuf.Test/JsonFormatterTest.cs index 51b3ca2d..261ac6a7 100644 --- a/csharp/src/Google.Protobuf.Test/JsonFormatterTest.cs +++ b/csharp/src/Google.Protobuf.Test/JsonFormatterTest.cs @@ -230,6 +230,12 @@ namespace Google.Protobuf [TestCase("foo_bar", "fooBar")] [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) { Assert.AreEqual(expected, JsonFormatter.ToCamelCase(original)); diff --git a/csharp/src/Google.Protobuf/JsonFormatter.cs b/csharp/src/Google.Protobuf/JsonFormatter.cs index a894ffa1..d8a814d9 100644 --- a/csharp/src/Google.Protobuf/JsonFormatter.cs +++ b/csharp/src/Google.Protobuf/JsonFormatter.cs @@ -274,7 +274,6 @@ namespace Google.Protobuf } // Converted from src/google/protobuf/util/internal/utility.cc ToCamelCase - // TODO: Use the new field in FieldDescriptor. internal static string ToCamelCase(string input) { bool capitalizeNext = false; @@ -305,6 +304,7 @@ namespace Google.Protobuf (!wasCap || (i + 1 < input.Length && char.IsLower(input[i + 1])))) { firstWord = false; + result.Append(input[i]); } else { @@ -320,8 +320,16 @@ namespace Google.Protobuf result.Append(char.ToUpperInvariant(input[i])); continue; } + else + { + result.Append(input[i]); + continue; + } + } + else + { + result.Append(char.ToLowerInvariant(input[i])); } - result.Append(input[i]); } return result.ToString(); } |