pub mod alias;
pub mod detect;
pub mod gate;
pub mod span;
pub mod validate;
use crate::config::AppConfig;
use alias::{AliasKey, Category};
pub struct PrivacyOptions {
key: AliasKey,
categories: Vec<Category>,
}
impl PrivacyOptions {
pub fn from_config(cfg: &AppConfig) -> Self {
Self {
key: AliasKey::from_config(cfg),
categories: cfg.privacy.active(),
}
}
}
pub fn scrub_pii(input: &str, opts: &PrivacyOptions) -> String {
if opts.categories.is_empty() {
return input.to_string();
}
let spans = span::resolve(detect::candidates(input, &opts.categories));
span::apply(input, &spans, &opts.key)
}