enum_codegen

module
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 21, 2025 License: MIT

README

Enum_codegen

Pretty enum code generator.

Overview

Enum_codegen is a library for quick enum creation

Generates var Tags = map[Enum]string, var Types = map[string]Enum, var Translations = map[Enum]string. Implements sql.Scanner, driver.Valuer, fmt.Stringer, json.Marshaler interfaces.

Forces Enum to have default Undefined value.

Generates snake_case string Enum value: EnumValue1 -> enum_value_1 You can override default string value, and set translation value

Requirements

  • go 1.23.0 or later

Quick Start

  1. Install enum_codegen:

    go install github.com/GeekchanskiY/enum_codegen/cmd/enum_codegen
    

    Before other steps make sure that go/bin is in your $PATH

  2. Create a Go file with an enum declaration:

     package main
    
     //go:generate enum_codegen
     type Enum int
    
     const (
     // Undefined Translate="Undefined value"
     Undefined Enum = iota
     // EnumValue1 Value="SuperbValue" Translate="Enum 1"
     EnumValue1
     // EnumValue2 Your documentation here if need Translate="Enum 2" Value="MegaValue"
     EnumValue2
     // EnumValue3 Translate="Enum 3"
     EnumValue3
     // Translate="Some value Enum 4"
     EnumValue4
     EnumValue5
     )
    
  3. Run go generate:

    you can specify the file to generate from explicitly

    go generate package/file.go
    

    or generate from every file in project. Result will not change

    go generate ./...
    

Generated code examples

Default usage

TODO's

  • add multi-language support
  • add output map naming customization (Tags, Values, Translations)
  • add unit tests
  • add different string value generators

Directories

Path Synopsis
cmd
enum_codegen command
examples
default_generation
Code generated via enum_codegen DO NOT EDIT.
Code generated via enum_codegen DO NOT EDIT.
pkg

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL