From 0abe832021011b7c8cb1bfc86af68918666c6409 Mon Sep 17 00:00:00 2001 From: samiam2013 Date: Wed, 2 Oct 2024 22:49:23 -0500 Subject: [PATCH] note in the readme and flag help description that trimprefix accepts lists --- README.md | 11 ++++++----- stringer.go | 16 ++++++++-------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 614a07e..084fcd8 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,9 @@ This was again forked here as (https://github.com/dmarkham/enumer) picking up wh ``` -$ ./enumer --help +$ enumer --help Enumer is a tool to generate Go code that adds useful methods to Go enums (constants with a specific type). -Usage of ./enumer: +Usage of enumer: Enumer [flags] -type T [directory] Enumer [flags] -type T files... # Must be a single package For more information, see: @@ -34,11 +34,11 @@ Flags: -transform string enum item name transformation method. Default: noop (default "noop") -trimprefix string - transform each item name by removing a prefix. Default: "" + transform each item name by removing a prefix or comma separated list of prefixes. Default: "" -type string comma-separated list of type names; must be set -values - if true, alternative string values method will be generated. Default: false + if true, alternative string values method will be generated. Default: false -yaml if true, yaml marshaling methods will be generated. Default: false ``` @@ -208,7 +208,8 @@ Possible transform values are listed above in the [transformers](#transformers) The default value for `transform` flag is `noop` which means no transformation will be performed. If a prefix is provided via the `trimprefix` flag, it will be trimmed from the start of each name (before -it is transformed). If a name doesn't have the prefix it will be passed unchanged. +it is transformed). You can trim multiple prefixes by passing a comma separated list. +If a name doesn't have the prefix it will be passed unchanged. If a prefix is provided via the `addprefix` flag, it will be added to the start of each name (after trimming and after transforming). diff --git a/stringer.go b/stringer.go index 49c87fd..33d3d09 100644 --- a/stringer.go +++ b/stringer.go @@ -53,7 +53,7 @@ var ( altValuesFunc = flag.Bool("values", false, "if true, alternative string values method will be generated. Default: false") output = flag.String("output", "", "output file name; default srcdir/_string.go") transformMethod = flag.String("transform", "noop", "enum item name transformation method. Default: noop") - trimPrefix = flag.String("trimprefix", "", "transform each item name by removing a prefix. Default: \"\"") + trimPrefix = flag.String("trimprefix", "", "transform each item name by removing a prefix or comma separated list of prefixes. Default: \"\"") addPrefix = flag.String("addprefix", "", "transform each item name by adding a prefix. Default: \"\"") linecomment = flag.Bool("linecomment", false, "use line comment text as printed text when present") ) @@ -774,9 +774,9 @@ func (g *Generator) buildOneRun(runs [][]Value, typeName string) { } // Arguments to format are: -// [1]: type name -// [2]: size of index element (8 for uint8 etc.) -// [3]: less than zero check (for signed types) +// [1]: type name +// [2]: size of index element (8 for uint8 etc.) +// [3]: less than zero check (for signed types) const stringOneRun = `func (i %[1]s) String() string { if %[3]si >= %[1]s(len(_%[1]sIndex)-1) { return fmt.Sprintf("%[1]s(%%d)", i) @@ -786,10 +786,10 @@ const stringOneRun = `func (i %[1]s) String() string { ` // Arguments to format are: -// [1]: type name -// [2]: lowest defined value for type, as a string -// [3]: size of index element (8 for uint8 etc.) -// [4]: less than zero check (for signed types) +// [1]: type name +// [2]: lowest defined value for type, as a string +// [3]: size of index element (8 for uint8 etc.) +// [4]: less than zero check (for signed types) const stringOneRunWithOffset = `func (i %[1]s) String() string { i -= %[2]s if %[4]si >= %[1]s(len(_%[1]sIndex)-1) {