]> git.lizzy.rs Git - rust.git/blobdiff - src/librustdoc/html/markdown.rs
Remove inline script tags
[rust.git] / src / librustdoc / html / markdown.rs
index 0a8c89f6caffdab268e963947ef9858d22dd6cfb..cfa6cd96595d6160e2320ca6a0635fbe51adcf25 100644 (file)
@@ -37,7 +37,9 @@
 use crate::html::highlight;
 use crate::html::toc::TocBuilder;
 
-use pulldown_cmark::{html, BrokenLink, CodeBlockKind, CowStr, Event, Options, Parser, Tag};
+use pulldown_cmark::{
+    html, BrokenLink, CodeBlockKind, CowStr, Event, LinkType, Options, Parser, Tag,
+};
 
 #[cfg(test)]
 mod tests;
@@ -327,8 +329,6 @@ impl<'a, I: Iterator<Item = Event<'a>>> Iterator for LinkReplacer<'a, I> {
     type Item = Event<'a>;
 
     fn next(&mut self) -> Option<Self::Item> {
-        use pulldown_cmark::LinkType;
-
         let mut event = self.inner.next();
 
         // Replace intra-doc links and remove disambiguators from shortcut links (`[fn@f]`).
@@ -1123,7 +1123,13 @@ fn push(s: &mut String, text_length: &mut usize, text: &str) {
     s
 }
 
-crate fn markdown_links(md: &str) -> Vec<(String, Range<usize>)> {
+crate struct MarkdownLink {
+    pub kind: LinkType,
+    pub link: String,
+    pub range: Range<usize>,
+}
+
+crate fn markdown_links(md: &str) -> Vec<MarkdownLink> {
     if md.is_empty() {
         return vec![];
     }
@@ -1163,7 +1169,11 @@ fn push(s: &mut String, text_length: &mut usize, text: &str) {
 
     let mut push = |link: BrokenLink<'_>| {
         let span = span_for_link(&CowStr::Borrowed(link.reference), link.span);
-        links.borrow_mut().push((link.reference.to_owned(), span));
+        links.borrow_mut().push(MarkdownLink {
+            kind: LinkType::ShortcutUnknown,
+            link: link.reference.to_owned(),
+            range: span,
+        });
         None
     };
     let p = Parser::new_with_broken_link_callback(md, opts(), Some(&mut push)).into_offset_iter();
@@ -1174,10 +1184,10 @@ fn push(s: &mut String, text_length: &mut usize, text: &str) {
     let iter = Footnotes::new(HeadingLinks::new(p, None, &mut ids));
 
     for ev in iter {
-        if let Event::Start(Tag::Link(_, dest, _)) = ev.0 {
+        if let Event::Start(Tag::Link(kind, dest, _)) = ev.0 {
             debug!("found link: {}", dest);
             let span = span_for_link(&dest, ev.1);
-            links.borrow_mut().push((dest.into_string(), span));
+            links.borrow_mut().push(MarkdownLink { kind, link: dest.into_string(), range: span });
         }
     }
 
@@ -1303,6 +1313,8 @@ fn init_id_map() -> FxHashMap<String, usize> {
     map.insert("toggle-all-docs".to_owned(), 1);
     map.insert("all-types".to_owned(), 1);
     map.insert("default-settings".to_owned(), 1);
+    map.insert("rustdoc-vars".to_owned(), 1);
+    map.insert("sidebar-vars".to_owned(), 1);
     // This is the list of IDs used by rustdoc sections.
     map.insert("fields".to_owned(), 1);
     map.insert("variants".to_owned(), 1);
@@ -1312,7 +1324,6 @@ fn init_id_map() -> FxHashMap<String, usize> {
     map.insert("trait-implementations".to_owned(), 1);
     map.insert("synthetic-implementations".to_owned(), 1);
     map.insert("blanket-implementations".to_owned(), 1);
-    map.insert("deref-methods".to_owned(), 1);
     map
 }