cmark_writer/traits/
processing.rs

1//! Node processing traits
2
3use crate::error::WriteResult;
4
5/// Node processor trait
6pub trait NodeProcessor {
7    /// Check if the node can be processed
8    fn can_process(&self, node: &crate::ast::Node) -> bool;
9
10    /// Process node and write to CommonMark
11    fn process_commonmark(
12        &self,
13        writer: &mut crate::writer::CommonMarkWriter,
14        node: &crate::ast::Node,
15    ) -> WriteResult<()>;
16
17    /// Process node and write to HTML
18    fn process_html(
19        &self,
20        writer: &mut crate::writer::HtmlWriter,
21        node: &crate::ast::Node,
22    ) -> WriteResult<()>;
23
24    /// Get processor priority
25    fn priority(&self) -> u32 {
26        0
27    }
28}
29
30/// Block-level node processor
31pub trait BlockNodeProcessor: NodeProcessor {
32    /// Ensure block separation
33    fn ensure_block_separation(&self, writer: &mut dyn super::core::Writer) -> WriteResult<()>;
34}
35
36/// Inline node processor
37pub trait InlineNodeProcessor: NodeProcessor {
38    /// Validate inline content
39    fn validate_inline_content(&self, node: &crate::ast::Node) -> WriteResult<()>;
40}