use super::context::*;
pub const DEPICTION_CONFIGURATION_FORMAT: &str = "format";
#[derive(Clone, Copy, Debug, Default, Eq, PartialEq)]
pub enum DepictionFormat {
Compact,
#[default]
Optimized,
Verbose,
}
pub trait DepictionFormatUtilities {
fn get_format(&self) -> DepictionFormat;
fn with_format(self, format: DepictionFormat) -> Self;
}
impl<'own> DepictionFormatUtilities for DepictionContext<'own> {
fn get_format(&self) -> DepictionFormat {
match self.configuration.get(DEPICTION_CONFIGURATION_FORMAT) {
Some(format) => match format.as_str() {
"compact" => DepictionFormat::Compact,
"verbose" => DepictionFormat::Verbose,
_ => DepictionFormat::Optimized,
},
None => DepictionFormat::Optimized,
}
}
fn with_format(self, format: DepictionFormat) -> Self {
self.with_configuration(
DEPICTION_CONFIGURATION_FORMAT,
match format {
DepictionFormat::Compact => "compact",
DepictionFormat::Verbose => "verbose",
DepictionFormat::Optimized => "reduced",
},
)
}
}