using System.Text; namespace Argus.Infrastructure; public static class SlugUtility { public static string Normalize(string? value) { if (string.IsNullOrWhiteSpace(value)) { return string.Empty; } var builder = new StringBuilder(value.Length); var lastWasHyphen = false; foreach (var character in value.Trim().ToLowerInvariant()) { if (char.IsLetterOrDigit(character)) { builder.Append(character); lastWasHyphen = false; continue; } if (!lastWasHyphen) { builder.Append('-'); lastWasHyphen = true; } } return builder.ToString().Trim('-'); } public static bool IsValid(string? value) => !string.IsNullOrWhiteSpace(value) && value.Length <= 100 && string.Equals(value, Normalize(value), StringComparison.Ordinal); }