error.go 777 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. package richtext
  2. type Error interface {
  3. error
  4. Message() Block
  5. }
  6. func ErrorFrom(err error) Error {
  7. return StdError { err }
  8. }
  9. type StdError struct { Underlying error }
  10. func MakeStdError(err error) StdError {
  11. return StdError { err }
  12. }
  13. func (e StdError) Error() string {
  14. return e.Underlying.Error()
  15. }
  16. func (e StdError) Message() Block {
  17. var b Block
  18. b.WriteLine(e.Error(), TAG_ERR_NORMAL)
  19. return b
  20. }
  21. type Errors ([] Error)
  22. func ErrorsJoin(errs *Errors, err Error) {
  23. if err != nil {
  24. *errs = append(*errs, err)
  25. }
  26. }
  27. func (errs Errors) Message() Block {
  28. if len(errs) == 0 {
  29. panic("invalid operation")
  30. }
  31. var b Block
  32. for _, item := range errs {
  33. b.Append(item.Message())
  34. }
  35. return b
  36. }
  37. func (errs Errors) Error() string {
  38. return errs.Message().RenderConsole()
  39. }