From f25e3befc4636cd96f2a53a93e60296b465b766a Mon Sep 17 00:00:00 2001 From: Fuwn Date: Wed, 19 Jun 2024 07:52:02 +0000 Subject: feat: CONDENSE_LINKS_AT_HEADINGS configuration option --- src/html.rs | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/html.rs b/src/html.rs index 07d979e..ae7dc41 100644 --- a/src/html.rs +++ b/src/html.rs @@ -52,9 +52,20 @@ pub fn from_gemini( links.contains(&url.path().to_string()) || links.contains(&"*".to_string()) }; + let mut in_condense_links_flag_trap = true; + let condensible_headings_value = + var("CONDENSE_LINKS_AT_HEADINGS").unwrap_or_default(); + let condensible_headings = + condensible_headings_value.split(',').collect::>(); for node in ast { - if previous_link && (!matches!(node, Node::Link { .. }) || !condense_links) + if condensible_headings.contains(&node.to_gemtext().as_str()) { + in_condense_links_flag_trap = true; + } + + if previous_link + && (!matches!(node, Node::Link { .. }) + || (!condense_links && !in_condense_links_flag_trap)) { html.push_str("\n

"); previous_link = false; @@ -173,6 +184,10 @@ pub fn from_gemini( )); } Node::Heading { level, text } => { + if !condensible_headings.contains(&node.to_gemtext().as_str()) { + in_condense_links_flag_trap = false; + } + if title.is_empty() && *level == 1 { title = safe(&text.clone()).to_string(); } -- cgit v1.2.3