feat: blog post titles
This commit is contained in:
12
app.go
12
app.go
@@ -8,6 +8,7 @@ import (
|
||||
"io/fs"
|
||||
"log/slog"
|
||||
"net/http"
|
||||
"regexp"
|
||||
"slices"
|
||||
"sort"
|
||||
"strings"
|
||||
@@ -219,13 +220,24 @@ func (r *blogPostRenderer) Name() string {
|
||||
return "capytal-blogpostrenderer-renderer"
|
||||
}
|
||||
|
||||
var re = regexp.MustCompile(`<h1>(.*?)</h1>`)
|
||||
|
||||
func (r *blogPostRenderer) Render(src fs.File, w io.Writer) error {
|
||||
c, err := io.ReadAll(src)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
m := re.FindStringSubmatch(string(c))
|
||||
|
||||
title := "Blog"
|
||||
if len(m) > 1 {
|
||||
t := strings.TrimSuffix(strings.TrimPrefix(m[0], "<h1>"), "</h1>")
|
||||
title = fmt.Sprintf("%s - Capytal's Blog", t)
|
||||
}
|
||||
|
||||
return r.templates.ExecuteTemplate(w, "blog-post", map[string]any{
|
||||
"Title": title,
|
||||
"Lang": r.lang,
|
||||
"Content": template.HTML(string(c)),
|
||||
})
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{{define "blog-post"}}
|
||||
{{template "layout-page-start" (args "Title" "Capytal")}}
|
||||
{{template "layout-page-start" (args "Title" .Title)}}
|
||||
<div class="h-full w-full pt-[30vh]">
|
||||
{{template "nav-bar" (args "Lang" .Lang)}}
|
||||
<main class="mx-10 text-justify md:mx-auto md:w-[80%]" id="blog-post">
|
||||
|
||||
Reference in New Issue
Block a user