Initial Argus web catalog
This commit is contained in:
@@ -0,0 +1,40 @@
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user