From a2feb8c63c80a1f52830f562af2deb2c6065eaae Mon Sep 17 00:00:00 2001 From: Alan Pearce Date: Mon, 24 Jun 2024 21:48:36 +0200 Subject: move templ templates into separate package --- internal/builder/404.templ | 13 ------ internal/builder/builder.go | 13 +++--- internal/builder/homepage.templ | 42 ----------------- internal/builder/list.templ | 51 -------------------- internal/builder/page.templ | 101 ---------------------------------------- internal/builder/post.templ | 51 -------------------- internal/builder/tags.templ | 23 --------- internal/builder/template.go | 12 ++--- 8 files changed, 13 insertions(+), 293 deletions(-) delete mode 100644 internal/builder/404.templ delete mode 100644 internal/builder/homepage.templ delete mode 100644 internal/builder/list.templ delete mode 100644 internal/builder/page.templ delete mode 100644 internal/builder/post.templ delete mode 100644 internal/builder/tags.templ (limited to 'internal/builder') diff --git a/internal/builder/404.templ b/internal/builder/404.templ deleted file mode 100644 index 049e67d..0000000 --- a/internal/builder/404.templ +++ /dev/null @@ -1,13 +0,0 @@ -package builder - -import "website/internal/config" - -templ notFound(config config.Config, path string) { - @page(config, PageSettings{ - Title: "Not Found", - Path: path, - }) { -

404

-

ʕノ•ᴥ•ʔノ ︵ ┻━┻

- } -} diff --git a/internal/builder/builder.go b/internal/builder/builder.go index 20714b9..933679d 100644 --- a/internal/builder/builder.go +++ b/internal/builder/builder.go @@ -14,6 +14,7 @@ import ( "website/internal/content" "website/internal/log" "website/internal/sitemap" + "website/templates" "github.com/a-h/templ" mapset "github.com/deckarep/golang-set/v2" @@ -127,7 +128,7 @@ func build(outDir string, config config.Config) (*Result, error) { } log.Debug("rendering post", "post", post.Basename) sitemap.AddPath(post.URL, post.Date) - if err := renderToFile(postPage(config, post), post.Output); err != nil { + if err := renderToFile(templates.PostPage(config, post), post.Output); err != nil { return nil, err } } @@ -136,7 +137,7 @@ func build(outDir string, config config.Config) (*Result, error) { return nil, errors.WithMessage(err, "could not create directory for tags") } log.Debug("rendering tags list") - if err := renderToFile(tagsPage(config, "tags", mapset.Sorted(tags), "/tags"), publicDir, "tags", "index.html"); err != nil { + if err := renderToFile(templates.TagsPage(config, "tags", mapset.Sorted(tags), "/tags"), publicDir, "tags", "index.html"); err != nil { return nil, err } sitemap.AddPath("/tags/", lastMod) @@ -153,7 +154,7 @@ func build(outDir string, config config.Config) (*Result, error) { } log.Debug("rendering tags page", "tag", tag) url := "/tags/" + tag - if err := renderToFile(tagPage(config, tag, matchingPosts, url), publicDir, "tags", tag, "index.html"); err != nil { + if err := renderToFile(templates.TagPage(config, tag, matchingPosts, url), publicDir, "tags", tag, "index.html"); err != nil { return nil, err } sitemap.AddPath(url, matchingPosts[0].Date) @@ -174,7 +175,7 @@ func build(outDir string, config config.Config) (*Result, error) { } log.Debug("rendering list page") - if err := renderToFile(listPage(config, posts, "/post"), publicDir, "post", "index.html"); err != nil { + if err := renderToFile(templates.ListPage(config, posts, "/post"), publicDir, "post", "index.html"); err != nil { return nil, err } sitemap.AddPath("/post/", lastMod) @@ -215,7 +216,7 @@ func build(outDir string, config config.Config) (*Result, error) { if err != nil { return nil, err } - if err := renderToFile(homepage(config, posts, content), publicDir, "index.html"); err != nil { + if err := renderToFile(templates.Homepage(config, posts, content), publicDir, "index.html"); err != nil { return nil, err } // it would be nice to set LastMod here, but using the latest post @@ -226,7 +227,7 @@ func build(outDir string, config config.Config) (*Result, error) { r.Hashes = append(r.Hashes, h) log.Debug("rendering 404 page") - if err := renderToFile(notFound(config, "/404.html"), privateDir, "404.html"); err != nil { + if err := renderToFile(templates.NotFound(config, "/404.html"), privateDir, "404.html"); err != nil { return nil, err } diff --git a/internal/builder/homepage.templ b/internal/builder/homepage.templ deleted file mode 100644 index 848b9ed..0000000 --- a/internal/builder/homepage.templ +++ /dev/null @@ -1,42 +0,0 @@ -package builder - -import ( - "website/internal/config" - "website/internal/content" -) - -templ homepage(config config.Config, posts []content.Post, content string) { - @page(config, PageSettings{ - Title: config.Title, - TitleAttrs: templ.Attributes{ - "class": "p-name u-url", - }, - Path: "/", - BodyAttrs: templ.Attributes{ - "class": "h-card", - }, - }) { -
- @Unsafe(content) -
-
-

Latest Posts

- @list(posts[0:3]) -
-
-

Elsewhere on the Internet

- -
- } -} diff --git a/internal/builder/list.templ b/internal/builder/list.templ deleted file mode 100644 index 24cafe8..0000000 --- a/internal/builder/list.templ +++ /dev/null @@ -1,51 +0,0 @@ -package builder - -import ( - "website/internal/config" - "website/internal/content" -) - -templ tagPage(config config.Config, tag string, posts []content.Post, path string) { - @page(config, PageSettings{ - Title: tag, - Path: path, - TitleAttrs: templ.Attributes{ - "class": "p-author h-card", - "rel": "author", - }, - }) { -
-

#{ tag }

- - Remove filter - -
- @list(posts) - } -} - -templ listPage(config config.Config, posts []content.Post, path string) { - @page(config, PageSettings{ - Title: config.Title, - TitleAttrs: templ.Attributes{ - "class": "p-author h-card", - "rel": "author", - }, - Path: path, - }) { - @list(posts) - } -} - -templ list(posts []content.Post) { - -} diff --git a/internal/builder/page.templ b/internal/builder/page.templ deleted file mode 100644 index 9a2be2f..0000000 --- a/internal/builder/page.templ +++ /dev/null @@ -1,101 +0,0 @@ -package builder - -import ( - "net/url" - "website/internal/config" -) - -type PageSettings struct { - Title string - Path string - TitleAttrs templ.Attributes - BodyAttrs templ.Attributes -} - -func extendClasses(cs string, attrs templ.Attributes) string { - if extras, exists := attrs["class"]; exists { - return templ.Classes(cs, extras).String() - } else { - return cs - } -} - -templ menuItem(item config.MenuItem) { - { item.Name } -} - -templ page(site config.Config, page PageSettings) { - - - - - - { page.Title } - - @style(css) - - - -
-

- { site.Title } -

- -
-
- { children... } -
- - @counter(page.Path, page.Title) - if site.InjectLiveReload { - - } - - -} - -func mkURL(path string, title string) string { - u, err := url.Parse("https://alanpearce-eu.goatcounter.com/count") - if err != nil { - panic(err) - } - q := u.Query() - q.Add("p", path) - q.Add("t", title) - u.RawQuery = q.Encode() - - return u.String() -} - -templ counter(path string, title string) { - - -} - -func style(css string) templ.Component { - return templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) { - _, err = io.WriteString(w, "") - return - }) -} diff --git a/internal/builder/post.templ b/internal/builder/post.templ deleted file mode 100644 index 6f12e5c..0000000 --- a/internal/builder/post.templ +++ /dev/null @@ -1,51 +0,0 @@ -package builder - -import ( - "time" - "website/internal/config" - "website/internal/content" -) - -func Unsafe(html string) templ.Component { - return templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) { - _, err = io.WriteString(w, html) - return - }) -} - -templ postDate(d time.Time) { - -} - -templ postPage(config config.Config, post content.Post) { - @page(config, PageSettings{ - Title: post.Title, - TitleAttrs: templ.Attributes{ - "class": "p-author h-card", - "rel": "author", - }, - Path: post.URL, - }) { -
-

{ post.Title }

-

- @postDate(post.Date) -

-
- @Unsafe(post.Content) -
-
- Tags: - -
-
- } -} diff --git a/internal/builder/tags.templ b/internal/builder/tags.templ deleted file mode 100644 index 14abca4..0000000 --- a/internal/builder/tags.templ +++ /dev/null @@ -1,23 +0,0 @@ -package builder - -import "website/internal/config" - -templ tagLink(tag string, attrs templ.Attributes) { - #{ tag } -} - -templ tagsPage(config config.Config, title string, tags []string, path string) { - @page(config, PageSettings{ - Title: title, - Path: path, - }) { -

Tags

- - } -} diff --git a/internal/builder/template.go b/internal/builder/template.go index 53199fc..5ec963a 100644 --- a/internal/builder/template.go +++ b/internal/builder/template.go @@ -21,9 +21,9 @@ import ( ) var ( - css string - templates = make(map[string]*os.File) - nsMap = map[string]string{ + css string + templateFiles = make(map[string]*os.File) + nsMap = map[string]string{ "xsl": "http://www.w3.org/1999/XSL/Transform", "atom": "http://www.w3.org/2005/Atom", "xhtml": "http://www.w3.org/1999/xhtml", @@ -39,14 +39,14 @@ func loadCSS() { } func loadTemplate(path string) (file *os.File, err error) { - if templates[path] == nil { + if templateFiles[path] == nil { file, err = os.OpenFile(path, os.O_RDONLY, 0) if err != nil { return nil, errors.Wrapf(err, "could not load template at path %s", path) } - templates[path] = file + templateFiles[path] = file } - file = templates[path] + file = templateFiles[path] return } -- cgit 1.4.1