term_maths/renderer.rs
1//! Output backend trait and implementations.
2
3use rust_latex_parser::EqNode;
4
5use crate::rendered_block::RenderedBlock;
6
7/// Trait for rendering an `EqNode` AST into a target output format.
8pub trait MathRenderer {
9 type Output;
10
11 /// Render an equation AST node into the target output.
12 fn render(&self, node: &EqNode) -> Self::Output;
13}
14
15/// Default renderer that produces a `RenderedBlock` (2D character grid).
16/// Always available — no feature gates required.
17pub struct TerminalRenderer;
18
19impl MathRenderer for TerminalRenderer {
20 type Output = RenderedBlock;
21
22 fn render(&self, node: &EqNode) -> RenderedBlock {
23 crate::layout::layout(node)
24 }
25}