enameg is a enum names generator.
$ go get github.com/knightso/enameg/cmd/enameg
$ ename [-flag] [directory]
$ ename [-flag] files... # Must be a single package
-flag:
-output="":
file name; default srcdir/<filename>_ename.go
-nofmt:
no apply gofmt and goimports when true
-default-empty
default case to empty when true
Thie generator generates Name
method for the type which have an annotation comment // +enameg
.
from:
// +enameg
type HogeType int
const (
HogeTypeA HogeType = 0 // A
HogeTypeB HogeType = 1 // B
HogeTypeC HogeType = 2 // C
)
to:
// Name returns the HogeType Name.
func (src HogeType) Name() string {
switch src {
case HogeTypeA:
return "A"
case HogeTypeB:
return "B"
case HogeTypeC:
return "C"
default:
return fmt.Sprintf("%v", src)
}
}
default case returns ""
.
to:
// Name returns the HogeType Name.
func (src HogeType) Name() string {
switch src {
.
.
default:
return ""
}
}
//go:generate enameg $GOFILE
// +enameg
type HogeType int
const (
HogeTypeA HogeType = 0 // A
HogeTypeB HogeType = 1 // B
HogeTypeC HogeType = 2 // C
)