From a9a6b85c5f16430c6493743a0db6d8d390d2f448 Mon Sep 17 00:00:00 2001 From: Shadowfacts Date: Sat, 4 Jan 2025 14:57:52 -0500 Subject: [PATCH] Remove unused markdown stage --- Cargo.lock | 295 --------------------- Cargo.toml | 1 - src/generator/markdown.rs | 4 +- src/generator/markdown/link_decorations.rs | 125 --------- 4 files changed, 1 insertion(+), 424 deletions(-) delete mode 100644 src/generator/markdown/link_decorations.rs diff --git a/Cargo.lock b/Cargo.lock index 8ab6ede..79b61f7 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -390,17 +390,6 @@ dependencies = [ "crypto-common", ] -[[package]] -name = "displaydoc" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "env_filter" version = "0.1.3" @@ -454,15 +443,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "form_urlencoded" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" -dependencies = [ - "percent-encoding", -] - [[package]] name = "fsevent-sys" version = "4.1.0" @@ -825,145 +805,6 @@ dependencies = [ "cc", ] -[[package]] -name = "icu_collections" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locid" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" - -[[package]] -name = "icu_normalizer" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "utf16_iter", - "utf8_iter", - "write16", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" - -[[package]] -name = "icu_properties" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" -dependencies = [ - "displaydoc", - "icu_collections", - "icu_locid_transform", - "icu_properties_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" - -[[package]] -name = "icu_provider" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", - "writeable", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "idna" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - [[package]] name = "ignore" version = "0.4.23" @@ -1099,12 +940,6 @@ dependencies = [ "redox_syscall", ] -[[package]] -name = "litemap" -version = "0.7.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" - [[package]] name = "lock_api" version = "0.4.12" @@ -1696,12 +1531,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "stable_deref_trait" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" - [[package]] name = "string_cache" version = "0.8.7" @@ -1751,17 +1580,6 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" -[[package]] -name = "synstructure" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "tendril" version = "0.4.3" @@ -1815,16 +1633,6 @@ dependencies = [ "syn", ] -[[package]] -name = "tinystr" -version = "0.7.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" -dependencies = [ - "displaydoc", - "zerovec", -] - [[package]] name = "tinyvec" version = "1.8.1" @@ -2113,35 +1921,12 @@ version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" -[[package]] -name = "url" -version = "2.5.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - [[package]] name = "utf-8" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - [[package]] name = "utf8parse" version = "0.2.2" @@ -2184,7 +1969,6 @@ dependencies = [ "tower", "tower-http", "unicode-normalization", - "url", ] [[package]] @@ -2372,18 +2156,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - -[[package]] -name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - [[package]] name = "xml5ever" version = "0.18.1" @@ -2395,30 +2167,6 @@ dependencies = [ "markup5ever", ] -[[package]] -name = "yoke" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" -dependencies = [ - "serde", - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - [[package]] name = "zerocopy" version = "0.7.35" @@ -2439,46 +2187,3 @@ dependencies = [ "quote", "syn", ] - -[[package]] -name = "zerofrom" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" -dependencies = [ - "proc-macro2", - "quote", - "syn", - "synstructure", -] - -[[package]] -name = "zerovec" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] diff --git a/Cargo.toml b/Cargo.toml index 25cc831..e391984 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -49,4 +49,3 @@ toml = "0.8.19" tower = { version = "0.5.2", features = ["steer", "util"] } tower-http = { version = "0.6.2", features = ["fs"] } unicode-normalization = "0.1.24" -url = "2.5.4" diff --git a/src/generator/markdown.rs b/src/generator/markdown.rs index d074e16..37a5e3e 100644 --- a/src/generator/markdown.rs +++ b/src/generator/markdown.rs @@ -2,7 +2,6 @@ mod footnote_backrefs; mod footnote_defs; mod heading_anchors; mod highlight; -mod link_decorations; use pulldown_cmark::{Event, Options, Parser, html}; use std::io::Write; @@ -20,10 +19,9 @@ pub fn parse<'a>(s: &'a str) -> impl Iterator> { let parser = Parser::new_ext(s, options); // TODO: revisit which of these stages are necessary, remove unused (and url crate dep) let heading_anchors = heading_anchors::new(parser); - let link_decorations = link_decorations::new(heading_anchors); // note backrefs need to come before defs, because the defs stage replaces the // Tag::FootnoteDefinition events that the backrefs stage relies on with plain html - let footnote_backrefs = footnote_backrefs::new(link_decorations); + let footnote_backrefs = footnote_backrefs::new(heading_anchors); let footnote_defs = footnote_defs::new(footnote_backrefs); let highlight = highlight::new(footnote_defs); highlight diff --git a/src/generator/markdown/link_decorations.rs b/src/generator/markdown/link_decorations.rs deleted file mode 100644 index f36e113..0000000 --- a/src/generator/markdown/link_decorations.rs +++ /dev/null @@ -1,125 +0,0 @@ -use pulldown_cmark::{CowStr, Event, Tag, TagEnd, html}; -use url::Url; - -pub struct LinkDecorations<'a, I: Iterator>> { - iter: I, -} - -pub fn new<'a, I: Iterator>>(iter: I) -> LinkDecorations<'a, I> { - LinkDecorations { iter } -} - -impl<'a, I: Iterator>> Iterator for LinkDecorations<'a, I> { - type Item = Event<'a>; - - fn next(&mut self) -> Option { - match self.iter.next() { - Some(Event::Start(Tag::Link { - dest_url, title, .. - })) => { - let link = href_to_pretty_link(&dest_url); - let mut s = format!(r#""); - html::push_html(&mut s, LinkContents(&mut self.iter)); - s.push_str(""); - - Some(Event::Html(CowStr::Boxed(s.into_boxed_str()))) - } - e => e, - } - } -} - -struct LinkContents<'a, 'b, I: Iterator>>(&'b mut I); - -impl<'a, 'b, I: Iterator>> Iterator for LinkContents<'a, 'b, I> { - type Item = Event<'a>; - - fn next(&mut self) -> Option { - match self.0.next() { - Some(Event::End(TagEnd::Link)) => None, - e => e, - } - } -} - -fn href_to_pretty_link<'a>(href: &CowStr<'a>) -> CowStr<'a> { - match Url::parse(href) { - Ok(url) => { - let mut s = String::new(); - let host = url.host_str(); - if let Some(h) = host { - if h.starts_with("www.") { - s.push_str(&h[4..]); - } else { - s.push_str(h); - } - } - let path = url.path(); - if path != "/" { - s.push_str(path); - } - - if host.map(|s| s.ends_with("youtube.com")).unwrap_or(false) && path == "/watch" { - s.push('?'); - s.push_str(url.query().unwrap()); - } - - if s.len() > 40 { - s = s.chars().take(40).collect(); - s.push('…'); - } - - CowStr::Boxed(s.into_boxed_str()) - } - Err(_) => { - // if there was an error parsing the url, we just pass it through unchanged - href.clone() - } - } -} - -#[cfg(test)] -mod tests { - use pulldown_cmark::{CowStr, Parser, html}; - - fn pretty_link<'a>(s: &'a str) -> CowStr<'a> { - super::href_to_pretty_link(&CowStr::Borrowed(s)) - } - - fn render(s: &str) -> String { - let mut out = String::new(); - let parser = Parser::new(s); - let heading_anchors = super::new(parser); - html::push_html(&mut out, heading_anchors); - out - } - - #[test] - fn test_href_to_pretty_link() { - assert_eq!( - pretty_link("https://asahilinux.org/2022/03/asahi-linux-alpha-release/").as_ref(), - "asahilinux.org/2022/03/asahi-linux-alpha…" - ); - assert_eq!( - pretty_link("https://www.youtube.com/watch?v=MFzDaBzBlL0").as_ref(), - "youtube.com/watch?v=MFzDaBzBlL0" - ); - assert_eq!( - pretty_link("https://www.youtube.com/watch?v=MFzDaBzBlL0&t=10").as_ref(), - "youtube.com/watch?v=MFzDaBzBlL0&t=10" - ); - } - - #[test] - fn test_link_decorations() { - assert_eq!( - render("[foo](bar)").trim(), - r#"

foo

"# - ); - } -}