package handler import ( "io" "log/slog" "net/http" "os" "github.com/gomarkdown/markdown" "github.com/gomarkdown/markdown/html" "github.com/gomarkdown/markdown/parser" "git.gabrielgio.me/cerrado/templates" ) type AboutHandler struct { readmePath string } func NewAboutHandler(readmePath string) *AboutHandler { return &AboutHandler{readmePath} } func (g *AboutHandler) About(w http.ResponseWriter, _ *http.Request) { f, err := os.Open(g.readmePath) if err != nil { slog.Error("Error loading readme file", "error", err) return } bs, err := io.ReadAll(f) if err != nil { slog.Error("Error reading readme file bytes", "error", err) return } extensions := parser.CommonExtensions | parser.AutoHeadingIDs | parser.NoEmptyLineBeforeBlock p := parser.NewWithExtensions(extensions) doc := p.Parse(bs) htmlFlags := html.CommonFlags | html.HrefTargetBlank opts := html.RendererOptions{Flags: htmlFlags} renderer := html.NewRenderer(opts) bs = markdown.Render(doc, renderer) gitList := &templates.HelloPage{ Body: bs, } templates.WritePageTemplate(w, gitList) }