main
1package ansi
2
3// Modes represents the terminal modes that can be set or reset. By default,
4// all modes are [ModeNotRecognized].
5type Modes map[Mode]ModeSetting
6
7// NewModes creates a new Modes map. By default, all modes are
8// [ModeNotRecognized].
9func NewModes() Modes {
10 return make(Modes)
11}
12
13// Get returns the setting of a terminal mode. If the mode is not set, it
14// returns [ModeNotRecognized].
15func (m Modes) Get(mode Mode) ModeSetting {
16 return m[mode]
17}
18
19// Delete deletes a terminal mode. This has the same effect as setting the mode
20// to [ModeNotRecognized].
21func (m Modes) Delete(mode Mode) {
22 delete(m, mode)
23}
24
25// Set sets a terminal mode to [ModeSet].
26func (m Modes) Set(modes ...Mode) {
27 for _, mode := range modes {
28 m[mode] = ModeSet
29 }
30}
31
32// PermanentlySet sets a terminal mode to [ModePermanentlySet].
33func (m Modes) PermanentlySet(modes ...Mode) {
34 for _, mode := range modes {
35 m[mode] = ModePermanentlySet
36 }
37}
38
39// Reset sets a terminal mode to [ModeReset].
40func (m Modes) Reset(modes ...Mode) {
41 for _, mode := range modes {
42 m[mode] = ModeReset
43 }
44}
45
46// PermanentlyReset sets a terminal mode to [ModePermanentlyReset].
47func (m Modes) PermanentlyReset(modes ...Mode) {
48 for _, mode := range modes {
49 m[mode] = ModePermanentlyReset
50 }
51}
52
53// IsSet returns true if the mode is set to [ModeSet] or [ModePermanentlySet].
54func (m Modes) IsSet(mode Mode) bool {
55 return m[mode].IsSet()
56}
57
58// IsPermanentlySet returns true if the mode is set to [ModePermanentlySet].
59func (m Modes) IsPermanentlySet(mode Mode) bool {
60 return m[mode].IsPermanentlySet()
61}
62
63// IsReset returns true if the mode is set to [ModeReset] or [ModePermanentlyReset].
64func (m Modes) IsReset(mode Mode) bool {
65 return m[mode].IsReset()
66}
67
68// IsPermanentlyReset returns true if the mode is set to [ModePermanentlyReset].
69func (m Modes) IsPermanentlyReset(mode Mode) bool {
70 return m[mode].IsPermanentlyReset()
71}