@@ -7,33 +7,55 @@ import (
77 "html/template"
88)
99
10- func Render (ctx context.Context , r AsRenderable ) (template.HTML , error ) {
10+ func RenderToHTML (ctx context.Context , r Renderable , errHandler any ) (template.HTML , error ) {
11+ var empty template.HTML
12+
1113 if r == nil {
12- return template .HTML ("" ), nil
14+ return empty , nil
15+ }
16+
17+ out , err := r .RenderToHTML (ctx )
18+ if err != nil {
19+ return handleRenderError (ctx , err , errHandler )
20+ }
21+
22+ return out , nil
23+ }
24+
25+ func Render (ctx context.Context , v AsRenderable ) (template.HTML , error ) {
26+ var empty template.HTML
27+
28+ if v == nil {
29+ return empty , nil
1330 }
1431
15- renderable , err := r .Renderable (ctx )
32+ r , err := v .Renderable (ctx )
1633 if err != nil {
17- return handleRenderError (ctx , err , r )
34+ return handleRenderError (ctx , err , v )
1835 }
1936
20- out , err := renderable . RenderToHTML (ctx )
37+ out , err := RenderToHTML (ctx , r , v )
2138 if err != nil {
22- return handleRenderError ( ctx , err , r )
39+ return empty , err
2340 }
2441
2542 return out , nil
2643}
2744
28- func RenderToHTML (tpl * template.Template , data any ) (template.HTML , error ) {
45+ type TemplateRenderable struct {
46+ Tpl * template.Template
47+ Data any
48+ }
49+
50+ func (v TemplateRenderable ) RenderToHTML (_ context.Context ) (template.HTML , error ) {
2951 var empty template.HTML
3052
31- if tpl == nil {
53+ if v . Tpl == nil {
3254 return empty , fmt .Errorf ("missing template" )
3355 }
3456
3557 var bs bytes.Buffer
36- if err := tpl . Execute (& bs , data ); err != nil {
58+ if err := v . Tpl . Execute (& bs , v . Data ); err != nil {
3759 return empty , fmt .Errorf ("tpl.Execute(): %w" , err )
3860 }
3961
0 commit comments