From e559066bed54fd679ce853b7280ec131ad03dbf7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lauren=C8=9Biu=20Nicola?= Date: Tue, 13 Oct 2020 20:31:23 +0300 Subject: Bump pulldown-cmark --- Cargo.lock | 8 ++++---- crates/ide/Cargo.toml | 4 ++-- crates/ide/src/doc_links.rs | 25 ++++++++++++++----------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b890b6e19..bcd89f3a8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1191,9 +1191,9 @@ dependencies = [ [[package]] name = "pulldown-cmark" -version = "0.7.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca36dea94d187597e104a5c8e4b07576a8a45aa5db48a65e12940d3eb7461f55" +checksum = "ffade02495f22453cd593159ea2f59827aae7f53fa8323f756799b670881dcf8" dependencies = [ "bitflags", "memchr", @@ -1202,9 +1202,9 @@ dependencies = [ [[package]] name = "pulldown-cmark-to-cmark" -version = "5.0.0" +version = "6.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32accf4473121d8c0b508ca5673363703762d6cc59cf25af1df48f653346f736" +checksum = "e8f2b9878102358ec65434fdd1a9a161f8648bb2f531acc9260e4d094c96de23" dependencies = [ "pulldown-cmark", ] diff --git a/crates/ide/Cargo.toml b/crates/ide/Cargo.toml index f0257403d..29dc9a6a8 100644 --- a/crates/ide/Cargo.toml +++ b/crates/ide/Cargo.toml @@ -16,8 +16,8 @@ itertools = "0.9.0" log = "0.4.8" rustc-hash = "1.1.0" oorandom = "11.1.2" -pulldown-cmark-to-cmark = "5.0.0" -pulldown-cmark = {version = "0.7.2", default-features = false} +pulldown-cmark-to-cmark = "6.0.0" +pulldown-cmark = { version = "0.8.0", default-features = false } url = "2.1.1" stdx = { path = "../stdx", version = "0.0.0" } diff --git a/crates/ide/src/doc_links.rs b/crates/ide/src/doc_links.rs index 06af36b73..db3f911c8 100644 --- a/crates/ide/src/doc_links.rs +++ b/crates/ide/src/doc_links.rs @@ -1,9 +1,10 @@ //! Resolves and rewrites links in markdown documentation. +use std::convert::TryFrom; use std::iter::once; use itertools::Itertools; -use pulldown_cmark::{CowStr, Event, LinkType, Options, Parser, Tag}; +use pulldown_cmark::{BrokenLink, CowStr, Event, InlineStr, LinkType, Options, Parser, Tag}; use pulldown_cmark_to_cmark::{cmark_with_options, Options as CmarkOptions}; use url::Url; @@ -24,11 +25,13 @@ pub type DocumentationLink = String; /// Rewrite documentation links in markdown to point to an online host (e.g. docs.rs) pub fn rewrite_links(db: &RootDatabase, markdown: &str, definition: &Definition) -> String { - let doc = Parser::new_with_broken_link_callback( - markdown, - Options::empty(), - Some(&|label, _| Some((/*url*/ label.to_string(), /*title*/ label.to_string()))), - ); + let mut cb = |link: BrokenLink| { + Some(( + /*url*/ link.reference.to_owned().into(), + /*title*/ link.reference.to_owned().into(), + )) + }; + let doc = Parser::new_with_broken_link_callback(markdown, Options::empty(), Some(&mut cb)); let doc = map_links(doc, |target, title: &str| { // This check is imperfect, there's some overlap between valid intra-doc links @@ -66,11 +69,11 @@ pub fn remove_links(markdown: &str) -> String { let mut opts = Options::empty(); opts.insert(Options::ENABLE_FOOTNOTES); - let doc = Parser::new_with_broken_link_callback( - markdown, - opts, - Some(&|_, _| Some((String::new(), String::new()))), - ); + let mut cb = |_: BrokenLink| { + let empty = InlineStr::try_from("").unwrap(); + Some((CowStr::Inlined(empty.clone()), CowStr::Inlined(empty))) + }; + let doc = Parser::new_with_broken_link_callback(markdown, opts, Some(&mut cb)); let doc = doc.filter_map(move |evt| match evt { Event::Start(Tag::Link(link_type, ref target, ref title)) => { if link_type == LinkType::Inline && target.contains("://") { -- cgit v1.2.3