use anyhow::Result;
use tokmd_analysis_types::AnalysisReceipt;
use tokmd_types::AnalysisFormat;
mod fun_outputs;
pub mod html;
mod jsonld;
mod markdown;
mod mermaid;
mod svg;
mod tree;
mod xml;
pub enum RenderedOutput {
Text(String),
Binary(Vec<u8>),
}
pub fn render(receipt: &AnalysisReceipt, format: AnalysisFormat) -> Result<RenderedOutput> {
match format {
AnalysisFormat::Md => Ok(RenderedOutput::Text(render_md(receipt))),
AnalysisFormat::Json => Ok(RenderedOutput::Text(serde_json::to_string_pretty(receipt)?)),
AnalysisFormat::Jsonld => Ok(RenderedOutput::Text(jsonld::render(receipt))),
AnalysisFormat::Xml => Ok(RenderedOutput::Text(xml::render(receipt))),
AnalysisFormat::Svg => Ok(RenderedOutput::Text(svg::render(receipt))),
AnalysisFormat::Mermaid => Ok(RenderedOutput::Text(mermaid::render(receipt))),
AnalysisFormat::Obj => Ok(RenderedOutput::Text(fun_outputs::render_obj(receipt)?)),
AnalysisFormat::Midi => Ok(RenderedOutput::Binary(fun_outputs::render_midi(receipt)?)),
AnalysisFormat::Tree => Ok(RenderedOutput::Text(tree::render(receipt))),
AnalysisFormat::Html => Ok(RenderedOutput::Text(render_html(receipt))),
}
}
fn render_md(receipt: &AnalysisReceipt) -> String {
markdown::render_md(receipt)
}
fn render_html(receipt: &AnalysisReceipt) -> String {
html::render(receipt)
}
#[cfg(test)]
mod tests;