diff --git a/errors/err_code.go b/errors/err_code.go index 819fdec4..f976513e 100644 --- a/errors/err_code.go +++ b/errors/err_code.go @@ -12,6 +12,8 @@ import ( "github.com/pubgo/funk/proto/errorpb" "github.com/pubgo/funk/stack" "github.com/samber/lo" + "golang.org/x/text/cases" + "golang.org/x/text/language" "google.golang.org/protobuf/proto" "google.golang.org/protobuf/types/known/structpb" ) @@ -39,13 +41,15 @@ func NewCodeErrWithMap(code *errorpb.ErrCode, details ...map[string]any) error { return NewCodeErr(code, data) } +var titleCaser = cases.Title(language.English) + func NewCodeErrWithMsg(code *errorpb.ErrCode, msg string, details ...proto.Message) error { code = cloneAndCheck(code) if code == nil { return nil } - code.Message = strings.ToTitle(strings.TrimSpace(msg)) + code.Message = titleCaser.String(strings.TrimSpace(msg)) return NewCodeErr(code, details...) } diff --git a/errors/z_err_code_test.go b/errors/z_err_code_test.go index a251c28e..1503fafd 100644 --- a/errors/z_err_code_test.go +++ b/errors/z_err_code_test.go @@ -16,3 +16,15 @@ func TestErrCode(t *testing.T) { t.Log(errors.As(err1, testcodepb.TestErrCodeDbConn)) } + +func TestNewCodeErrWithMsg(t *testing.T) { + err1 := errors.NewCodeErrWithMsg(testcodepb.TestErrCodeDbConn, "hello world") + var err2 *errors.ErrCode + if !errors.As(err1, &err2) { + t.Fatal("errors.As should have returned true") + } + if err2.Error() != "Hello World" { + t.Fatal("message not match") + } + t.Log(err2.Error()) +}