vise/go/resource/render.go

41 lines
844 B
Go
Raw Normal View History

package resource
import (
"bytes"
"fmt"
"log"
"text/template"
)
2023-04-06 13:08:30 +02:00
// DefaultRenderTemplate is an adapter to implement the builtin golang text template renderer as resource.RenderTemplate.
func DefaultRenderTemplate(r Resource, sym string, values map[string]string, idx uint16, sizer *Sizer) (string, error) {
v, err := r.GetTemplate(sym, nil)
if err != nil {
return "", err
}
if sizer != nil {
values, err = sizer.GetAt(values, idx)
} else if idx > 0 {
return "", fmt.Errorf("sizer needed for indexed render")
}
log.Printf("render for index: %v", idx)
if err != nil {
return "", err
}
tp, err := template.New("tester").Option("missingkey=error").Parse(v)
if err != nil {
return "", err
}
b := bytes.NewBuffer([]byte{})
err = tp.Execute(b, values)
if err != nil {
return "", err
}
return b.String(), err
}