util.go 770 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package util
  2. import tea "github.com/charmbracelet/bubbletea"
  3. func CmdHandler(msg tea.Msg) tea.Cmd {
  4. return func() tea.Msg {
  5. return msg
  6. }
  7. }
  8. func ReportError(err error) tea.Cmd {
  9. return CmdHandler(InfoMsg{
  10. Type: InfoTypeError,
  11. Msg: err.Error(),
  12. })
  13. }
  14. type InfoType int
  15. const (
  16. InfoTypeInfo InfoType = iota
  17. InfoTypeWarn
  18. InfoTypeError
  19. )
  20. func ReportInfo(info string) tea.Cmd {
  21. return CmdHandler(InfoMsg{
  22. Type: InfoTypeInfo,
  23. Msg: info,
  24. })
  25. }
  26. func ReportWarn(warn string) tea.Cmd {
  27. return CmdHandler(InfoMsg{
  28. Type: InfoTypeWarn,
  29. Msg: warn,
  30. })
  31. }
  32. type (
  33. InfoMsg struct {
  34. Type InfoType
  35. Msg string
  36. }
  37. ClearStatusMsg struct{}
  38. )
  39. func Clamp(v, low, high int) int {
  40. if high < low {
  41. low, high = high, low
  42. }
  43. return min(high, max(low, v))
  44. }