package engine import ( "context" "fmt" "io" "gitoa.ru/go-4devs/mime" "gitoa.ru/go-4devs/templating/render" ) func NewEncode(name string, encode func(w io.Writer, data interface{}) error, ext ...mime.Ext) Encode { return Encode{ name: name, encode: encode, formats: ext, } } type Encode struct { encode func(w io.Writer, data interface{}) error name string formats []mime.Ext } func (e Encode) Support(_ context.Context, reference render.Reference) bool { return Support(reference, e.name, e.formats...) } func (e Encode) Load(context.Context, render.Reference) (render.Execute, error) { return func(_ context.Context, wr io.Writer, data interface{}, _ render.Params) error { if err := e.encode(wr, data); err != nil { return fmt.Errorf("%s engine:%w", e.name, err) } return nil }, nil }