func (t *Template) Exec(ctx *Context) (string, error) {
	err := t.Parse()
	if err != nil {
		return "", err
	}
	ev := compiler{
		ctx:     ctx,
		program: t.program,
	}
	s, err := ev.compile()
	return s, err
}
Exec the template using the content and return the results
package plush
import (
	"github.com/gobuffalo/plush/ast"
	"github.com/gobuffalo/plush/parser"
	"github.com/pkg/errors"
)
type Template struct {
	Input   string
	program *ast.Program
}
func NewTemplate(input string) (*Template, error) {
	t := &Template{
		Input: input,
	}
	err := t.Parse()
	if err != nil {
		return t, errors.WithStack(err)
	}
	return t, nil
}
func (t *Template) Parse() error {
	if t.program != nil {
		return nil
	}
	program, err := parser.Parse(t.Input)
	if err != nil {
		return errors.WithStack(err)
	}
	t.program = program
	return nil
}