/*
SGBlog -- Git-backed CGI/UCSPI blogging/phlogging/gemlogging engine
-Copyright (C) 2020-2021 Sergey Matveev <stargrave@stargrave.org>
+Copyright (C) 2020-2022 Sergey Matveev <stargrave@stargrave.org>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
import (
"bufio"
+ _ "embed"
"errors"
"fmt"
"io"
"go.stargrave.org/sgblog"
)
-const (
- TmplGemMenu = `{{$CR := printf "\r"}}20 text/gemini{{$CR}}
-# {{.Cfg.Title}} {{if .Topic}}(topic: {{.Topic}}) {{end}}({{.Offset}}-{{.OffsetNext}})
-{{if .Cfg.AboutURL}}=> {{.Cfg.AboutURL}} About{{end}}
-{{if .Offset}}=> /?offset={{.OffsetPrev}}{{if .Topic}}&topic={{.Topic}}{{end}} Prev{{end}}
-{{if not .LogEnded}}=> /?offset={{.OffsetNext}}{{if .Topic}}&topic={{.Topic}}{{end}} Next{{end}}
+var (
+ //go:embed gemini-menu.tmpl
+ TmplGemMenuRaw string
+ //go:embed gemini-entry.tmpl
+ TmplGemEntryRaw string
-{{$datePrev := "0001-01-01" -}}
-{{- range .Entries -}}
-{{- $dateCur := .Commit.Author.When.Format "2006-01-02" -}}
-{{- if ne $dateCur $datePrev}}{{$datePrev = $dateCur}}## {{$dateCur}}
-{{end -}}
-=> /{{.Commit.Hash.String}} [{{.Commit.Author.When.Format "15:04"}}] {{.Title}} ({{.LinesNum}}L){{with .CommentsNum}} ({{.}}C){{end}}{{if .Topics}}{{range .Topics}} {{.}}{{end}}{{end}}
-{{end}}
-
-{{range .Topics -}}=> /?topic={{.}} Topic: {{.}}
-{{end}}
-Generated by: SGBlog {{.Version}}
-`
- TmplGemEntry = `{{$CR := printf "\r"}}20 text/gemini{{$CR}}
-# {{.Title}}
-What: {{.Commit.Hash.String}}
-When: {{.When}}
-{{if .Topics}}Topics:{{range .Topics}} {{.}}{{end}}{{end}}
-` + "```" + `
-{{.Commit.Message}}` + "```" + `
-{{- if .Note}}
-## Note:
-` + "```" + `
-{{.Note}}
-` + "```" + `
-{{end -}}
-{{- if .Cfg.CommentsEmail}}
-=> mailto:{{.Cfg.CommentsEmail}}?subject={{.TitleEscaped}} leave comment
-{{end}}{{range $idx, $comment := .Comments}}
-## comment {{$idx}}:
-` + "```" + `
-{{$comment}}
-` + "```" + `
-{{end}}
-Generated by: SGBlog {{.Version}}
-`
+ TmplGemMenu = template.Must(template.New("menu").Parse(TmplGemMenuRaw))
+ TmplGemEntry = template.Must(template.New("entry").Parse(TmplGemEntryRaw))
)
func makeGemErr(err error) {
)),
})
}
- tmpl := template.Must(template.New("menu").Parse(TmplGemMenu))
offsetPrev := offset - PageEntries
if offsetPrev < 0 {
offsetPrev = 0
}
- err = tmpl.Execute(os.Stdout, struct {
+ err = TmplGemMenu.Execute(os.Stdout, struct {
Cfg *Cfg
Topic string
Offset int
if err != nil {
log.Fatalln(err)
}
- tmpl := template.Must(template.New("entry").Parse(TmplGemEntry))
title := msgSplit(commit.Message)[0]
- err = tmpl.Execute(os.Stdout, struct {
+ err = TmplGemEntry.Execute(os.Stdout, struct {
Title string
Commit *object.Commit
When string