err.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. package goreport
  2. import (
  3. "errors"
  4. "fmt"
  5. "strings"
  6. )
  7. // Concatenate r.Err and errSuffix.
  8. func (r Report) Append(errSuffix string) Report {
  9. r.Err = r.Err + errSuffix
  10. return r
  11. }
  12. // Convert r.Err to error.
  13. func (r Report) Error() error {
  14. return errors.New(r.Err)
  15. }
  16. // Return the equality state of r.Err and err.
  17. func (r Report) Is(err string) bool {
  18. return r.Err == err
  19. }
  20. // Return true if r.Err is empty.
  21. func (r Report) IsNil() bool {
  22. return r.Err == ""
  23. }
  24. // Concatenate errPrefix and r.Err.
  25. func (r Report) Prepend(errPrefix string) Report {
  26. r.Err = errPrefix + r.Err
  27. return r
  28. }
  29. // Analogue of fmt.Print printing r.Err in Output.Fd.
  30. // Thread safety is provided by Output.Mutex.
  31. func (r Report) Print() (int, error) {
  32. return Print(r.Err)
  33. }
  34. // Analogue of fmt.Print printing r.Err in Output.Fd.
  35. // Thread safety is provided by Output.Mutex.
  36. func (r Report) Printf(format string) (int, error) {
  37. return Printf(format, r.Err)
  38. }
  39. // Analogue of fmt.Println printing r.Err in Output.Fd.
  40. // Thread safety is provided by Output.Mutex.
  41. func (r Report) Println() (int, error) {
  42. return Println(r.Err)
  43. }
  44. // Rewrap r.Err in errPrefix.
  45. func (r Report) Rewrap(errPrefix string) Report {
  46. return r.Unwrap().Wrap(errPrefix)
  47. }
  48. // Wrap r.Err in errPrefix.
  49. func (r Report) Wrap(errPrefix string) Report {
  50. r.Err = errPrefix + ": " + r.Err
  51. return r
  52. }
  53. // Wrap r.Err in a formatted specifier.
  54. func (r Report) Wrapf(format string) Report {
  55. r.Err = fmt.Sprintf(format, r.Err)
  56. return r
  57. }
  58. // Unwrap r.Err.
  59. func (r Report) Unwrap() Report {
  60. if i := strings.Index(r.Err, ": "); i != -1 {
  61. r.Err = r.Err[i+2:]
  62. }
  63. return r
  64. }