mirror of
https://github.com/pocketbase/pocketbase.git
synced 2025-03-21 22:49:42 +02:00
34 lines
624 B
Go
34 lines
624 B
Go
|
package template
|
||
|
|
||
|
import (
|
||
|
"bytes"
|
||
|
"errors"
|
||
|
"html/template"
|
||
|
)
|
||
|
|
||
|
// Renderer defines a single parsed template.
|
||
|
type Renderer struct {
|
||
|
template *template.Template
|
||
|
parseError error
|
||
|
}
|
||
|
|
||
|
// Render executes the template with the specified data as the dot object
|
||
|
// and returns the result as plain string.
|
||
|
func (r *Renderer) Render(data any) (string, error) {
|
||
|
if r.parseError != nil {
|
||
|
return "", r.parseError
|
||
|
}
|
||
|
|
||
|
if r.template == nil {
|
||
|
return "", errors.New("invalid or nil template")
|
||
|
}
|
||
|
|
||
|
buf := new(bytes.Buffer)
|
||
|
|
||
|
if err := r.template.Execute(buf, data); err != nil {
|
||
|
return "", err
|
||
|
}
|
||
|
|
||
|
return buf.String(), nil
|
||
|
}
|