use crate::constants::get_color_ish;
#[derive(Debug, Clone)]
pub struct ColorMetadata {
pub iscc_nbs_color_name: String,
pub iscc_nbs_formatter: Option<String>,
pub alt_color_name: String,
pub color_shade: String,
}
impl ColorMetadata {
pub fn iscc_nbs_descriptor(&self) -> String {
if let Some(formatter) = &self.iscc_nbs_formatter {
Self::construct_descriptor(formatter, &self.iscc_nbs_color_name)
} else {
self.iscc_nbs_color_name.clone()
}
}
pub fn alt_color_descriptor(&self) -> String {
if let Some(formatter) = &self.iscc_nbs_formatter {
Self::construct_descriptor(formatter, &self.alt_color_name)
} else {
self.alt_color_name.clone()
}
}
pub fn shade(&self) -> &str {
&self.color_shade
}
pub fn construct_descriptor(formatter: &str, color_name: &str) -> String {
let color_name_ish = get_color_ish(color_name);
formatter
.replace("{0}", color_name)
.replace("{1}", color_name_ish)
}
}