From c772716e98e11181d301deadeca52856ac18f085 Mon Sep 17 00:00:00 2001 From: Feuerfuchs Date: Mon, 18 May 2020 18:51:19 +0200 Subject: Improved Gemini support --- internal/port/gopher.go | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'internal/port/gopher.go') diff --git a/internal/port/gopher.go b/internal/port/gopher.go index d2283c6..cb5e60c 100644 --- a/internal/port/gopher.go +++ b/internal/port/gopher.go @@ -49,10 +49,14 @@ func trimLeftChars(s string, n int) string { return s[:0] } -func urlToNav(url string) (items []GopherNavItem) { +func urlToGopherNav(url string) (items []GopherNavItem) { partialURL := "/gopher" parts := strings.Split(url, "/") + if len(parts) != 0 && parts[len(parts)-1] == "" { + parts = parts[:len(parts)-1] + } + for i, part := range parts { if i == 1 { partialURL = partialURL + "/1" @@ -151,7 +155,7 @@ func renderGopherDirectory(w http.ResponseWriter, tpl *template.Template, assetL URL: fmt.Sprintf("%s/%s", hostport, uri), Assets: assetList, Lines: out, - Nav: urlToNav(fmt.Sprintf("%s/%s", hostport, uri)), + Nav: urlToGopherNav(fmt.Sprintf("%s/%s", hostport, uri)), }) } @@ -194,7 +198,7 @@ func GopherHandler(tpl *template.Template, robotsdata *robotstxt.RobotsData, ass Lines: []GopherItem{{ Text: fmt.Sprintf("Error: %s", err), }}, - Nav: urlToNav(hostport), + Nav: urlToGopherNav(hostport), IsPlain: true, }); e != nil { log.Println("Template error: " + e.Error()) @@ -224,7 +228,7 @@ func GopherHandler(tpl *template.Template, robotsdata *robotstxt.RobotsData, ass Lines: []GopherItem{{ Text: fmt.Sprintf("Error: %s", err), }}, - Nav: urlToNav(fmt.Sprintf("%s/%s", hostport, uri)), + Nav: urlToGopherNav(fmt.Sprintf("%s/%s", hostport, uri)), IsPlain: true, }); e != nil { log.Println("Template error: " + e.Error()) @@ -246,7 +250,7 @@ func GopherHandler(tpl *template.Template, robotsdata *robotstxt.RobotsData, ass Lines: []GopherItem{{ Text: buf.String(), }}, - Nav: urlToNav(fmt.Sprintf("%s/%s", hostport, uri)), + Nav: urlToGopherNav(fmt.Sprintf("%s/%s", hostport, uri)), IsPlain: true, }); err != nil { log.Println("Template error: " + err.Error()) @@ -271,7 +275,7 @@ func GopherHandler(tpl *template.Template, robotsdata *robotstxt.RobotsData, ass Lines: []GopherItem{{ Text: fmt.Sprintf("Error: %s", err), }}, - Nav: urlToNav(fmt.Sprintf("%s/%s", hostport, uri)), + Nav: urlToGopherNav(fmt.Sprintf("%s/%s", hostport, uri)), IsPlain: false, }); e != nil { log.Println("Template error: " + e.Error()) -- cgit v1.3.1