#![forbid(unsafe_code)]
pub mod cast;
#[must_use]
pub fn slugify(name: &str) -> String {
let mut out = String::with_capacity(name.len());
let mut prev_dash = false;
for c in name.chars() {
if c.is_ascii_alphanumeric() {
out.push(c.to_ascii_lowercase());
prev_dash = false;
} else if !prev_dash {
out.push('-');
prev_dash = true;
}
}
out.trim_matches('-').to_string()
}
#[cfg(test)]
mod slugify_tests {
use super::slugify;
#[test]
fn slugify_basic() {
assert_eq!(slugify("My Plugin"), "my-plugin");
assert_eq!(slugify("Hello!! World"), "hello-world");
assert_eq!(slugify("--leading and trailing--"), "leading-and-trailing");
assert_eq!(slugify("ABC123"), "abc123");
assert_eq!(slugify(""), "");
}
}