mod formatters;
use crate::error::XlsxToMdError;
use crate::grid::LogicalGrid;
use crate::types::MergedRegion;
use std::io::Write;
pub use formatters::*;
#[derive(Debug, Clone, Copy)]
pub enum OutputFormatter {
Markdown,
Html,
Json,
Csv,
}
impl OutputFormatter {
pub fn from_format(format: crate::api::OutputFormat) -> Self {
match format {
crate::api::OutputFormat::Markdown => OutputFormatter::Markdown,
crate::api::OutputFormat::Html => OutputFormatter::Html,
crate::api::OutputFormat::Json => OutputFormatter::Json,
crate::api::OutputFormat::Csv => OutputFormatter::Csv,
}
}
pub fn render<W: Write>(
&self,
grid: &LogicalGrid,
writer: &mut W,
merged_regions: &[MergedRegion],
) -> Result<(), XlsxToMdError> {
match self {
OutputFormatter::Markdown => {
MarkdownFormatter.render(grid, writer, merged_regions)
}
OutputFormatter::Html => {
HtmlFormatter.render(grid, writer, merged_regions)
}
OutputFormatter::Json => {
JsonFormatter.render(grid, writer, merged_regions)
}
OutputFormatter::Csv => {
CsvFormatter.render(grid, writer, merged_regions)
}
}
}
}