mq-conv 0.1.4

A CLI tool for converting various file formats to Markdown
Documentation
use std::io::Write;

use crate::converter::Converter;
use crate::error::{Error, Result};

pub struct HtmlConverter;

impl Converter for HtmlConverter {
    fn format_name(&self) -> &'static str {
        "html"
    }

    fn convert(&self, input: &[u8], writer: &mut dyn Write) -> Result<()> {
        let text = mq_markdown::convert_html_to_markdown(
            std::str::from_utf8(input).map_err(|e| Error::Conversion {
                format: "html",
                message: e.to_string(),
            })?,
            mq_markdown::ConversionOptions {
                extract_scripts_as_code_blocks: true,
                generate_front_matter: true,
                use_title_as_h1: true,
            },
        )
        .map_err(|e| Error::Conversion {
            format: "html",
            message: e.to_string(),
        })?;

        let trimmed = text.trim();
        if trimmed.is_empty() {
            writeln!(writer, "*Empty HTML document*")?;
        } else {
            writeln!(writer, "{trimmed}")?;
        }

        Ok(())
    }
}