30 lines
719 B
Go
30 lines
719 B
Go
package static
|
|
|
|
import (
|
|
"embed"
|
|
"encoding/json"
|
|
"html/template"
|
|
)
|
|
|
|
//go:embed "templates/*.html"
|
|
var templates embed.FS
|
|
|
|
var (
|
|
shared *template.Template = template.Must(template.ParseFS(templates, "templates/*.html"))
|
|
)
|
|
|
|
// NewSharedTemplate creates a new template with the given name.
|
|
// It will be able to make use of shared templates as well as functions.
|
|
func NewSharedTemplate(name string) *template.Template {
|
|
new := template.New(name)
|
|
new.Funcs(template.FuncMap{
|
|
"json": func(data any) (string, error) {
|
|
bytes, err := json.Marshal(data)
|
|
return string(bytes), err
|
|
},
|
|
})
|
|
for _, template := range shared.Templates() {
|
|
new.AddParseTree(template.Tree.Name, template.Tree.Copy())
|
|
}
|
|
return new
|
|
}
|