aboutsummaryrefslogtreecommitdiff
path: root/src/ProtocolBuffers
diff options
context:
space:
mode:
authorcsharptest <roger@csharptest.net>2011-08-13 18:22:30 -0500
committerrogerk <devnull@localhost>2011-08-13 18:22:30 -0500
commitbde57ffc757f10c105fe6a80b60cbb81b9d72426 (patch)
tree31c6f505f3ccb074655af0f124e93c08f72814ff /src/ProtocolBuffers
parent5ce95b4b480f6a58a522e1326251859d0b363f10 (diff)
downloadprotobuf-bde57ffc757f10c105fe6a80b60cbb81b9d72426.tar.gz
protobuf-bde57ffc757f10c105fe6a80b60cbb81b9d72426.tar.bz2
protobuf-bde57ffc757f10c105fe6a80b60cbb81b9d72426.zip
Cleanup per review comments.
Diffstat (limited to 'src/ProtocolBuffers')
-rw-r--r--src/ProtocolBuffers/ICodedInputStream.cs2
-rw-r--r--src/ProtocolBuffers/NameHelpers.cs69
2 files changed, 26 insertions, 45 deletions
diff --git a/src/ProtocolBuffers/ICodedInputStream.cs b/src/ProtocolBuffers/ICodedInputStream.cs
index f2360021..1d9d26e3 100644
--- a/src/ProtocolBuffers/ICodedInputStream.cs
+++ b/src/ProtocolBuffers/ICodedInputStream.cs
@@ -177,7 +177,7 @@ namespace Google.ProtocolBuffers
/// <summary>
/// Reads an array of primitive values into the list, if the wire-type of fieldTag is length-prefixed and the
- /// type is numberic, it will read a packed array.
+ /// type is numeric, it will read a packed array.
/// </summary>
[CLSCompliant(false)]
void ReadPrimitiveArray(FieldType fieldType, uint fieldTag, string fieldName, ICollection<object> list);
diff --git a/src/ProtocolBuffers/NameHelpers.cs b/src/ProtocolBuffers/NameHelpers.cs
index 09621e55..80a1f9aa 100644
--- a/src/ProtocolBuffers/NameHelpers.cs
+++ b/src/ProtocolBuffers/NameHelpers.cs
@@ -35,8 +35,6 @@
#endregion
using System;
-using System.Globalization;
-using System.Text;
using System.Text.RegularExpressions;
namespace Google.ProtocolBuffers
@@ -46,6 +44,20 @@ namespace Google.ProtocolBuffers
/// </summary>
public class NameHelpers
{
+ /// <summary>
+ /// All characters that are not alpha-numeric
+ /// </summary>
+ private static readonly Regex NonAlphaNumericCharacters = new Regex(@"[^a-zA-Z0-9]+");
+
+ /// <summary>
+ /// Matches lower-case character that follow either an underscore, or a number
+ /// </summary>
+ private static readonly Regex UnderscoreOrNumberWithLowerCase = new Regex(@"[0-9_][a-z]");
+
+ /// <summary>
+ /// Removes non alpha numeric characters while capitalizing letters that follow
+ /// a number or underscore. The first letter is always upper case.
+ /// </summary>
public static string UnderscoresToPascalCase(string input)
{
string name = UnderscoresToUpperCase(input);
@@ -60,6 +72,10 @@ namespace Google.ProtocolBuffers
return name;
}
+ /// <summary>
+ /// Removes non alpha numeric characters while capitalizing letters that follow
+ /// a number or underscore. The first letter is always lower case.
+ /// </summary>
public static string UnderscoresToCamelCase(string input)
{
string name = UnderscoresToUpperCase(input);
@@ -76,20 +92,24 @@ namespace Google.ProtocolBuffers
/// <summary>
/// Capitalizes any characters following an '_' or a number '0' - '9' and removes
- /// all non alpha-numberic characters. If the resulting string begins with a number
+ /// all non alpha-numeric characters. If the resulting string begins with a number
/// an '_' will be prefixed.
/// </summary>
private static string UnderscoresToUpperCase(string input)
{
- string name = Transform(input, UnderlineCharacter, x => x.Value.ToUpper());
- name = Transform(name, InvalidCharacters, x => String.Empty);
+ string name = UnderscoreOrNumberWithLowerCase.Replace(input, x => x.Value.ToUpper());
+ name = NonAlphaNumericCharacters.Replace(name, String.Empty);
if (name.Length == 0)
+ {
throw new ArgumentException(String.Format("The field name '{0}' is invalid.", input));
+ }
// Fields can not start with a number
if (Char.IsNumber(name[0]))
+ {
name = '_' + name;
+ }
return name;
}
@@ -116,44 +136,5 @@ namespace Google.ProtocolBuffers
}
return false;
}
-
- /// <summary>
- /// All characters that are not alpha-numberic
- /// </summary>
- private static Regex InvalidCharacters = new Regex(@"[^a-zA-Z0-9]+");
-
- /// <summary>
- /// Matches lower-case character that follow either an underscore, or a number
- /// </summary>
- private static Regex UnderlineCharacter = new Regex(@"[0-9_][a-z]");
-
- /// <summary>
- /// Used for text-template transformation where a regex match is replaced in the input string.
- /// </summary>
- /// <param name="input">The text to perform the replacement upon</param>
- /// <param name="pattern">The regex used to perform the match</param>
- /// <param name="fnReplace">A delegate that selects the appropriate replacement text</param>
- /// <returns>The newly formed text after all replacements are made</returns>
- /// <remarks>
- /// Originally found at http://csharptest.net/browse/src/Library/Utils/StringUtils.cs#120
- /// Republished here by the original author under this project's licensing.
- /// </remarks>
- private static string Transform(string input, Regex pattern, Converter<Match, string> fnReplace)
- {
- int currIx = 0;
- StringBuilder sb = new StringBuilder();
-
- foreach (Match match in pattern.Matches(input))
- {
- sb.Append(input, currIx, match.Index - currIx);
- string replace = fnReplace(match);
- sb.Append(replace);
-
- currIx = match.Index + match.Length;
- }
-
- sb.Append(input, currIx, input.Length - currIx);
- return sb.ToString();
- }
}
} \ No newline at end of file