aboutsummaryrefslogtreecommitdiff
path: root/src/html.rs
diff options
context:
space:
mode:
authorFuwn <[email protected]>2024-06-19 08:54:32 +0000
committerFuwn <[email protected]>2024-06-19 08:54:32 +0000
commit2dd5ba2602d954aae8af2e23a584214a4dd0b972 (patch)
tree0f262b04ae24bccfd05fdfa57405de77956f3b0e /src/html.rs
parentfeat: bump september (diff)
downloadseptember-2dd5ba2602d954aae8af2e23a584214a4dd0b972.tar.xz
september-2dd5ba2602d954aae8af2e23a584214a4dd0b972.zip
fix(html): replace relative path with absolute path
Diffstat (limited to 'src/html.rs')
-rw-r--r--src/html.rs20
1 files changed, 12 insertions, 8 deletions
diff --git a/src/html.rs b/src/html.rs
index b35e41c..1e85685 100644
--- a/src/html.rs
+++ b/src/html.rs
@@ -4,13 +4,7 @@ fn link_from_host_href(url: &Url, href: &str) -> Option<String> {
Some(format!(
"gemini://{}{}{}",
url.domain()?,
- {
- if href.starts_with('/') {
- ""
- } else {
- "/"
- }
- },
+ { if href.starts_with('/') { "" } else { "/" } },
href
))
}
@@ -73,7 +67,17 @@ pub fn from_gemini(
if href.contains("://") && !href.starts_with("gemini://") {
surface = true;
} else if !href.starts_with("gemini://") && !href.starts_with('/') {
- href = format!("./{href}");
+ href = format!(
+ "{}/{}",
+ url.domain().unwrap(),
+ if url.path().ends_with('/') {
+ format!("{}{}", url.path(), href)
+ } else {
+ format!("{}/{}", url.path(), href)
+ }
+ )
+ .replace("//", "/");
+ href = format!("gemini://{href}");
} else if href.starts_with('/') || !href.contains("://") {
href = link_from_host_href(url, &href)?;
}