sakurs_cli/output/
markdown.rs

1//! Markdown output formatter
2
3use super::OutputFormatter;
4use anyhow::Result;
5use std::io::Write;
6
7/// Markdown formatter - outputs sentences as a markdown list
8pub struct MarkdownFormatter<W: Write> {
9    writer: W,
10    sentence_count: usize,
11}
12
13impl<W: Write> MarkdownFormatter<W> {
14    /// Create a new markdown formatter
15    pub fn new(writer: W) -> Self {
16        Self {
17            writer,
18            sentence_count: 0,
19        }
20    }
21}
22
23impl<W: Write + Send + Sync> OutputFormatter for MarkdownFormatter<W> {
24    fn format_sentence(&mut self, sentence: &str, _offset: usize) -> Result<()> {
25        self.sentence_count += 1;
26        writeln!(self.writer, "{}. {}", self.sentence_count, sentence.trim())?;
27        Ok(())
28    }
29
30    fn finish(&mut self) -> Result<()> {
31        writeln!(self.writer)?;
32        writeln!(self.writer, "---")?;
33        writeln!(self.writer, "*Total sentences: {}*", self.sentence_count)?;
34        self.writer.flush()?;
35        Ok(())
36    }
37}