-
Notifications
You must be signed in to change notification settings - Fork 1
/
template.go
46 lines (38 loc) · 1.07 KB
/
template.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
package gopie
import (
"path"
"text/template"
"github.com/eugenezinoviev/gopie/assets"
)
const rootTemplateFile = "assets/template.root.svg"
var childTemplates = []string{
"assets/template.background.svg",
"assets/template.circle.svg",
"assets/template.circle.mask.svg",
"assets/template.slice.svg",
"assets/template.slice.mask.svg",
"assets/template.slice.label.svg",
"assets/template.font.svg",
}
func createSvgTemplate() (tpl *template.Template, err error) {
tpl, err = createRootTemplate()
for _, filename := range childTemplates {
if err = appendTemplate(tpl, filename); err != nil {
return
}
}
return
}
func createRootTemplate() (tpl *template.Template, err error) {
rootTemplate := assets.GetFileContent(rootTemplateFile)
funcs := template.FuncMap{
"derefCircle": func(c *circle) circle { return *c },
}
tpl, err = template.New("root").Funcs(funcs).Parse(rootTemplate)
return
}
func appendTemplate(t *template.Template, filename string) error {
_, p := path.Split(filename)
_, err := t.New(p).Parse(assets.GetFileContent(filename))
return err
}