MCPcopy Create free account
hub / github.com/apache/fory / ToSnakeCase

Method ToSnakeCase

csharp/src/Fory.Generator/ForyModelGenerator.cs:4164–4197  ·  view source on GitHub ↗
(string name)

Source from the content-addressed store, hash-verified

4162 private static string EscapeString(string value) => value.Replace("\\", "\\\\").Replace("\"", "\\\"");
4163
4164 private static string ToSnakeCase(string name)
4165 {
4166 if (string.IsNullOrEmpty(name))
4167 {
4168 return name;
4169 }
4170
4171 StringBuilder sb = new(name.Length + 4);
4172 for (int i = 0; i < name.Length; i++)
4173 {
4174 char c = name[i];
4175 if (char.IsUpper(c))
4176 {
4177 if (i > 0)
4178 {
4179 bool prevUpper = char.IsUpper(name[i - 1]);
4180 bool nextUpperOrEnd = i + 1 >= name.Length || char.IsUpper(name[i + 1]);
4181 bool leadingPascalBoundary = i == 1 && prevUpper && !nextUpperOrEnd;
4182 if ((!prevUpper || !nextUpperOrEnd) && !leadingPascalBoundary)
4183 {
4184 sb.Append('_');
4185 }
4186 }
4187
4188 sb.Append(char.ToLowerInvariant(c));
4189 }
4190 else
4191 {
4192 sb.Append(c);
4193 }
4194 }
4195
4196 return sb.ToString();
4197 }
4198
4199 private static string Sanitize(string name)
4200 {

Callers

nothing calls this directly

Calls 2

AppendMethod · 0.80
ToStringMethod · 0.45

Tested by

no test coverage detected