GitHub

ztpl contains functiosn to deal with Go's text/template and html/template.

Import as zgo.at/ztpl; API docs: https://godocs.io/zgo.at/ztpl

What you can do with this:

  • You can set up templates with ztpl.Init(), which can then be reloaded from the filesystem with ztpl.Reload(), e.g. with github.com/teamwork/reload:

    ztpl.Init("tpl", pack.Templates)
    go func() {
        err := reload.Do(zlog.Module("main").Debugf, reload.Dir("./tpl", ztpl.Reload))
        if err != nil {
            panic(errors.Errorf("reload.Do: %v", err))
        }
    }()

    Simple replacing a templates variable introduces race conditions, this takes care of that.

    This also automatically runs either text/template or html/template depending on the file extension (.gotxt or .gohtml).

  • Trace template execution with Trace()/TestTemplateExecution(), as a kind of poor-man code coverage.

  • Additional template functions in tplfunc/.

TODO:

  • Proper coverage support.

  • Compile templates to Go code. Especially things like tight loops are surprisingly slow.

  • A template format tool, like the (unfinished) https://github.com/gotpl/gtfmt

Although, maybe it makes more sense to use https://github.com/valyala/quicktemplate or https://github.com/a-h/templ

Read the original on github.com ↗