summaryrefslogtreecommitdiff
path: root/src/gmi
diff options
context:
space:
mode:
authorBrian Picciano <mediocregopher@gmail.com>2024-05-26 21:43:49 +0200
committerBrian Picciano <mediocregopher@gmail.com>2024-05-26 21:43:49 +0200
commit006c0028106425abb3f718b2e86349dee5b7a2ea (patch)
tree47381f28793d97010fe60938eb7684a886dc885b /src/gmi
parent43d8951296ce2f232ca94f0577e2e726291bf783 (diff)
Refactor how preprocess functions work a bit
Diffstat (limited to 'src/gmi')
-rw-r--r--src/gmi/posts_preprocess_funcs.go26
-rw-r--r--src/gmi/tpl.go24
2 files changed, 31 insertions, 19 deletions
diff --git a/src/gmi/posts_preprocess_funcs.go b/src/gmi/posts_preprocess_funcs.go
new file mode 100644
index 0000000..f8fcda6
--- /dev/null
+++ b/src/gmi/posts_preprocess_funcs.go
@@ -0,0 +1,26 @@
+package gmi
+
+import (
+ "fmt"
+
+ "dev.mediocregopher.com/mediocre-blog.git/src/render"
+)
+
+type postPreprocessFuncs struct {
+ urlBuilder render.URLBuilder
+}
+
+func (f postPreprocessFuncs) Image(args ...string) (string, error) {
+ var (
+ id = args[0]
+ descr = "Image"
+ )
+
+ if len(args) > 1 {
+ descr = args[1]
+ }
+
+ return fmt.Sprintf(
+ "\n=> %s %s", f.urlBuilder.Asset(id), descr,
+ ), nil
+}
diff --git a/src/gmi/tpl.go b/src/gmi/tpl.go
index fb62a17..5ea114d 100644
--- a/src/gmi/tpl.go
+++ b/src/gmi/tpl.go
@@ -34,24 +34,10 @@ var tplFS embed.FS
func (a *api) tplHandler() (gemini.Handler, error) {
- preprocessFuncs := post.PreprocessFunctions{
- Image: func(args ...string) (string, error) {
- var (
- id = args[0]
- descr = "Image"
- )
-
- if len(args) > 1 {
- descr = args[1]
- }
-
- return fmt.Sprintf(
- "\n=> %s %s", a.urlBuilder.Asset(id), descr,
- ), nil
- },
- }
-
- allTpls := template.New("")
+ var (
+ postPreprocessFuncs = postPreprocessFuncs{a.urlBuilder}
+ allTpls = template.New("")
+ )
err := fs.WalkDir(tplFS, "tpl", func(path string, d fs.DirEntry, err error) error {
@@ -122,7 +108,7 @@ func (a *api) tplHandler() (gemini.Handler, error) {
a.params.PostStore,
nil, // asset.Store, not supported by gemini endpoint
nil, // post.DraftStore, not supported by gemini endpoint
- preprocessFuncs,
+ postPreprocessFuncs,
))
if errors.Is(err, post.ErrPostNotFound) {