use crate::config::loader::raw::{ColorMap, RawConfig};
use crate::theme::{Palette, ThemeColors};
pub(super) fn unknown_color_names(raw: &RawConfig) -> Vec<(String, String)> {
let mut unknown = Vec::new();
if let Some(appearance) = &raw.appearance {
for name in unknown_colors(&appearance.colors, Palette::KEYS) {
unknown.push(("appearance.colors".to_string(), name.to_string()));
}
}
for (theme, colors) in &raw.themes {
for name in unknown_colors(colors, ThemeColors::KEYS) {
unknown.push((format!("themes.{theme}"), name.to_string()));
}
}
unknown
}
fn unknown_colors<'a>(colors: &'a ColorMap, known: &[&str]) -> Vec<&'a str> {
colors
.keys()
.map(String::as_str)
.filter(|name| !known.contains(name))
.collect()
}
pub(super) fn report_unknown(unknown: &[(String, String)]) {
for (section, name) in unknown {
log::warn!("unknown colour '{name}' in [{section}], ignoring");
}
}