Fix markdown code blocks when highlighter is disabled

This commit is contained in:
Héctor Ramón Jiménez 2025-03-18 00:03:34 +01:00
parent 68b992962c
commit 363b0e903a
No known key found for this signature in database
GPG key ID: 7CC46565708259A7

View file

@ -474,6 +474,7 @@ fn parse_with<'a>(
let mut strikethrough = false; let mut strikethrough = false;
let mut metadata = false; let mut metadata = false;
let mut table = false; let mut table = false;
let mut code_block = false;
let mut link = None; let mut link = None;
let mut image = None; let mut image = None;
let mut stack = Vec::new(); let mut stack = Vec::new();
@ -627,6 +628,7 @@ fn parse_with<'a>(
}); });
} }
code_block = true;
code_language = code_language =
(!language.is_empty()).then(|| language.into_string()); (!language.is_empty()).then(|| language.into_string());
@ -732,6 +734,8 @@ fn parse_with<'a>(
) )
} }
pulldown_cmark::TagEnd::CodeBlock if !metadata && !table => { pulldown_cmark::TagEnd::CodeBlock if !metadata && !table => {
code_block = false;
#[cfg(feature = "highlighter")] #[cfg(feature = "highlighter")]
{ {
state.borrow_mut().highlighter = highlighter.take(); state.borrow_mut().highlighter = highlighter.take();
@ -759,15 +763,29 @@ fn parse_with<'a>(
_ => None, _ => None,
}, },
pulldown_cmark::Event::Text(text) if !metadata && !table => { pulldown_cmark::Event::Text(text) if !metadata && !table => {
#[cfg(feature = "highlighter")] if code_block {
if let Some(highlighter) = &mut highlighter {
code.push_str(&text); code.push_str(&text);
#[cfg(feature = "highlighter")]
if let Some(highlighter) = &mut highlighter {
for line in text.lines() { for line in text.lines() {
code_lines.push(Text::new( code_lines.push(Text::new(
highlighter.highlight_line(line).to_vec(), highlighter.highlight_line(line).to_vec(),
)); ));
} }
}
#[cfg(not(feature = "highlighter"))]
for line in text.lines() {
code_lines.push(Text::new(vec![Span::Standard {
text: line.to_owned(),
strong,
emphasis,
strikethrough,
link: link.clone(),
code: false,
}]));
}
return None; return None;
} }