package core

import (
	"bytes"
	"dbweb/lib/lsession"
	"dbweb/lib/tempext"
	"text/template"
)

var filltmp = template.New("_fill")

//ExecuteFill 执行一个表达式
func ExecuteFill(exp string, data map[string]interface{}, user *User, s *lsession.Session) (result string, err error) {
	var t *template.Template
	if t = filltmp.Lookup(exp); t == nil {
		t = filltmp.New(exp).Funcs(tempext.GetFuncMap())
		if _, err = t.Parse(exp); err != nil {
			return
		}
	}
	bys := bytes.NewBuffer(nil)
	if err = t.Execute(bys, map[string]interface{}{
		"User":     user,
		"LSession": s,
		"Data":     data,
	}); err != nil {
		return
	}
	result = bys.String()
	return
}
