12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- package tpl
- import (
- "bytes"
- "html/template"
- "path/filepath"
- "strings"
- "git.clearsky.net.au/cody/gex.git/srv"
- "git.clearsky.net.au/cody/gex.git/utils"
- )
- type Props map[string]any
- type Funcs = template.FuncMap
- func include(req *srv.Req, props Props, funcs Funcs) {}
- var Include = include
- func Render(fp string, req *srv.Req, propFunc ...interface{}) string {
- if !strings.Contains(fp, "app/") {
- fp = utils.Cwd(2) + "/" + fp
- }
- fp = strings.Replace(fp, ".tpl", ".gen.tpl", 1)
- var props = Props{}
- var funcs = Funcs{}
- if len(propFunc) > 0 {
- props = propFunc[0].(Props)
- }
- if len(propFunc) > 1 {
- funcs = propFunc[1].(Funcs)
- }
- Include(req, props, funcs)
- tmpl, err := template.
- New(filepath.Base(fp)).
- Funcs(funcs).
- ParseFiles(fp)
- if err != nil {
- return err.Error()
- }
- var buf bytes.Buffer
- err = tmpl.Execute(&buf, props)
- if err != nil {
- return err.Error()
- }
- html := buf.String()
- return html
- }
|