mabel_eno/printer/
html.rs

1use super::Printer;
2
3#[derive(Debug)]
4pub struct HtmlPrinter;
5
6impl HtmlPrinter {
7    fn escape(string: &str) -> String {
8        string
9            .replace('&', "&")
10            .replace('<', "&lt;")
11            .replace('>', "&gt;")
12    }
13}
14
15impl Printer for HtmlPrinter {
16    fn comment(&self, comment: &str) -> String {
17        let comment_escaped = HtmlPrinter::escape(comment);
18        format!(r#"<span class="comment">{comment_escaped}</span>"#)
19    }
20
21    fn gutter(&self, line_number: u32) -> String {
22        format!(r#"<span class="gutter"> {:>3} </span> "#, line_number)
23    }
24
25    fn key(&self, key: &str) -> String {
26        let key_escaped = HtmlPrinter::escape(key);
27        format!(r#"<span class="key">{key_escaped}</span>"#)
28    }
29
30    fn operator(&self, operator: &str) -> String {
31        format!(r#"<span class="operator">{operator}</span>"#)
32    }
33
34    fn value(&self, value: &str) -> String {
35        let value_escaped = HtmlPrinter::escape(value);
36        format!(r#"<span class="value">{value_escaped}</span>"#)
37    }
38}