Author:
Hash:
Timestamp:
+7 -5 +/-1 browse
Kevin Schoon [me@kevinschoon.com]
56d056b62a25085813486308d47fb1074df08f85
Tue, 13 May 2025 16:53:32 +0000 (6 months ago)
| 1 | diff --git a/ayllu/src/highlight.rs b/ayllu/src/highlight.rs |
| 2 | index 4b7cb89..65c536d 100644 |
| 3 | --- a/ayllu/src/highlight.rs |
| 4 | +++ b/ayllu/src/highlight.rs |
| 5 | @@ -267,6 +267,8 @@ impl Highlighter { |
| 6 | |
| 7 | debug!("language hint: {:?}", hint); |
| 8 | |
| 9 | + let escaped = askama::filters::escape(code, askama::filters::Html).unwrap(); |
| 10 | + |
| 11 | match hint { |
| 12 | Some(hint) => match ( |
| 13 | LANGUAGES.read().unwrap().get(&hint), |
| 14 | @@ -298,16 +300,16 @@ impl Highlighter { |
| 15 | |
| 16 | config.configure(&self.names); |
| 17 | |
| 18 | - let code = code.as_bytes(); |
| 19 | + let escaped = escaped.to_string(); |
| 20 | |
| 21 | let events = highlighter |
| 22 | - .highlight(&config, code, None, |_| None) |
| 23 | + .highlight(&config, escaped.as_bytes(), None, |_| None) |
| 24 | .unwrap(); |
| 25 | |
| 26 | let mut renderer = HtmlRenderer::new(); |
| 27 | |
| 28 | renderer |
| 29 | - .render(events, code, &move |highlight, data| { |
| 30 | + .render(events, escaped.as_bytes(), &move |highlight, data| { |
| 31 | if let Some(name) = self.classes.get(highlight.0) { |
| 32 | data.write_all(name.as_bytes()).unwrap(); |
| 33 | } |
| 34 | @@ -323,7 +325,7 @@ impl Highlighter { |
| 35 | debug!("cannot paint syntax for language: {:?}", hint); |
| 36 | ( |
| 37 | None, |
| 38 | - render_lines(code.lines().collect(), show_line_numbers), |
| 39 | + render_lines(escaped.to_string().lines().collect(), show_line_numbers), |
| 40 | ) |
| 41 | } |
| 42 | }, |
| 43 | @@ -331,7 +333,7 @@ impl Highlighter { |
| 44 | debug!("cannot determine language"); |
| 45 | ( |
| 46 | None, |
| 47 | - render_lines(code.lines().collect(), show_line_numbers), |
| 48 | + render_lines(escaped.to_string().lines().collect(), show_line_numbers), |
| 49 | ) |
| 50 | } |
| 51 | } |