use std::sync::Arc;
use serde::Deserialize;
use super::string_list::deserialize_arc_str_slice;
#[derive(Debug, Deserialize, Default, Clone)]
#[serde(deny_unknown_fields)]
pub struct PatternCheck {
#[serde(default)]
pub enabled: bool,
#[serde(default, deserialize_with = "deserialize_arc_str_slice")]
pub patterns: Arc<[Arc<str>]>,
}
impl PatternCheck {
pub fn apply_override(&mut self, ovr: &PatternOverride) {
if let Some(enabled) = ovr.enabled {
self.enabled = enabled;
}
if !ovr.patterns.is_empty() {
self.patterns = ovr.patterns.clone();
}
}
}
#[derive(Debug, Deserialize, Default, Clone)]
#[serde(deny_unknown_fields)]
pub struct PatternOverride {
pub enabled: Option<bool>,
#[serde(default, deserialize_with = "deserialize_arc_str_slice")]
pub patterns: Arc<[Arc<str>]>,
}