using System.Text;
using System.Text.Json;
namespace YandexMusic.API.Common.Ynison;
/// Политика именования в формате UPPER_SNAKE_CASE (все буквы верхнего регистра, слова через подчёркивание).
public class UpperSnakeCaseNamingPolicy : SnakeCaseNamingPolicy
{
/// Преобразует имя свойства в формат UPPER_SNAKE_CASE.
public override string ConvertName(string name)
{
var snakeCase = base.ConvertName(name);
return snakeCase.ToUpperInvariant();
}
}
/// Базовая политика именования в формате snake_case (все буквы нижнего регистра, слова через подчёркивание).
public class SnakeCaseNamingPolicy : JsonNamingPolicy
{
/// Преобразует имя свойства в формат snake_case.
public override string ConvertName(string name)
{
if (string.IsNullOrEmpty(name))
return name;
var sb = new StringBuilder();
for (int i = 0; i < name.Length; i++)
{
char c = name[i];
if (char.IsUpper(c))
{
if (i > 0)
sb.Append('_');
sb.Append(char.ToLowerInvariant(c));
}
else
{
sb.Append(c);
}
}
return sb.ToString();
}
}