diff options
author | Ben Bridle <bridle.benjamin@gmail.com> | 2025-01-18 13:53:45 +1300 |
---|---|---|
committer | Ben Bridle <bridle.benjamin@gmail.com> | 2025-01-18 13:54:19 +1300 |
commit | 7dfb8d68c1f596c16702d30ad619160f1a2ecb44 (patch) | |
tree | 5ef88c31d02a3ee9df0a66fc10316420819d2465 | |
parent | 3765c30ef322c31456aa419e970955330a1461ad (diff) | |
download | toaster-7dfb8d68c1f596c16702d30ad619160f1a2ecb44.zip |
Fix mailto: links
These were previously being detected only if they begin with ://, which
is incorrect and generates incorrect links.
-rw-r--r-- | src/generate_html.rs | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/generate_html.rs b/src/generate_html.rs index 9533410..86341e6 100644 --- a/src/generate_html.rs +++ b/src/generate_html.rs @@ -292,7 +292,17 @@ fn line_to_html(line: &Line, page: &Page, website: &Website) -> String { let mut path = path.to_owned(); let mut label = label.to_string(); - if !path.contains("://") { + let mut is_internal = true; + for protocol in ["mailto:", "http://", "https://"] { + if let Some(stripped) = path.strip_prefix(protocol) { + is_internal = false; + if label.is_empty() { + label = stripped.to_string(); + } + } + + } + if is_internal { // Check that the linked static file exists. match website.has_static(page, &path) { Some(resolved_path) => path = resolved_path, @@ -305,13 +315,8 @@ fn line_to_html(line: &Line, page: &Page, website: &Website) -> String { None => path.clone(), }; } - } else if label.is_empty() { - for protocol in ["mailto://", "http://", "https://"] { - if let Some(stripped) = path.strip_prefix(protocol) { - label = stripped.to_string(); - } - } } + let label = sanitize_text(&label); html.push_str(&format!("<a href='{path}' class='external'>{label}</a>")); } |