diff options
author | Nguyễn Gia Phong <mcsinyx@disroot.org> | 2022-06-28 12:17:25 +0900 |
---|---|---|
committer | Nguyễn Gia Phong <mcsinyx@disroot.org> | 2022-06-28 12:17:25 +0900 |
commit | e405d3f244d074f00658e020795a90ec3f69add7 (patch) | |
tree | 6f83f87d024ec64596d87032dfe45e33d559f8b8 /main.go | |
parent | 4fa6f1621b406ce58b91a4ae9a58b392d78b7008 (diff) | |
download | phylactery-e405d3f244d074f00658e020795a90ec3f69add7.tar.gz |
Escape question marks in path
Fixes: https://todo.sr.ht/~cnx/phylactery/1
Diffstat (limited to 'main.go')
-rw-r--r-- | main.go | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/main.go b/main.go index 4dbf016..42db6d2 100644 --- a/main.go +++ b/main.go @@ -44,8 +44,8 @@ type Page struct { type Archive struct { Title string - Prev template.URL - Next template.URL + Prev string + Next string Entries []Page } @@ -54,6 +54,10 @@ type Directory struct { Entries []string } +func escape(name string) template.URL { + return template.URL(strings.Replace(name, "?", "%3f", -1)) +} + func find(entries []os.DirEntry, name string) int { for i, entry := range entries { if entry.Name() == name { @@ -65,7 +69,9 @@ func find(entries []os.DirEntry, name string) int { func main() { http.Handle("/static/", http.FileServer(http.FS(static))) - t, err := template.ParseFS(templates, "templates/*.html") + t, err := template.New("").Funcs(template.FuncMap{ + "escape": escape, + }).ParseFS(templates, "templates/*.html") if err != nil { log.Fatal(err) } @@ -138,19 +144,16 @@ func main() { } } - prev := ""; + prev := "" if index > 0 { prev = entries[index-1].Name() } - next := ""; - if index < len(entries) - 1 { + next := "" + if index < len(entries)-1 { next = entries[index+1].Name() } t.ExecuteTemplate(w, "archive.html", Archive{ - stat.Name(), - template.URL(prev), - template.URL(next), - pages, + stat.Name(), prev, next, pages, }) }) |