1
0
mirror of https://github.com/go-kratos/kratos.git synced 2025-01-24 03:46:37 +02:00
2021-02-17 17:14:47 +08:00

41 lines
638 B
Go

package main
import (
"bytes"
"text/template"
)
var errorsTemplate = `const (
{{ range .Errors }}
Errors_{{.Value}} = "{{.Name}}_{{.Value}}"
{{- end }}
)
{{ range .Errors }}
func Is{{.Value}}(err error) bool {
return errors.Reason(err) == Errors_{{.Value}}
}
{{- end }}
`
type errorInfo struct {
Name string
Value string
}
type errorWrapper struct {
Errors []*errorInfo
}
func (e *errorWrapper) execute() string {
buf := new(bytes.Buffer)
tmpl, err := template.New("errors").Parse(errorsTemplate)
if err != nil {
panic(err)
}
if err := tmpl.Execute(buf, e); err != nil {
panic(err)
}
return string(buf.Bytes())
}