use serde::Deserialize;
#[derive(Debug, Deserialize, Clone)]
pub struct NormalizeConfig {
#[serde(default = "default_true")]
pub enable: bool,
#[serde(default)]
pub placeholders: Vec<String>,
}
impl Default for NormalizeConfig {
fn default() -> Self {
Self {
enable: true,
placeholders: Vec::new(),
}
}
}
impl NormalizeConfig {
#[must_use]
pub fn placeholder_override(&self) -> Option<bool> {
let has_question = self.placeholders.iter().any(|p| p == "?");
let has_colon = self.placeholders.iter().any(|p| {
p.starts_with(':') && p[1..].chars().next().is_some_and(|c| c.is_ascii_digit())
});
match (has_question, has_colon) {
(true, false) => Some(false),
(false, true) => Some(true),
_ => None,
}
}
}
fn default_true() -> bool {
true
}