-
Notifications
You must be signed in to change notification settings - Fork 0
/
fn_color.go
153 lines (145 loc) · 4.36 KB
/
fn_color.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
// Package tpl
package tpl
import (
"fmt"
"strings"
kitModuleDye "github.com/webnice/kit/v3/module/dye"
kmll "github.com/webnice/kit/v3/module/log/level"
)
func (ses *session) colorByLevel() (fg kitModuleDye.Interface, bg kitModuleDye.Interface) {
var (
lm map[kmll.Level]colorAnsiStyle
style colorAnsiStyle
ok bool
)
lm = map[kmll.Level]colorAnsiStyle{
kmll.Fatal: {Bg: kitModuleDye.New().Background().Red(), Fg: kitModuleDye.New().Bright().Yellow()},
kmll.Alert: {Bg: kitModuleDye.New().Background().Magenta(), Fg: kitModuleDye.New().Bright().White()},
kmll.Critical: {Bg: kitModuleDye.New().Background().Blue(), Fg: kitModuleDye.New().Bright().Magenta()},
kmll.Error: {Bg: kitModuleDye.New().Background().Black(), Fg: kitModuleDye.New().Bright().Red()},
kmll.Warning: {Bg: kitModuleDye.New().Background().Black(), Fg: kitModuleDye.New().Bright().Yellow()},
kmll.Notice: {Bg: kitModuleDye.New().Background().Black(), Fg: kitModuleDye.New().Green()},
kmll.Info: {Bg: kitModuleDye.New().Background().Black(), Fg: kitModuleDye.New().White()},
kmll.Debug: {Bg: kitModuleDye.New().Background().Black(), Fg: kitModuleDye.New().Cyan()},
kmll.Trace: {Bg: kitModuleDye.New().Background().Black(), Fg: kitModuleDye.New().Bright().White()},
}
if style, ok = lm[ses.Data.Level]; ok {
fg, bg = style.Fg, style.Bg
}
return
}
// Функция шаблонизатора для управления цветом.
func (ses *session) fnColorSet(dst string, opt string, brc string) (ret string) {
const tplBadParam = "не верный параметр %q"
const (
tagSet, tagReset = "set", "reset"
tagAll, tagLevel = "all", "level"
tagText, tagBack = "text", "back"
tagNormal, tagBright = "normal", "bright"
tagBlack, tagRed, tagGreen, tagYellow = "black", "red", "green", "yellow"
tagBlue, tagMagenta, tagCyan, tagWhite = "blue", "magenta", "cyan", "white"
tagBold, tagFaded, tagItalic = "bold", "faded", "italic"
tagUnderline, tagReverse, tagCrossout = "underline", "reverse", "crossout"
)
var (
err error
seq, styleFg, styleBg kitModuleDye.Interface
isBask bool
)
seq, dst, opt, brc = kitModuleDye.New(), strings.ToLower(dst), strings.ToLower(opt), strings.ToLower(brc)
switch dst {
case tagAll:
switch opt {
case tagLevel:
styleFg, styleBg = ses.colorByLevel()
seq.Add(styleFg.Source()...).Add(styleBg.Source()...)
}
case tagText:
seq.Foreground()
case tagBack:
isBask = true
seq.Background()
case tagSet:
switch opt {
case tagBold:
ret = seq.Bold().Done().String()
case tagFaded:
ret = seq.Faded().Done().String()
case tagItalic:
ret = seq.Italic().Done().String()
case tagUnderline:
ret = seq.Underline().Done().String()
case tagReverse:
ret = seq.Reverse().Done().String()
case tagCrossout:
ret = seq.CrossOut().Done().String()
default:
ret = fmt.Sprintf(tplBadParam, dst)
}
return
case tagReset:
switch opt {
case tagAll:
ret = seq.Reset().Done().String()
case tagBold:
ret = seq.ResetBold().Done().String()
case tagFaded:
ret = seq.ResetFaded().Done().String()
case tagItalic:
ret = seq.ResetItalic().Done().String()
case tagUnderline:
ret = seq.ResetUnderline().Done().String()
case tagReverse:
ret = seq.ResetReverse().Done().String()
case tagCrossout:
ret = seq.ResetCrossOut().Done().String()
default:
ret = fmt.Sprintf(tplBadParam, dst)
}
return
default:
ret = fmt.Sprintf(tplBadParam, dst)
return
}
switch brc {
case tagBright:
seq.Bright()
case tagNormal:
seq.Normal()
default:
seq.Normal()
}
switch opt {
case tagLevel:
styleFg, styleBg = ses.colorByLevel()
switch isBask {
case true:
seq.Add(styleBg.Source()...) // Цвет фона зависящий от уровня логирования.
default:
seq.Add(styleFg.Source()...) // Цвет текста зависящий от уровня логирования.
}
case tagBlack:
seq.Black()
case tagRed:
seq.Red()
case tagGreen:
seq.Green()
case tagYellow:
seq.Yellow()
case tagBlue:
seq.Blue()
case tagMagenta:
seq.Magenta()
case tagCyan:
seq.Cyan()
case tagWhite:
seq.White()
default:
if err = seq.HexRgb(opt); err != nil {
ret = err.Error()
return
}
}
ret = seq.Done().String()
return
}