/
go-tpl-funcs.go
77 lines (67 loc) 路 2.44 KB
/
go-tpl-funcs.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
67
68
69
70
71
72
73
74
75
76
77
package style
import (
"strings"
"text/template"
"github.com/muesli/termenv"
"go.szostok.io/version/style/termenvx"
)
func (r *GoTemplateRender) styleFuncMap() template.FuncMap {
return template.FuncMap{
"Header": r.header,
"Key": r.key,
"Extra": r.extra,
"Val": r.val,
"AdjustKeyWidth": r.adjustKeyWidth,
"FmtDate": r.fmtDate,
"FmtDateHumanized": r.fmtDateHumanized,
"FmtBool": r.fmtBool,
}
}
func (r *GoTemplateRender) generalHelpersFuncMap() template.FuncMap {
return template.FuncMap{
"Commit": r.commit,
}
}
func (r *GoTemplateRender) termenvColorFuncMap() template.FuncMap {
return template.FuncMap{
// Foreground colors
"Black": r.colorSprintf(termenvx.ColorsMapping["Black"]),
"Red": r.colorSprintf(termenvx.ColorsMapping["Red"]),
"Green": r.colorSprintf(termenvx.ColorsMapping["Green"]),
"Yellow": r.colorSprintf(termenvx.ColorsMapping["Yellow"]),
"Blue": r.colorSprintf(termenvx.ColorsMapping["Blue"]),
"Magenta": r.colorSprintf(termenvx.ColorsMapping["Magenta"]),
"Cyan": r.colorSprintf(termenvx.ColorsMapping["Cyan"]),
"White": r.colorSprintf(termenvx.ColorsMapping["White"]),
"Gray": r.colorSprintf(termenvx.ColorsMapping["Gray"]),
// Background colors
"BgBlack": r.bgColorSprintf(termenvx.ColorsMapping["Black"]),
"BgRed": r.bgColorSprintf(termenvx.ColorsMapping["Red"]),
"BgGreen": r.bgColorSprintf(termenvx.ColorsMapping["Green"]),
"BgYellow": r.bgColorSprintf(termenvx.ColorsMapping["Yellow"]),
"BgBlue": r.bgColorSprintf(termenvx.ColorsMapping["Blue"]),
"BgMagenta": r.bgColorSprintf(termenvx.ColorsMapping["Magenta"]),
"BgCyan": r.bgColorSprintf(termenvx.ColorsMapping["Cyan"]),
"BgWhite": r.bgColorSprintf(termenvx.ColorsMapping["White"]),
"BgGray": r.bgColorSprintf(termenvx.ColorsMapping["Gray"]),
}
}
func (r *GoTemplateRender) colorSprintf(c termenv.Color) func(in ...string) string {
return func(in ...string) string {
return termenv.
String().
Foreground(r.colorProfile.Convert(c)).
Styled(strings.Join(in, " "))
}
}
func (r *GoTemplateRender) bgColorSprintf(c termenv.Color) func(in ...string) string {
return func(in ...string) string {
return termenv.
String().
Background(r.colorProfile.Convert(c)).
Styled(strings.Join(in, " "))
}
}
func (r *GoTemplateRender) termenvHelpersFuncMap() template.FuncMap {
return termenvx.TemplateFuncs(r.colorProfile)
}