hwpforge_smithy_md/encoder/
mod.rs

1//! Core -> Markdown encoders.
2
3mod lossless;
4mod lossy;
5
6use hwpforge_blueprint::template::Template;
7use hwpforge_core::{Document, Validated};
8
9use crate::error::MdResult;
10
11/// Markdown encoder entrypoint.
12pub struct MdEncoder;
13
14impl MdEncoder {
15    /// Encodes a validated document into markdown with frontmatter.
16    ///
17    /// This method is mapping-aware and uses the provided template to map
18    /// paragraph style IDs back into markdown semantics.
19    pub fn encode(document: &Document<Validated>, template: &Template) -> MdResult<String> {
20        lossy::encode_with_template(document, template)
21    }
22
23    /// Encodes a validated document into readable markdown without template mapping.
24    pub fn encode_lossy(document: &Document<Validated>) -> MdResult<String> {
25        lossy::encode_without_template(document)
26    }
27
28    /// Encodes a validated document into lossless markdown (frontmatter + HTML-like body).
29    pub fn encode_lossless(document: &Document<Validated>) -> MdResult<String> {
30        lossless::encode_lossless(document)
31    }
32}