modes.go

 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}