rustdoc: Strip out additional chrome (#13172)

Marshall Bowers created

This PR updates the HTML to Markdown converter for rustdoc to strip out
some additional chrome.

Namely, anchors and links to source files.

Release Notes:

- N/A

Change summary

crates/rustdoc/src/to_markdown.rs | 13 +++++++++----
1 file changed, 9 insertions(+), 4 deletions(-)

Detailed changes

crates/rustdoc/src/to_markdown.rs ๐Ÿ”—

@@ -61,7 +61,7 @@ impl HandleTag for RustdocHeadingHandler {
             || writer.is_inside("h6")
         {
             let text = text
-                .trim_matches(|char| char == '\n' || char == '\r' || char == 'ยง')
+                .trim_matches(|char| char == '\n' || char == '\r')
                 .replace('\n', " ");
             writer.push_str(&text);
 
@@ -212,7 +212,7 @@ pub struct RustdocChromeRemover;
 impl HandleTag for RustdocChromeRemover {
     fn should_handle(&self, tag: &str) -> bool {
         match tag {
-            "head" | "script" | "nav" | "summary" | "button" | "div" | "span" => true,
+            "head" | "script" | "nav" | "summary" | "button" | "a" | "div" | "span" => true,
             _ => false,
         }
     }
@@ -234,12 +234,17 @@ impl HandleTag for RustdocChromeRemover {
                     return StartTagOutcome::Skip;
                 }
             }
+            "a" => {
+                if tag.has_any_classes(&["anchor", "doc-anchor", "src"]) {
+                    return StartTagOutcome::Skip;
+                }
+            }
             "div" | "span" => {
-                let classes_to_skip = ["nav-container", "sidebar-elems", "out-of-band"];
-                if tag.has_any_classes(&classes_to_skip) {
+                if tag.has_any_classes(&["nav-container", "sidebar-elems", "out-of-band"]) {
                     return StartTagOutcome::Skip;
                 }
             }
+
             _ => {}
         }