diff --git a/templates/pongo/engine.go b/templates/pongo/engine.go
index eaee220..bf71a23 100644
--- a/templates/pongo/engine.go
+++ b/templates/pongo/engine.go
@@ -62,25 +62,11 @@ func (c *pongoComponent) Render(ctx context.Context, w io.Writer) error {
// {{ site_settings }} — bn.SiteSettingsData struct
// {{ page_meta }} — bn.PageMeta struct
func (e *Engine) MustPageTemplate(name string) templates.TemplateFunc {
- fn, err := e.PageTemplate(name)
- if err != nil {
- panic(err)
- }
- return fn
-}
-
-// PageTemplate is MustPageTemplate without the panic — for hosts compiling
-// artifact-supplied templates at load time (a malformed artifact must fail
-// the load, not the process).
-func (e *Engine) PageTemplate(name string) (templates.TemplateFunc, error) {
- tpl, err := e.set.FromFile(name)
- if err != nil {
- return nil, err
- }
+ tpl := pongo2.Must(e.set.FromFile(name))
return func(ctx context.Context, doc map[string]any) templates.HTMLComponent {
pongoCtx := e.buildPageContext(ctx, doc)
return &pongoComponent{tpl: tpl, ctx: pongoCtx}
- }, nil
+ }
}
// MustBlockTemplate parses a pongo2 block template and returns a BlockFunc.
@@ -89,19 +75,7 @@ func (e *Engine) PageTemplate(name string) (templates.TemplateFunc, error) {
// The content map fields are available directly as template variables.
// Request context is available under {{ ctx.url }}, {{ ctx.isEditor }}, etc.
func (e *Engine) MustBlockTemplate(name string) blocks.BlockFunc {
- fn, err := e.BlockTemplate(name)
- if err != nil {
- panic(err)
- }
- return fn
-}
-
-// BlockTemplate is MustBlockTemplate without the panic (see PageTemplate).
-func (e *Engine) BlockTemplate(name string) (blocks.BlockFunc, error) {
- tpl, err := e.set.FromFile(name)
- if err != nil {
- return nil, err
- }
+ tpl := pongo2.Must(e.set.FromFile(name))
return func(ctx context.Context, content map[string]any) string {
pongoCtx := buildBlockContext(ctx, content)
out, err := tpl.Execute(pongoCtx)
@@ -109,7 +83,7 @@ func (e *Engine) BlockTemplate(name string) (blocks.BlockFunc, error) {
return ""
}
return blocks.ProcessIcons(out)
- }, nil
+ }
}
// MustBlockTemplateWithDefaults is like MustBlockTemplate but merges default
@@ -155,19 +129,7 @@ func (e *Engine) MustTemplateOverride(name string) blocks.BlockFunc {
// {{ colors.muted }} — muted hex color
// (and all other EmailColors fields as lowercase keys)
func (e *Engine) MustEmailWrapper(name string) templates.EmailWrapperFunc {
- fn, err := e.EmailWrapper(name)
- if err != nil {
- panic(err)
- }
- return fn
-}
-
-// EmailWrapper is MustEmailWrapper without the panic (see PageTemplate).
-func (e *Engine) EmailWrapper(name string) (templates.EmailWrapperFunc, error) {
- tpl, err := e.set.FromFile(name)
- if err != nil {
- return nil, err
- }
+ tpl := pongo2.Must(e.set.FromFile(name))
return func(body string, ctx templates.EmailContext) string {
pongoCtx := pongo2.Context{
"body": body,
@@ -196,7 +158,7 @@ func (e *Engine) EmailWrapper(name string) (templates.EmailWrapperFunc, error) {
return body
}
return out
- }, nil
+ }
}
// renderComponent renders any HTMLComponent to a string.
diff --git a/templates/pongo/engine_test.go b/templates/pongo/engine_test.go
deleted file mode 100644
index 67d4ee5..0000000
--- a/templates/pongo/engine_test.go
+++ /dev/null
@@ -1,66 +0,0 @@
-package pongo
-
-import (
- "strings"
- "testing"
- "testing/fstest"
-
- "git.dev.alexdunmow.com/block/core/templates"
-)
-
-func TestNonPanickingCompileVariants(t *testing.T) {
- fsys := fstest.MapFS{
- "templates/theme/default.ninjatpl": {Data: []byte(`
x
", ectx); got != "