use crate::maskers;
#[derive(Debug, Clone)]
pub struct Masker {
start: usize,
end: usize,
ch: char,
}
impl Masker {
pub fn new() -> Self {
Masker {
start: 0,
end: 0,
ch: '*',
}
}
pub fn keep_start(mut self, n: usize) -> Self {
self.start = n;
self
}
pub fn keep_end(mut self, n: usize) -> Self {
self.end = n;
self
}
pub fn mask_char(mut self, c: char) -> Self {
self.ch = c;
self
}
#[must_use]
pub fn apply(&self, input: &str) -> String {
maskers::mask_custom(input, self.start, self.end, self.ch)
}
}
impl Default for Masker {
fn default() -> Self {
Self::new()
}
}