use sha2::{Digest, Sha256};
#[derive(Debug, Clone, Copy)]
pub enum Transform {
Hash,
Lowercase,
Uppercase,
}
pub fn apply_hash(value: &str) -> String {
let mut hasher = Sha256::new();
hasher.update(value.as_bytes());
let result = hasher.finalize();
hex::encode(&result[..8])
}
pub fn apply_single_transform(value: String, transform: &Transform) -> String {
match transform {
Transform::Hash => apply_hash(&value),
Transform::Lowercase => value.to_lowercase(),
Transform::Uppercase => value.to_uppercase(),
}
}
pub fn apply_transform_chain(mut value: String, chain: &[Transform]) -> String {
for transform in chain {
value = apply_single_transform(value, transform);
}
value
}