modes.go 1.9 KB

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