public static string ToSnakeCase()

in src/Elastic.CommonSchema/Serialization/SnakeCaseJsonNamingPolicy.cs [12:39]


		public static string ToSnakeCase(string s)
		{
			if (string.IsNullOrEmpty(s)) return s;

			var sb = new StringBuilder();
			for (var i = 0; i < s.Length; i++)
			{
				var c = s[i];
				if (!char.IsUpper(c))
				{
					sb.Append(c);
					continue;
				}
				// first
				if (i == 0)
					sb.Append(char.ToLowerInvariant(c));
				else if (char.IsUpper(s[i - 1])) // WriteIO => write_io
					sb.Append(char.ToLowerInvariant(c));
				else if (s[i - 1] == '_') // User_Id => user_id
					sb.Append(char.ToLowerInvariant(c));
				else
				{
					sb.Append("_");
					sb.Append(char.ToLowerInvariant(c));
				}
			}
			return sb.ToString();
		}