Editor/CitizenRetarget/RetargetSequenceNames.cs
namespace Editor.CitizenRetarget;

internal static class RetargetSequenceNames
{
	public static string Build( string sequencePrefix, string clipDisplayName )
	{
		return (sequencePrefix ?? string.Empty) + Slugify( clipDisplayName ?? string.Empty );
	}

	private static string Slugify( string value )
	{
		var builder = new StringBuilder( value.Length );
		foreach ( var character in value )
		{
			if ( char.IsLetterOrDigit( character ) )
			{
				builder.Append( char.ToLowerInvariant( character ) );
			}
			else if ( builder.Length > 0 && builder[^1] != '_' )
			{
				builder.Append( '_' );
			}
		}

		return builder.ToString().Trim( '_' );
	}
}