#[derive(Debug)]
pub(crate) enum ReplacementMode {
Partial { from: String },
Full,
}
#[derive(Debug)]
pub(crate) struct ReplacementEntry {
pub(crate) mode: ReplacementMode,
pub(crate) to: String,
}
impl ReplacementEntry {
pub(crate) fn patch(&self, entry: &str) -> String {
match &self.mode {
ReplacementMode::Partial { from } => entry
.split_whitespace()
.map(|word| if word == from { &self.to } else { word })
.collect::<Vec<_>>()
.join(" "),
ReplacementMode::Full => self.to.clone(),
}
}
}