Skip to content
Snippets Groups Projects
Commit 365a89ae authored by Semyon Krestyaninov's avatar Semyon Krestyaninov :dog2:
Browse files

wip

parent 91dd9d5e
No related branches found
No related tags found
No related merge requests found
......@@ -9,24 +9,25 @@ import (
"git.perx.ru/perxis/perxis-go/pkg/errors"
)
// TemplateExecutor выполняет шаблоны, используя заданные данные.
type TemplateExecutor struct {
env map[string]any
data map[string]any
funcMap template.FuncMap
}
func NewTemplateExecutor(env map[string]any) *TemplateExecutor {
func NewTemplateExecutor(data map[string]any) *TemplateExecutor {
te := &TemplateExecutor{
env: env,
data: data,
}
te.init()
return te
}
func (exec *TemplateExecutor) init() {
if exec.env == nil {
exec.env = make(map[string]any)
if exec.data == nil {
exec.data = make(map[string]any)
}
delete(exec.env, "Error")
delete(exec.data, "Error")
exec.funcMap = template.FuncMap{
"error": exec.errorFunc,
......@@ -42,7 +43,7 @@ func (exec *TemplateExecutor) Execute(_ context.Context, input string) (string,
buf := getBuffer()
defer releaseBuffer(buf)
err = templ.Execute(buf, exec.env)
err = templ.Execute(buf, exec.data)
if err != nil {
return "", err
}
......@@ -56,12 +57,12 @@ func (exec *TemplateExecutor) Execute(_ context.Context, input string) (string,
}
func (exec *TemplateExecutor) IsCanceled() bool {
_, ok := exec.env["Error"]
_, ok := exec.data["Error"]
return ok
}
func (exec *TemplateExecutor) errorFunc(text string) (string, error) {
exec.env["Error"] = text
exec.data["Error"] = text
return "", errors.New(text)
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment