From a5011996fb7d418961f14c0080c9d912c8e71ef9 Mon Sep 17 00:00:00 2001 From: Marshall Bowers Date: Wed, 29 May 2024 18:57:20 -0400 Subject: [PATCH] rustdoc_to_markdown: Recognize Rust code blocks (#12458) This PR makes it so Rust code blocks are recognized and syntax-highlighted when converting from rustdoc to Markdown. Release Notes: - N/A --- .../rustdoc_to_markdown/src/markdown_writer.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/crates/rustdoc_to_markdown/src/markdown_writer.rs b/crates/rustdoc_to_markdown/src/markdown_writer.rs index 0191ed8549..cf71982ecb 100644 --- a/crates/rustdoc_to_markdown/src/markdown_writer.rs +++ b/crates/rustdoc_to_markdown/src/markdown_writer.rs @@ -137,7 +137,23 @@ impl MarkdownWriter { self.push_str("`") } } - "pre" => self.push_str("\n```\n"), + "pre" => { + let attrs = tag.attrs.borrow(); + let classes = attrs + .iter() + .find(|attr| attr.name.local.to_string() == "class") + .map(|attr| { + attr.value + .split(' ') + .map(|class| class.trim()) + .collect::>() + }) + .unwrap_or_default(); + let is_rust = classes.into_iter().any(|class| class == "rust"); + let language = if is_rust { "rs" } else { "" }; + + self.push_str(&format!("\n```{language}\n")) + } "ul" | "ol" => self.push_newline(), "li" => self.push_str("- "), "summary" => {