Skip to main content

mq_edit/renderer/
plain_text.rs

1use ratatui::{style::Style, text::Span};
2
3use super::Renderer;
4use crate::document::DocumentBuffer;
5
6/// Plain text renderer (no formatting)
7///
8/// This renderer simply displays text as-is without any syntax highlighting
9/// or formatting. Useful for text files, unknown file types, or when the
10/// user wants to view raw content.
11pub struct PlainTextRenderer;
12
13impl PlainTextRenderer {
14    pub fn new() -> Self {
15        Self
16    }
17}
18
19impl Default for PlainTextRenderer {
20    fn default() -> Self {
21        Self::new()
22    }
23}
24
25impl Renderer for PlainTextRenderer {
26    fn render_line(
27        &self,
28        buffer: &DocumentBuffer,
29        line_idx: usize,
30        _is_current_line: bool,
31    ) -> Vec<Span<'_>> {
32        let content = buffer.line(line_idx).unwrap_or("");
33        vec![Span::styled(content.to_string(), Style::default())]
34    }
35
36    fn supports_wysiwyg(&self) -> bool {
37        false // All lines rendered the same way
38    }
39}
40
41#[cfg(test)]
42mod tests {
43    use super::*;
44
45    #[test]
46    fn test_plain_text_renderer() {
47        let renderer = PlainTextRenderer::new();
48        assert!(!renderer.supports_wysiwyg());
49    }
50}