#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum OutputFormat {
Text,
Json,
Toon,
}
impl OutputFormat {
pub fn parse(value: &str) -> Option<Self> {
match value {
"text" => Some(Self::Text),
"json" => Some(Self::Json),
"toon" => Some(Self::Toon),
_ => None,
}
}
}
pub trait RenderOutput {
fn render_text(&self) -> String;
fn render_json(&self) -> String;
fn render_toon(&self) -> String;
fn render(&self, format: OutputFormat) -> String {
match format {
OutputFormat::Text => self.render_text(),
OutputFormat::Json => self.render_json(),
OutputFormat::Toon => self.render_toon(),
}
}
}