use std::sync::LazyLock;
use deunicode::deunicode;
use regex::Regex;
static ALLOWED: LazyLock<Regex> =
LazyLock::new(|| Regex::new("[^a-z0-9-_]").expect("valid regex pattern"));
static HYPHENS: LazyLock<Regex> = LazyLock::new(|| Regex::new("-+").expect("valid regex pattern"));
pub fn slug<S: AsRef<str>>(s: S) -> String {
let s = s.as_ref();
let mut s = deunicode(s);
s.make_ascii_lowercase();
let s = ALLOWED.replace_all(s.as_ref(), "-");
let s = HYPHENS.replace_all(s.as_ref(), "-");
let s = s.trim_matches('-');
s.to_owned()
}