summaryrefslogtreecommitdiffstats
path: root/src/server/Utilities/SnakeCaseNamingPolicy.cs
blob: 9a7f1f31b992645efbd3c7f49072ccd2f93610fb (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
namespace IOL.BookmarkThing.Server.Utilities;

public class SnakeCaseNamingPolicy : JsonNamingPolicy
{
	public static SnakeCaseNamingPolicy Instance { get; } = new SnakeCaseNamingPolicy();

	public override string ConvertName(string name) {
		// Conversion to other naming convention goes here. Like SnakeCase, KebabCase etc.
		return ToSnakeCase(name);
	}

	private static string ToSnakeCase(string str) {
		return string.Concat(str.Select((x, i) => i > 0 && char.IsUpper(x) ? "_" + x.ToString() : x.ToString())).ToLower();
	}
}