Skip to content

knightso/enameg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

24 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

enameg

enameg is a enum names generator.

Install

$ go get github.com/knightso/enameg/cmd/enameg

How to use

Usage

$ 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

Annotation

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)
	}
}

Options

default-empty

default case returns "".

to:

// Name returns the HogeType Name.
func (src HogeType) Name() string {
	switch src {
	.
	.
	default:
		return ""
	}
}

With go generate

//go:generate enameg $GOFILE

// +enameg
type HogeType int

const (
	HogeTypeA HogeType = 0 // A
	HogeTypeB HogeType = 1 // B
	HogeTypeC HogeType = 2 // C
)

About

Enum constants Name method generator

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages