use {
crate::display::LumaCondition,
serde::Deserialize,
};
#[derive(Clone, Debug, Deserialize)]
#[serde(untagged)]
pub enum Import {
Simple(String),
Detailed(DetailedImport),
}
#[derive(Clone, Debug, Deserialize)]
pub struct DetailedImport {
pub luma: Option<LumaCondition>,
pub file: String,
}
impl Import {
pub fn applies(&self) -> bool {
self.luma().is_none_or(LumaCondition::is_verified)
}
pub fn luma(&self) -> Option<&LumaCondition> {
match self {
Self::Simple(_) => None,
Self::Detailed(detailed) => detailed.luma.as_ref(),
}
}
pub fn file(&self) -> &str {
match self {
Self::Simple(s) => s,
Self::Detailed(detailed) => &detailed.file,
}
}
}