Commit

Author:

Hash:

Timestamp:

+7 -5 +/-1 browse

Kevin Schoon [me@kevinschoon.com]

56d056b62a25085813486308d47fb1074df08f85

Tue, 13 May 2025 16:53:32 +0000 (6 months ago)

fix escaping of highlighted code
1diff --git a/ayllu/src/highlight.rs b/ayllu/src/highlight.rs
2index 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 }