diff options
| author | Fuwn <[email protected]> | 2024-06-19 07:52:02 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2024-06-19 07:52:02 +0000 |
| commit | f25e3befc4636cd96f2a53a93e60296b465b766a (patch) | |
| tree | fa0d091292c6baea33da2eb22f5899a0f905a410 /src | |
| parent | feat(response): PLAIN_TEXT_ROUTES wildcard matching (diff) | |
| download | september-f25e3befc4636cd96f2a53a93e60296b465b766a.tar.xz september-f25e3befc4636cd96f2a53a93e60296b465b766a.zip | |
feat: CONDENSE_LINKS_AT_HEADINGS configuration option
Diffstat (limited to 'src')
| -rw-r--r-- | src/html.rs | 17 |
1 files changed, 16 insertions, 1 deletions
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::<Vec<_>>(); 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</p>"); 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(); } |