diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2018-02-18 13:37:52 -0800 |
|---|---|---|
| committer | Manish Goregaokar <manishsmail@gmail.com> | 2018-02-18 17:57:06 -0800 |
| commit | f60aeec5d564cf3ca0628db55abb8c62276e102f (patch) | |
| tree | 4dce6a8f936d17c6c11dc010c4a54f4a0d1530d0 | |
| parent | 6818551c6f3a434752d0322fce03d594513b5ebd (diff) | |
| download | rust-f60aeec5d564cf3ca0628db55abb8c62276e102f.tar.gz rust-f60aeec5d564cf3ca0628db55abb8c62276e102f.zip | |
Include shortcut links in markdown_links
| -rw-r--r-- | src/librustdoc/html/markdown.rs | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs index fedd802ce55..bc7d1066ba4 100644 --- a/src/librustdoc/html/markdown.rs +++ b/src/librustdoc/html/markdown.rs @@ -731,18 +731,30 @@ pub fn markdown_links(md: &str) -> Vec<String> { opts.insert(OPTION_ENABLE_TABLES); opts.insert(OPTION_ENABLE_FOOTNOTES); - let p = Parser::new_ext(md, opts); - - let iter = Footnotes::new(HeadingLinks::new(p, None)); let mut links = vec![]; + let shortcut_links = RefCell::new(vec![]); + + { + let push = |_: &str, s: &str| { + shortcut_links.borrow_mut().push(s.to_owned()); + None + }; + let p = Parser::new_with_broken_link_callback(md, opts, + Some(&push)); - for ev in iter { - if let Event::Start(Tag::Link(dest, _)) = ev { - debug!("found link: {}", dest); - links.push(dest.into_owned()); + let iter = Footnotes::new(HeadingLinks::new(p, None)); + + for ev in iter { + if let Event::Start(Tag::Link(dest, _)) = ev { + debug!("found link: {}", dest); + links.push(dest.into_owned()); + } } } + let mut shortcut_links = shortcut_links.into_inner(); + links.extend(shortcut_links.drain(..)); + links } |
