Merge branch 'master' of https://github.com/JamesNK/Newtonsoft.Json
This commit is contained in:
@@ -64,6 +64,10 @@ namespace Newtonsoft.Json.Tests.Utilities
|
|||||||
Assert.AreEqual("shoutinG_CASE", StringUtils.ToCamelCase("SHOUTING_CASE"));
|
Assert.AreEqual("shoutinG_CASE", StringUtils.ToCamelCase("SHOUTING_CASE"));
|
||||||
Assert.AreEqual("9999-12-31T23:59:59.9999999Z", StringUtils.ToCamelCase("9999-12-31T23:59:59.9999999Z"));
|
Assert.AreEqual("9999-12-31T23:59:59.9999999Z", StringUtils.ToCamelCase("9999-12-31T23:59:59.9999999Z"));
|
||||||
Assert.AreEqual("hi!! This is text. Time to test.", StringUtils.ToCamelCase("Hi!! This is text. Time to test."));
|
Assert.AreEqual("hi!! This is text. Time to test.", StringUtils.ToCamelCase("Hi!! This is text. Time to test."));
|
||||||
|
Assert.AreEqual("building", StringUtils.ToCamelCase("BUILDING"));
|
||||||
|
Assert.AreEqual("building Property", StringUtils.ToCamelCase("BUILDING Property"));
|
||||||
|
Assert.AreEqual("building Property", StringUtils.ToCamelCase("Building Property"));
|
||||||
|
Assert.AreEqual("building PROPERTY", StringUtils.ToCamelCase("BUILDING PROPERTY"));
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
|
|||||||
@@ -165,21 +165,38 @@ namespace Newtonsoft.Json.Utilities
|
|||||||
bool hasNext = (i + 1 < chars.Length);
|
bool hasNext = (i + 1 < chars.Length);
|
||||||
if (i > 0 && hasNext && !char.IsUpper(chars[i + 1]))
|
if (i > 0 && hasNext && !char.IsUpper(chars[i + 1]))
|
||||||
{
|
{
|
||||||
|
// if the next character is a space, which is not considered uppercase
|
||||||
|
// (otherwise we wouldn't be here...)
|
||||||
|
// we want to ensure that the following:
|
||||||
|
// 'FOO bar' is rewritten as 'foo bar', and not as 'foO bar'
|
||||||
|
// The code was written in such a way that the first word in uppercase
|
||||||
|
// ends when if finds an uppercase letter followed by a lowercase letter.
|
||||||
|
// now a ' ' (space, (char)32) is considered not upper
|
||||||
|
// but in that case we still want our current character to become lowercase
|
||||||
|
if (char.IsSeparator(chars[i + 1]))
|
||||||
|
{
|
||||||
|
chars[i] = ToLower(chars[i]);
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
char c;
|
chars[i] = ToLower(chars[i]);
|
||||||
#if HAVE_CHAR_TO_STRING_WITH_CULTURE
|
|
||||||
c = char.ToLower(chars[i], CultureInfo.InvariantCulture);
|
|
||||||
#else
|
|
||||||
c = char.ToLowerInvariant(chars[i]);
|
|
||||||
#endif
|
|
||||||
chars[i] = c;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return new string(chars);
|
return new string(chars);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static char ToLower(char c)
|
||||||
|
{
|
||||||
|
#if HAVE_CHAR_TO_STRING_WITH_CULTURE
|
||||||
|
c = char.ToLower(c, CultureInfo.InvariantCulture);
|
||||||
|
#else
|
||||||
|
c = char.ToLowerInvariant(c);
|
||||||
|
#endif
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
|
||||||
internal enum SnakeCaseState
|
internal enum SnakeCaseState
|
||||||
{
|
{
|
||||||
Start,
|
Start,
|
||||||
|
|||||||
Reference in New Issue
Block a user