diff options
Diffstat (limited to 'src/generate_html.rs')
-rw-r--r-- | src/generate_html.rs | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/generate_html.rs b/src/generate_html.rs index 0de42a5..5abddf2 100644 --- a/src/generate_html.rs +++ b/src/generate_html.rs @@ -236,7 +236,24 @@ pub fn document_to_html(document: &MarkdownDocument, page: &Page, website: &Webs warn!("Gallery-nav on page {from:?} has line without a '::' separator"); } }), - _ => wrap!("pre", format!("class='{language}'"), html!("{}", sanitize_text(content, false))), + _ => wrap!("pre", format!("class='{language}'"), { + if let Some(i) = website.highlighters.languages.get(language) { + let mut source = String::new(); + let highlighter = &website.highlighters.highlighters[*i]; + for span in highlighter.highlight(content) { + if span.tag.is_empty() { + source.push_str(&sanitize_text(&span.text, false)); + } else { + source.push_str(&format!("<span class='{}'>", span.tag.to_lowercase())); + source.push_str(&sanitize_text(&span.text, false)); + source.push_str("</span>"); + } + } + html!("{source}"); + } else { + html!("{}", sanitize_text(content, false)) + } + }) } } Block::Break => html!("<hr>"), |