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// Get returns the setting of a terminal mode. If the mode is not set, it
8// returns [ModeNotRecognized].
9func (m Modes) Get(mode Mode) ModeSetting {
10 return m[mode]
11}
12
13// Delete deletes a terminal mode. This has the same effect as setting the mode
14// to [ModeNotRecognized].
15func (m Modes) Delete(mode Mode) {
16 delete(m, mode)
17}
18
19// Set sets a terminal mode to [ModeSet].
20func (m Modes) Set(modes ...Mode) {
21 for _, mode := range modes {
22 m[mode] = ModeSet
23 }
24}
25
26// PermanentlySet sets a terminal mode to [ModePermanentlySet].
27func (m Modes) PermanentlySet(modes ...Mode) {
28 for _, mode := range modes {
29 m[mode] = ModePermanentlySet
30 }
31}
32
33// Reset sets a terminal mode to [ModeReset].
34func (m Modes) Reset(modes ...Mode) {
35 for _, mode := range modes {
36 m[mode] = ModeReset
37 }
38}
39
40// PermanentlyReset sets a terminal mode to [ModePermanentlyReset].
41func (m Modes) PermanentlyReset(modes ...Mode) {
42 for _, mode := range modes {
43 m[mode] = ModePermanentlyReset
44 }
45}
46
47// IsSet returns true if the mode is set to [ModeSet] or [ModePermanentlySet].
48func (m Modes) IsSet(mode Mode) bool {
49 return m[mode].IsSet()
50}
51
52// IsPermanentlySet returns true if the mode is set to [ModePermanentlySet].
53func (m Modes) IsPermanentlySet(mode Mode) bool {
54 return m[mode].IsPermanentlySet()
55}
56
57// IsReset returns true if the mode is set to [ModeReset] or [ModePermanentlyReset].
58func (m Modes) IsReset(mode Mode) bool {
59 return m[mode].IsReset()
60}
61
62// IsPermanentlyReset returns true if the mode is set to [ModePermanentlyReset].
63func (m Modes) IsPermanentlyReset(mode Mode) bool {
64 return m[mode].IsPermanentlyReset()
65}