package assets
import (
	"embed"
	"html/template"
	"io"
	"io/ioutil"
	"io/fs"
	"os"
)
type assetsfs struct {
	embedded  *embed.FS
	templates map[string]*template.Template
}
var FS assetsfs
func (afs assetsfs) Open(name string) (fs.File, error) {
	if afs.embedded != nil {
		return afs.embedded.Open(name)
	}
	return os.DirFS("assets").Open(name)
}
func Render(path string, writer io.Writer, data interface{}) {
	var tmpl *template.Template
	tmpl, found := FS.templates[path]
	if !found {
		tmpl = template.Must(template.New(path).Delims("{%", "%}").Funcs(template.FuncMap{
			"inline": func(svg string) template.HTML {
				svgfile, _ := FS.Open("graphicarts/" + svg)
				content, _ := ioutil.ReadAll(svgfile)
				svgfile.Close()
				return template.HTML(content)
			},
		}).ParseFS(FS, path))
		FS.templates[path] = tmpl
	}
	tmpl.Execute(writer, data)
}
func init() {
	FS.templates = make(map[string]*template.Template)
}