43 lines
1.5 KiB
C#
43 lines
1.5 KiB
C#
using System.Text;
|
|
using System.Text.Json;
|
|
|
|
namespace YandexMusic.API.Common.Ynison;
|
|
|
|
/// <summary>Политика именования в формате UPPER_SNAKE_CASE (все буквы верхнего регистра, слова через подчёркивание).</summary>
|
|
public class UpperSnakeCaseNamingPolicy : SnakeCaseNamingPolicy
|
|
{
|
|
/// <summary>Преобразует имя свойства в формат UPPER_SNAKE_CASE.</summary>
|
|
public override string ConvertName(string name)
|
|
{
|
|
var snakeCase = base.ConvertName(name);
|
|
return snakeCase.ToUpperInvariant();
|
|
}
|
|
}
|
|
|
|
/// <summary>Базовая политика именования в формате snake_case (все буквы нижнего регистра, слова через подчёркивание).</summary>
|
|
public class SnakeCaseNamingPolicy : JsonNamingPolicy
|
|
{
|
|
/// <summary>Преобразует имя свойства в формат snake_case.</summary>
|
|
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();
|
|
}
|
|
} |