| 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 | { |