diff --git a/src/utils/mod.rs b/src/utils/mod.rs new file mode 100644 index 0000000..003a042 --- /dev/null +++ b/src/utils/mod.rs @@ -0,0 +1,32 @@ +pub mod author; +pub mod formatting; + +use std::collections::HashSet; + +pub fn normalize_email(email: &str) -> String { + let email = email.to_lowercase(); + email.trim().to_string() +} + +pub fn normalize_name(name: &str) -> String { + let name = name.trim(); + let mut result = String::new(); + let mut capitalize = true; + for c in name.chars() { + if c.is_whitespace() { + capitalize = true; + result.push(c); + } else if capitalize { + result.push(c.to_ascii_uppercase()); + capitalize = false; + } else { + result.push(c); + } + } + result +} + +pub fn get_unique_items(items: &[T]) -> Vec<&T> { + let seen: HashSet<&T> = items.iter().collect(); + seen.into_iter().collect() +}