41 lines
770 B
Go
41 lines
770 B
Go
package flaterr
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
type MultErr struct {
|
|
Errors []error
|
|
}
|
|
|
|
// add error to MultErr
|
|
func (e *MultErr) Add(errs ...error) *MultErr {
|
|
for _, err := range errs {
|
|
if err != nil {
|
|
e.Errors = append(e.Errors, err)
|
|
}
|
|
}
|
|
return e
|
|
}
|
|
|
|
// add formatted error by use fmt.Errorf()
|
|
func (e *MultErr) Addf(format string, a ...any) *MultErr {
|
|
e.Errors = append(e.Errors, fmt.Errorf(format, a...))
|
|
return e
|
|
}
|
|
|
|
// add template error by use fmt.Errorf()
|
|
func (e *MultErr) Addt(msg Msg, content string, err error) *MultErr {
|
|
e.Errors = append(e.Errors, fmt.Errorf(msg.Fmt(), content, err))
|
|
return e
|
|
}
|
|
|
|
// a string error by use errors.Join()
|
|
func (e *MultErr) Flat() error {
|
|
if len(e.Errors) == 0 {
|
|
return nil
|
|
}
|
|
return errors.Join(e.Errors...)
|
|
}
|