forked from aymerick/raymond
-
Notifications
You must be signed in to change notification settings - Fork 10
/
raymond.go
42 lines (34 loc) · 1.12 KB
/
raymond.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// Package raymond provides handlebars evaluation
package raymond
import "github.com/sirupsen/logrus"
var log *logrus.Entry
func init() {
log = logrus.NewEntry(logrus.StandardLogger())
}
// SetLogger allows the user to set a customer logger adding the ability to add custom fields to
// the log entries.
func SetLogger(entry *logrus.Entry) {
log = entry
}
// Render parses a template and evaluates it with given context
//
// Note that this function call is not optimal as your template is parsed everytime you call it. You should use Parse() function instead.
func Render(source string, ctx interface{}) (string, error) {
// parse template
tpl, err := Parse(source)
if err != nil {
return "", err
}
// renders template
str, err := tpl.Exec(ctx)
if err != nil {
return "", err
}
return str, nil
}
// MustRender parses a template and evaluates it with given context. It panics on error.
//
// Note that this function call is not optimal as your template is parsed everytime you call it. You should use Parse() function instead.
func MustRender(source string, ctx interface{}) string {
return MustParse(source).MustExec(ctx)
}