summaryrefslogtreecommitdiff
path: root/internal/summary
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2025-01-19 10:00:22 +0200
committerPaul Buetow <paul@buetow.org>2025-01-19 10:00:22 +0200
commit828eec5d98e278816731de13c2121045f9aabdb9 (patch)
tree36704398dfe2bc7978f22a107472ece7202eb920 /internal/summary
parente2b241d40ef1b4ded9b922dc195a72aa2b546a4d (diff)
fix internal links
Diffstat (limited to 'internal/summary')
-rw-r--r--internal/summary/summary.go3
-rw-r--r--internal/summary/summary_test.go9
2 files changed, 7 insertions, 5 deletions
diff --git a/internal/summary/summary.go b/internal/summary/summary.go
index 50fbc22..16e1db6 100644
--- a/internal/summary/summary.go
+++ b/internal/summary/summary.go
@@ -153,9 +153,10 @@ func gemtextLink(geminiCapsule, url string, maxLen int) string {
url = strings.TrimSpace(url)
urlNoProto := regexp.MustCompile(`^[a-zA-Z]+://`).ReplaceAllString(url, "")
+ // Is tttttis an internal link? If so, replace PROTO:// with gemini://
if strings.HasPrefix(urlNoProto, geminiCapsule) &&
(strings.HasPrefix(url, "http://") || strings.HasPrefix(url, "https://")) {
- // This is an internal link, so replace proto with gemini://
+ urlNoProto = strings.ReplaceAll(urlNoProto, ".html", ".gmi")
url = "gemini://" + urlNoProto
}
diff --git a/internal/summary/summary_test.go b/internal/summary/summary_test.go
index 4b33609..2b038c5 100644
--- a/internal/summary/summary_test.go
+++ b/internal/summary/summary_test.go
@@ -9,10 +9,11 @@ func TestGemtextLink(t *testing.T) {
"http://example.com": "=> http://example.com example.com",
"https://example.org": "=> https://example.org example.org",
"https://example.org/some/very/long/link/here?with=a&free=of&parameters=here": "=> https://example.org/some/very/long/link/here?with=a&free=of&parameters=here example.org/s...rameters=here",
- "http://foo.zone": "=> gemini://foo.zone foo.zone",
- "https://foo.zone": "=> gemini://foo.zone foo.zone",
- "beer://foo.zone": "=> beer://foo.zone foo.zone",
- "https://foo.zone/some/very/long/link/here?with=a&free=of&parameters=here": "=> gemini://foo.zone/some/very/long/link/here?with=a&free=of&parameters=here foo.zone/some...rameters=here",
+
+ "beer://foo.zone": "=> beer://foo.zone foo.zone",
+ "http://foo.zone": "=> gemini://foo.zone foo.zone",
+ "https://foo.zone/index.html": "=> gemini://foo.zone/index.gmi foo.zone/index.gmi",
+ "https://foo.zone/gemtext/this-is-awesome.html": "=> gemini://foo.zone/gemtext/this-is-awesome.gmi foo.zone/gemt...s-awesome.gmi",
}
for url, expected := range table {