-
Notifications
You must be signed in to change notification settings - Fork 0
/
flags.go
61 lines (51 loc) · 1.12 KB
/
flags.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
package timber
import (
"sort"
"strings"
)
const (
FlagColorful = 1 << iota
FlagFileName
FlagFileProject
FlagTitle
FlagFileAbsolute
FlagNone = 0
)
var (
flagNames = map[int]string{
FlagNone: "FlagNone",
FlagColorful: "FlagColorful",
FlagFileName: "FlagFileName",
FlagFileProject: "FlagFileProject",
FlagTitle: "FlagTitle",
FlagFileAbsolute: "FlagFileAbsolute",
}
flagValues = map[string]int{
"FlagNone": FlagNone,
"FlagColorful": FlagColorful,
"FlagFileName": FlagFileName,
"FlagFileProject": FlagFileProject,
"FlagTitle": FlagTitle,
"FlagFileAbsolute": FlagFileAbsolute,
}
)
func FlagsToString(flags int) string {
found := []string{}
for key, value := range flagNames {
if flags&key != 0 {
found = append(found, value)
}
}
sort.Strings(found)
return strings.Join(found, "|")
}
func StringToFlags(flags string) int {
found := strings.Split(flags, "|")
bitwise := 0
for _, value := range found {
value = strings.TrimSpace(value)
value = strings.TrimPrefix(value, "timber.")
bitwise = bitwise | flagValues[value]
}
return bitwise
}