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;
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]`).
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![];
}
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();
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 });
}
}
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);
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
}