diff --git a/code-gen/renderer-templates/main.go b/code-gen/renderer-templates/main.go index 52c315b1..05a1e5b9 100644 --- a/code-gen/renderer-templates/main.go +++ b/code-gen/renderer-templates/main.go @@ -15,21 +15,37 @@ const ( sgmlRenderer = `package sgml import ( + "fmt" "sync" - text "text/template" + "strings" + texttemplate "text/template" + + log "github.com/sirupsen/logrus" ) type sgmlRenderer struct { templates Templates - functions text.FuncMap + functions texttemplate.FuncMap {{ range $i, $tmpl := . }} {{ once $tmpl}} sync.Once - {{ tmpl $tmpl}} *text.Template + {{ tmpl $tmpl}} *texttemplate.Template {{ end }} } type template func() (*texttemplate.Template, error) +func (r *sgmlRenderer) execute(tmpl template, data interface{}) (string, error) { + result := &strings.Builder{} + t, err := tmpl() + if err != nil { + return "", err + } + if err := t.Execute(result, data); err != nil { + return "", err + } + return result.String(), nil +} + func (r *sgmlRenderer) newTemplate(name string, tmpl string, err error) (*texttemplate.Template, error) { // NB: if the data is missing below, it will be an empty string. if err != nil { @@ -48,7 +64,7 @@ func (r *sgmlRenderer) newTemplate(name string, tmpl string, err error) (*textte } {{ range $i, $tmpl := . }} -func (r *sgmlRenderer) {{ func $tmpl }} (*text.Template, error) { +func (r *sgmlRenderer) {{ func $tmpl }} (*texttemplate.Template, error) { var err error r.{{ once $tmpl }}.Do(func() { r.{{ tmpl $tmpl }}, err = r.newTemplate("{{ $tmpl }}", r.templates.{{ $tmpl }}, err) diff --git a/pkg/renderer/sgml/sgml_renderer.go b/pkg/renderer/sgml/sgml_renderer.go index 69a10ada..f084f74d 100644 --- a/pkg/renderer/sgml/sgml_renderer.go +++ b/pkg/renderer/sgml/sgml_renderer.go @@ -6,7 +6,6 @@ import ( "sync" texttemplate "text/template" - "github.com/pkg/errors" log "github.com/sirupsen/logrus" ) @@ -245,6 +244,18 @@ type sgmlRenderer struct { type template func() (*texttemplate.Template, error) +func (r *sgmlRenderer) execute(tmpl template, data interface{}) (string, error) { + result := &strings.Builder{} + t, err := tmpl() + if err != nil { + return "", err + } + if err := t.Execute(result, data); err != nil { + return "", err + } + return result.String(), nil +} + func (r *sgmlRenderer) newTemplate(name string, tmpl string, err error) (*texttemplate.Template, error) { // NB: if the data is missing below, it will be an empty string. if err != nil { @@ -262,19 +273,6 @@ func (r *sgmlRenderer) newTemplate(name string, tmpl string, err error) (*textte return t, nil } -func (s *sgmlRenderer) execute(loadTmpl template, data interface{}) (string, error) { - tmpl, err := loadTmpl() - result := &strings.Builder{} - if err != nil { - return "", errors.Wrap(err, "unable to load template") - } - if err := tmpl.Execute(result, data); err != nil { - return "", err - } - return result.String(), nil - -} - func (r *sgmlRenderer) admonitionBlock() (*texttemplate.Template, error) { var err error r.admonitionBlockOnce.Do(func() {