-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathhtml.go
66 lines (52 loc) · 1.01 KB
/
html.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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
package template
import (
"html/template"
"io"
"text/template/parse"
)
type htmlTemp struct {
*template.Template
}
/**
newHtml 新建基于 "html/template" 的共享模板.
*/
func newHtml() executor {
return htmlTemp{
Template: template.New(shareName),
}
}
func (t htmlTemp) AddParseTree(tree *parse.Tree) (executor, error) {
nt, err := t.Template.New(tree.Name).AddParseTree(tree.Name, tree)
if err != nil {
return nil, err
}
if t.Template.Tree == nil {
t.Template = nt
return t, nil
}
return htmlTemp{
Template: nt,
}, nil
}
func (t htmlTemp) Execute(
p *Template, wr io.Writer, data interface{}) error {
return t.Template.Execute(wr, data)
}
func (t htmlTemp) Funcs(funcMap FuncMap) {
t.Template.Funcs(template.FuncMap(funcMap))
}
func (t htmlTemp) Lookup(name string) executor {
nt := t.Template.Lookup(name)
if nt == nil {
return nil
}
return htmlTemp{
Template: nt,
}
}
func (t htmlTemp) Kind() Kind {
return HTML
}
func (t htmlTemp) Tree() *parse.Tree {
return t.Template.Tree
}