Ai
1 Star 0 Fork 0

kade/mcube

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
enum.tmpl.go 1.65 KB
一键复制 编辑 原始数据 按行查看 历史
kadegolang 提交于 2023-12-13 17:31 +08:00 . copy
package enum
const tmp = `// Code generated by github.com/infraboard/mcube/v2
// DO NOT EDIT
package {{.PKG}}
import (
"bytes"
"fmt"
"strings"
)
{{- range .Enums.Items }}
{{ if $.ValueMap }}
var (
// {{.Name}}_name name map
{{.Name}}_name = map[{{.Name}}]string{
{{- range .Items }}
{{.Name}}: "{{.Show}}",
{{- end}}
}
// {{.Name}}_value value map
{{.Name}}_value = map[string]{{.Name}}{
{{- range .Items }}
"{{.Show}}": {{.Name}},
{{- end}}
}
)
{{end}}
// Parse{{.Name}}FromString Parse {{.Name}} from string
func Parse{{.Name}}FromString(str string) ({{.Name}}, error) {
key := strings.Trim(string(str), {{$.Backquote}}"{{$.Backquote}})
v, ok := {{.Name}}_value[strings.ToUpper(key)]
if !ok {
return 0, fmt.Errorf("unknown {{.Name}}: %s", str)
}
return {{.Name}}(v), nil
}
// Equal type compare
func (t {{.Name}}) Equal(target {{.Name}}) bool {
return t == target
}
// IsIn todo
func (t {{.Name}}) IsIn(targets ...{{.Name}}) bool {
for _, target := range targets {
if t.Equal(target) {
return true
}
}
return false
}
{{ if $.Stringer }}
// String stringer
func (t {{.Name}}) String() string {
v, ok := {{.Name}}_name[t]
if !ok {
return "unknown"
}
return v
}
{{end}}
{{ if $.Marshal }}
// MarshalJSON todo
func (t {{.Name}}) MarshalJSON() ([]byte, error) {
b := bytes.NewBufferString({{$.Backquote}}"{{$.Backquote}})
b.WriteString(strings.ToUpper(t.String()))
b.WriteString({{$.Backquote}}"{{$.Backquote}})
return b.Bytes(), nil
}
// UnmarshalJSON todo
func (t *{{.Name}}) UnmarshalJSON(b []byte) error {
ins, err := Parse{{.Name}}FromString(string(b))
if err != nil {
return err
}
*t = ins
return nil
}
{{end}}
{{- end}}`
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/go-kade/mcube.git
git@gitee.com:go-kade/mcube.git
go-kade
mcube
mcube
1225d9a674f1

搜索帮助