-
Notifications
You must be signed in to change notification settings - Fork 0
/
context.go
31 lines (25 loc) · 1.01 KB
/
context.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
package templates
import (
"context"
htmltemplate "html/template"
texttemplate "text/template"
)
var (
ctxRender = struct{ s string }{"render"}
)
// WithContext returns context with render value
func WithContext[T templateIfaceTypes[TT, FM], TT templateTypes, FM ~map[string]any](ctx context.Context, render *render[T, TT, FM]) context.Context {
return context.WithValue(ctx, ctxRender, render)
}
// FromContext returns render from context
func FromContext[T templateIfaceTypes[TT, FM], TT templateTypes, FM ~map[string]any](ctx context.Context) *render[T, TT, FM] {
return ctx.Value(ctxRender).(*render[T, TT, FM])
}
// FromContextHTML returns render from context
func FromContextHTML(ctx context.Context) *HTMLRender {
return FromContext[*htmltemplate.Template, htmltemplate.Template, htmltemplate.FuncMap](ctx)
}
// FromContextPlain returns render from context
func FromContextPlain(ctx context.Context) *PlainRender {
return FromContext[*texttemplate.Template, texttemplate.Template, texttemplate.FuncMap](ctx)
}