package mark2web import ( "log" "github.com/flosch/pongo2" ) var templateCache = make(map[string]*pongo2.Template) var templateDir string // SetTemplateDir sets base directory for searching template files func SetTemplateDir(dir string) { templateDir = dir } // renderTemplate renders a pongo2 template with context func renderTemplate(filename string, node *TreeNode, pathConfig *PathConfig, ctx *pongo2.Context) (string, error) { CurrentContext = ctx CurrentTreeNode = node CurrentPathConfig = pathConfig templateFile := templateDir + "/" + filename template := templateCache[templateFile] if template == nil { var err error if template, err = pongo2.FromFile(templateFile); err != nil { log.Panicf("could not parse template '%s': %s", templateFile, err) } else { templateCache[templateFile] = template } } return template.Execute(*ctx) }